6,227
社区成员




你目前的代码在运行时会进入一个无限循环,这是因为 while 循环的终止条件在多数情况下不会被满足。具体问题在于你的 for 循环中,每次都会生成一个新的随机数列表,但这个列表可能不会在每次迭代中完全等于 true_choices。因此,while 循环不会退出。
我们可以优化这个逻辑,确保随机选择过程不会导致无限循环。可以尝试调整代码结构,减少不必要的重复和复杂度。
以下是修改后的代码示例:
from random import choice
from collections import Counter
true_choices = [6, 8, 16, 18]
final_choices = []
choice_times = 0
lists = [6, 8, 18, 16]
while True:
final_choices = []
for _ in range(4): # 确保生成的数量与 true_choices 相同
final_choices.append(choice(lists))
choice_times += 1
if dict(Counter(final_choices)) == dict(Counter(true_choices)):
print("Congratulations, you have won the lottery.")
print(f"A total of {choice_times} times.")
break
在这个修改版本中,我们通过 while True 进入一个无限循环,但我们会在条件满足时通过 break 语句跳出循环。这种方法可以确保代码不会进入无限循环,并且逻辑更加清晰易懂。
路过了解一下
这里面没有限制最大的检测次数,可能会导致循环次数过大,无法在短时间内输出结果。可以加上一个限制条件,在多少次内循环结束,不再进行。