簡體   English   中英

Python程序陷入無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM