python代码编程教学无限循环_Python程序陷入无限循环

这段代码让我很头疼。它应该是一个以字符串作为输入的生成器,并用所有可能的字母组合替换所有的{},基本上以类似于itertools.排列()但是添加了常量值。在

我检查了每个元素,似乎我的增量函数变成了一个无限循环。不过,如果我减少正在生成的字符串的数量,这似乎是可行的。有人能解释一下为什么程序在尝试返回所有可能的值时失败?假设您必须在不使用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")))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值