[英]Python program stuck in infinite loop
這段代碼使我頭疼不已。 它應該是一個生成器,它使用字符串作為輸入,並用所有可能的字母組合替換所有的“ {}”,本質上以與itertools.permutations()類似的方式工作,但增加了常量值。
我檢查了每個單獨的元素,看來我的增量函數變成了無限循環。 但是,如果我減少了產生的字符串數量,這似乎可行。 有人可以告訴我為什么程序在嘗試返回所有可能的值時會失敗嗎? 假設您必須在不使用itertools的情況下執行相同的操作,那么您將如何完成任務?
def string_char_combinations(string, chars=False):
if not chars:
chars = [chr(i) for i in range(ord('a'), ord('z')+1)]
varcount = string.count('{}')
a = [0 for i in range(varcount)]
def increment(lst, n):
if n == 0:
return lst ##ERROR: Infinite loop?
print(n)
lst[n] += 1
print(lst)
if lst[n] > len(chars)-1:
lst[n] = 0
lst = increment(lst, n-1)
return lst
while a[0] < len(chars)-1:
a = increment(a, len(a)-1)
yield string.format(*[chars[i] for i in a])
if __name__ == "__main__":
print(list(string_char_combinations("a{}{}a")))
您不遞增n
def遞增(lst,n):如果n == 0:返回lst ## ERROR:無限循環?
所以n
的值總是0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.