oodjfoo
发表于 2023-5-6 23:57:52
歌者文明清理员 发表于 2023-5-6 23:50
好的,以下是修改后的代码示例:
python
我运行了一下。报了这个错
“Traceback (most recent call last):
File "C:/Users/BOK/AppData/Local/Programs/Python/Python310/二级密码组合.py", line 14, in <module>
q_case = letters1.upper() if q_upper else letters1.lower()
AttributeError: 'list' object has no attribute 'upper'”
isdkz
发表于 2023-5-6 23:59:18
oodjfoo 发表于 2023-5-6 23:56
那啥。。密码只有9位。就是Q12p34T56这样。。最后以数字结尾。。。麻烦大佬了。。
明白了。现在我们遵循新的密码规则,将代码更改为以下内容:
import itertools
# 定义候选字符
letters1 = [['Q', 'P'], ['q', 'p']]
letters2 = [['t', 'y'], ['T', 'Y']]
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 获取所有数字不重复的排列
number_combinations = list(itertools.permutations(numbers, 5))
# 遍历所有可能字母组合
for letters_pair in zip(letters1, letters2):
l1, l3 = letters_pair
for l2 in letters_pair:
# 对每一个数字组合进行测试
for num_comb in number_combinations:
result = l1 + num_comb + num_comb + l3 + num_comb + num_comb + l2 + num_comb
print(result)
代码中的数字排列现在允许5个不重复的数字排列(而不是之前的6个)。更新后的输出示例是:Q12p34t5。
这个代码现在符合你的需求,你可以运行它并尝试所有产生的密码组合。
oodjfoo
发表于 2023-5-7 00:01:01
isdkz 发表于 2023-5-6 23:59
明白了。现在我们遵循新的密码规则,将代码更改为以下内容:
好的。。谢谢大佬
歌者文明清理员
发表于 2023-5-7 00:01:06
oodjfoo 发表于 2023-5-6 23:57
我运行了一下。报了这个错
“Traceback (most recent call last):
File "C:/Users/BOK/AppData/Local ...
非常抱歉,这是笔误导致的错误。由于 letters1 是一个列表,无法使用 .upper() 或 .lower() 方法。
我已经修改了代码,并将 letters1 同样设置为大写字母和小写字母的元组,以确保能够使用大小写转换方法。请尝试以下修改后的代码:
python
import itertools
# 定义字母和数字范围
letters1 = ('Q', 'q')
letters2 = ('T', 't', 'Y', 'y')
numbers = list(range(0, 10))
# 生成所有可能的排列组合
passwords = []
for q_upper in :
for ty_comb in itertools.product(letters2, repeat=2):
for p_upper in :
if (q_upper and ty_comb.isupper() and ty_comb.isupper()) or (not q_upper and ty_comb.islower() and ty_comb.islower()):
q_case = letters1.upper() if q_upper else letters1.lower()
ty_case = "".join(ty_comb)
p_case = letters1.lower() if p_upper else letters1.upper()
cases =
for case in itertools.product(*cases):
password = "".join(str(c) for c in case)
if len(set(password)) == len(password):
passwords.append(password)
# 打印所有密码
for password in passwords:
print(password)
再次感谢您指出错误。如果还有其他问题或疑问,欢迎随时提出。
歌者文明清理员
发表于 2023-5-7 00:02:18
oodjfoo 发表于 2023-5-7 00:01
好的。。谢谢大佬
{:10_266:}
isdkz
发表于 2023-5-7 00:03:14
歌者文明清理员 发表于 2023-5-7 00:02
gpt4贵,但是也很强{:10_256:}
oodjfoo
发表于 2023-5-7 00:03:53
歌者文明清理员 发表于 2023-5-7 00:01
非常抱歉,这是笔误导致的错误。由于 letters1 是一个列表,无法使用 .upper() 或 .lower() 方法。
我 ...
跑出来的是这样的组合
“Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep5 2022, 14:08:36) on win32
Type "help", "copyright", "credits" or "license()" for more information.
==== RESTART: C:/Users/BOK/AppData/Local/Programs/Python/Python310/二级密码组合.py ===
QTq0
QTq1
QTq2
QTq3
QTq4
QTq5
”
isdkz
发表于 2023-5-7 00:04:06
歌者文明清理员 发表于 2023-5-7 00:02
我好像看到陶远航骗走你10鱼币
歌者文明清理员
发表于 2023-5-7 00:04:28
oodjfoo 发表于 2023-5-7 00:03
跑出来的是这样的组合
“Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep5 2022, 14:08:36)
算了,我的gpt3肯定不行
歌者文明清理员
发表于 2023-5-7 00:05:08
isdkz 发表于 2023-5-7 00:04
我好像看到陶远航骗走你10鱼币
我还是专心地去洛谷刷题吧
注销我吧
oodjfoo
发表于 2023-5-7 00:06:12
isdkz 发表于 2023-5-6 23:59
明白了。现在我们遵循新的密码规则,将代码更改为以下内容:
大佬。跑出来的是后面两个是相同大小写。。。是第一个字母Q和第三个字母t或者y是相同的大小写。中间的字母P和第一个第三个相反。
isdkz
发表于 2023-5-7 00:08:04
oodjfoo 发表于 2023-5-7 00:06
大佬。跑出来的是后面两个是相同大小写。。。是第一个字母Q和第三个字母t或者y是相同的大小写。中间的字 ...
非常抱歉之前理解有误。按照你的要求,代码应该更改如下:
import itertools
# 定义候选字符
letters1 = [['Q', 'q'], ['t', 'T', 'y', 'Y']]
letters2 = [['P', 'T', 'Y'], ['p', 't', 'y']]
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 获取所有数字不重复的排列
number_combinations = list(itertools.permutations(numbers, 5))
# 遍历所有可能字母组合
for upper_Q in :
l1 = letters1 if upper_Q else letters1
l3_options = letters1[:2] if upper_Q else letters1
for l3 in l3_options:
l2 = letters2 if upper_Q else letters2
# 对每一个数字组合进行测试
for num_comb in number_combinations:
result = l1 + num_comb + num_comb + l2 + num_comb + num_comb + l3 + num_comb
print(result)
现在,代码首先根据 Q 的大小写遍历两种情况。然后根据 Q 大小写的情况,从letters1的第二项中选择t或y。接下来,根据 Q 大小写的情况,从letters2的选项中选择 P。最后,遍历所有数字组合,生成密码并输出。
这个代码现在应该符合你的需求,并生成正确的密码组合。
oodjfoo
发表于 2023-5-7 00:08:54
isdkz 发表于 2023-5-7 00:08
非常抱歉之前理解有误。按照你的要求,代码应该更改如下:
报了个这个错。“Traceback (most recent call last):
File "C:/Users/BOK/AppData/Local/Programs/Python/Python310/二级密码组合.py", line 20, in <module>
result = l1 + num_comb + num_comb + l2 + num_comb + num_comb + l3 + num_comb
TypeError: can only concatenate str (not "list") to str”
oodjfoo
发表于 2023-5-7 00:09:27
isdkz 发表于 2023-5-7 00:08
非常抱歉之前理解有误。按照你的要求,代码应该更改如下:
抱歉老是让你改。。我是小白。。只会一个print:“hello word”
oodjfoo
发表于 2023-5-7 00:10:02
你们两个是在比赛吗?
isdkz
发表于 2023-5-7 00:11:46
oodjfoo 发表于 2023-5-7 00:08
报了个这个错。“Traceback (most recent call last):
File "C:/Users/BOK/AppData/Local/Programs/Py ...
抱歉,我的错误。在此处, l2应该是一个字符,而不是一个字符列表。我们需要从列表中选择一个字符。下面是修复后的代码:
import itertools
# 定义候选字符
letters1 = [['Q', 'q'], ['t', 'T', 'y', 'Y']]
letters2 = [['P', 'T', 'Y'], ['p', 't', 'y']]
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 获取所有数字不重复的排列
number_combinations = list(itertools.permutations(numbers, 5))
# 遍历所有可能字母组合
for upper_Q in :
l1 = letters1 if upper_Q else letters1
l3_options = letters1[:2] if upper_Q else letters1
for l3 in l3_options:
l2_options = letters2 if upper_Q else letters2
for l2 in l2_options:
# 对每一个数字组合进行测试
for num_comb in number_combinations:
result = l1 + num_comb + num_comb + l2 + num_comb + num_comb + l3 + num_comb
print(result)
现在代码正确地从l2_options中选择一个字符作为l2 ,并与其余部分连接以生成密码。这个代码应该能正常运行并生成正确的密码组合。
isdkz
发表于 2023-5-7 00:13:40
oodjfoo 发表于 2023-5-7 00:09
抱歉老是让你改。。我是小白。。只会一个print:“hello word”
没事,问题不大
oodjfoo
发表于 2023-5-7 00:18:20
isdkz 发表于 2023-5-7 00:11
抱歉,我的错误。在此处, l2应该是一个字符,而不是一个字符列表。我们需要从列表中选择一个字符。下 ...
大哥,对不起,我可能没说清楚,密码是9位数。第一位是字母Q不确定大小写,二三位是数字1到0,不确定是哪两个,第四位是字母P不确定大小写,但是和第一位字母Q相反,第五六位是数字,第七位是字母T或者Y,不确定大小写,但是和第一位的字母Q相同。第八九位是数字。。所有数字没有重复。大佬你刚才给的代码跑出来的是Q开头,然后T和t在第四和七位的组合。。。
isdkz
发表于 2023-5-7 00:34:17
oodjfoo 发表于 2023-5-7 00:18
大哥,对不起,我可能没说清楚,密码是9位数。第一位是字母Q不确定大小写,二三位是数字1到0,不确定是哪 ...
抱歉之前理解有误,现已根据您的要求修改代码:
import itertools
# 定义候选字符
letters1 = ['Q', 'q']
letters2 = [['P'], ['p']]
letters3 = [['t', 'T', 'y', 'Y'], ['t', 'T', 'y', 'Y']]
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 获取所有数字不重复的排列
number_combinations = list(itertools.permutations(numbers, 6))
# 遍历所有可能字母组合
for upper_Q in :
l1 = letters1 if upper_Q else letters1
l2 = letters2 if not upper_Q else letters2
l3 = letters3 if upper_Q else letters3
for l2_char in l2:
for l3_char in l3:
# 对每一个数字组合进行测试
for num_comb in number_combinations:
result = l1 + num_comb + num_comb + l2_char + num_comb + num_comb + l3_char + num_comb + num_comb
print(result)
现在代码中的字母组合应该是正确的。 l1是 Q 或 q, l2是大小写与l1相反的 P, l3是大小写与l1相同的 T 或 Y。接着,代码将遍历数字组合并输出所有可能的密码。
请尝试运行修正后的代码,它应该能生成符合你需求的密码组合。
oodjfoo
发表于 2023-5-7 08:16:27
isdkz 发表于 2023-5-7 00:34
抱歉之前理解有误,现已根据您的要求修改代码:
跑出来的是第一个大写,第二第三个是小写。后面我没等。。。需要改嘛?如果后面会生成第一和第三个字母大小写相同的我就让他跑着了。