gpt4 book ai didi

python - 如何创建任意数量的嵌套循环?

转载 作者:行者123 更新时间:2023-12-01 23:43:54 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,在匹配特定字符串之前测试每个可能的字符串,并给出尝试次数。举个例子:

a = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm',
13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y',
25: 'z'}

word = 'bike'

found = False
counter = 0
for i in range(len(a)):
for j in range(len(a)):
for k in range(len(a)):
for m in range(len(a)):
string = f'{a[i]}{a[j]}{a[k]}{a[m]}'
counter += 1
print(string, counter)
if string == word:
found = True
break
if found:
break
if found:
break
if found:
break

输出看起来像这样:

aaaa 1
aaab 2
aaac 3
aaad 4
aaae 5
aaaf 6
...
bijz 23244
bika 23245
bikb 23246
bikc 23247
bikd 23248
bike 23249

如果您知道单词总是四个字符,则可以使用此代码,但如果您不知道长度怎么办?当长度未知时,你将如何创建它?我在想是否有一些递归函数可以实现这一点,但没有任何效果。我试图实现的程序将具有如下输出:

a 1
b 2
c 3
...
aa 27
ab 28
ac 29
...
ba #
bb #
bc #
...
aaa #
aab #
aac #

最佳答案

这应该有效;您在 productrepeat 参数中输入长度,而 enumerate 枚举单词(默认从 0 开始;您可以根据需要添加 start=1根据您的需要):

from itertools import product


search = "bike"

for i, item in enumerate(product(a.values(), repeat=len(search))):
word = "".join(item)
print(word, i)
if word == search:
break

它输出:

...
bikb 23245
bikc 23246
bikd 23247
bike 23248

如果您只对这个数字感兴趣,您可以将这个词翻译成以 26 为基数的数字并使用 int 转换它:

alpha_to_digits = str.maketrans(
"abcdefghijklmnopqrstuvwxyz", "0123456789abcdefghijklmnop")

word = 'bike'

d = word.translate(alpha_to_digits)
print(d, int(d, base=26))
# 18a4 23248

将单词 bike 转换为其以 26 进制表示的数字 (18a4),然后可以将其转换为整数 (23248) .

打包成一个函数:

def number(word):
return int(word.translate(alpha_to_digits), base=26)

关于python - 如何创建任意数量的嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64573917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com