找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5735|回复: 10

密码过滤求助,密码中的字母要按xyz的顺序出现在密码中。

0

主题

8

帖子

8

积分

贫民

积分
8
techcai 发表于 2021-8-29 22:52:13 | 显示全部楼层 |阅读模式
本帖最后由 techcai 于 2021-8-29 22:58 编辑

# 用于排列组合的练习
import itertools

l1 = ['x', 'y', 'z']
list2 = list(itertools.permutati**('0123456789xyz', 6))
for x in list2:
    # print(x)
    if set(l1).issubset(set(x)):
        x_str = ''.join(x)
        print(x_str)
# 输出几万个像这样不重复的  6z5x8y , 6z5x9y, 6z5xy0 , 6z5xy1.....x8y0z ,5x8y0z ,6x8y0z7.....
我只想要按xyz这样顺序的6位字符串比如x8y0z5 ,x8y0z6 ,5x8y0z , x8y0z7 ,6xyz80过滤掉6z5x8y ,6z5x9y这些按照x,y,z字母顺序的字符串不知道怎么做好,请帮助,谢谢!

回复

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-1 14:09:51 | 显示全部楼层
有没有方法呀
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-1 14:14:37 | 显示全部楼层
# 用于排列组合的练习
import itertools

l1 = ['x', 'y', 'z']
list2 = list(itertools.permutati**('0123456789xyz', 6))
for x in list2:
    # print(x)
    if set(l1).issubset(set(x)):
        x_str = ''.join(x)
        print(x_str)


# 输出几万个像这样不重复的  
6z5x8y
6z5x9y
6z5xy0
6z5xy1.....
x8y0z
5x8y0z
6x8y0z
.....

我只想要按xyz这样顺序的6位字符串比如
x8y0z5
x8y0z6
5x8y0z
x8y0z7
6xyz80
过滤掉
6z5x8y
6z5x9y
这些按照x,y,z字母顺序的字符串不知道怎么做好,请帮助,谢谢!
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-9-2 11:39:55 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-2 11:46 编辑
  1. from itertools import permutati**
  2. arr = {''.join(i) for i in permutati**(['x', 'y', 'z', '1', '2', '3'])}
  3. print(*arr)
复制代码

不建議從 0 至 9 加上 x y z 全部數組列印,也沒有人會這樣做,龐大的數據列印(一共:1,235,520組合),會使電腦超級卡!
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-5 18:39:11 | 显示全部楼层
傻眼貓咪 发表于 2021-9-2 11:39
不建議從 0 至 9 加上 x y z 全部數組列印,也沒有人會這樣做,龐大的數據列印(一共:1,235,520組合), ...

谢谢,你的回复,一点不卡,为的电脑十年前的,amd 4核
设备名称    ddd
处理器        AMD Phenom(tm) II X4 945 Processor   3.00 GHz
机带 RAM        9.75 GB
设备 ID        A0DCE6CF-3A7D-4AB7-BEA2-
产品 ID        00328-10000-00001-
系统类型        64 位操作系统, 基于 x64 的处理器
笔和触控        没有可用于此显示器的笔或触控输入
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-5 19:09:26 | 显示全部楼层
我的密码里就有xyz 字母,这个程序几秒完成。

回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-5 19:20:33 | 显示全部楼层
本帖最后由 techcai 于 2021-9-5 19:22 编辑

# 用于排列组合的练习
import itertools


# l1 = ['x', 'y', 'z']
# list2 = list(itertools.permutati**('0123456789xyz', 6))
# for x in list2:
#     # print(x)
#     if set(l1).issubset(set(x)):
#         x_str = ''.join(x)
#         print(x_str)


def print_hi(name):
    # 在下面的代码行中使用断点来调试脚本。
    print(f'Hi, {name}')  # Ctrl+F8 切换断点。


# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    print_hi('PyCharm')

arr = {''.join(i) for i in itertools.permutati**(['x', 'y', 'z', '1', '2', '3'])}
print(*arr)
这个程序部分输出如下:2x31zy 23yx1z y3x2z1 23xy1z 3xzy12 xz312y
其中2x31zy 23yx1z  y3x2z1  23xy1z   xz312y都不是我要的,因为他的顺序不是xyz的顺序,x排在y前 ,y排在z前, 就是无论怎么组合都要保证xyz的顺序。
只有23xy1z 才是我要的数据之一,比如x68yz8  80xy7z  xyz123  2x31zy   23xy1z 等等这些也是我要的
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-5 19:24:19 | 显示全部楼层

permutati**

本帖最后由 techcai 于 2021-9-5 19:26 编辑

permutati-o-n-s怎么变成permutati**了?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-5 19:33:09 | 显示全部楼层
我的密码忘了,其中有xyz三个字母,是按照xyz的顺序排列的,密码6位数字,是有0-9,就是我忘了数字排在xyz的那个位置了
我想回忆出来。我还知道一些其他信息帮我回忆,但是我得先有这些缩小范围的列表。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
techcai  楼主| 发表于 2021-9-6 18:10:19 | 显示全部楼层
我的密码忘了,其中有xyz三个字母,是按照xyz的顺序排列的,密码6位数字,是有0-9,就是我忘了数字排在xyz的那个位置了
我想回忆出来。我还知道一些其他信息帮我回忆,但是我得先有这些缩小范围的列表。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表