我正在做学校作业,遇到了一个问题。当我输入希望抽奖行的次数时,程序最多只执行五次。你知道为什么会这样吗
import random
from time import sleep
rivi = []
seen = set(rivi)
voittorivi = [7, 9, 10, 25, 31, 39, 40]
while True:
try:
rvnro = input('kuinka monta riviä pelataan?: ')
rvnro1 = int(rvnro)
print('pelataan', rvnro, 'riviä')
break
except ValueError:
print('käytäthän vain numeroita.')
print(' ')
for x in range (rvnro1):
while len(rivi) < 7:
numero = random.randint(1,40)
if numero not in seen:
seen.add(numero)
rivi.append(numero)
else:
u=0
rivi.sort()
if rivi == voittorivi:
print('Voitit pääpalkinnon! Onneksi olkoon!')
print(rivi)
print(' ')
sleep(0.1)
rivi.clear()
您从不重置
seen
,因此在1到40之间的7个数字的5轮之后,您就没有更多的数字来填充另一行7。在第六轮,在5个数字之后,你涵盖了所有40个选项,剩下的2个选项没有更多的数字。因此,您陷入了while len(rivi) < 7:
循环(因为rivi
永远不会到达7个元素)您可以通过使用^{} 而不是在循环中调用
random.randint
并检查是否已经选择了号码来简化此过程:修复
它还将帮助您结束该算法,因为它陷入了无尽的循环中,因为
while len(rivi)<7
从未实现过次要修复
.clear()
根据评论的建议,在新编辑中添加了相关问题 更多 >
编程相关推荐