对于范围内的x,仅工作5次

2024-05-20 21:00:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做学校作业,遇到了一个问题。当我输入希望抽奖行的次数时,程序最多只执行五次。你知道为什么会这样吗

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()


Tags: inimportifsleeprandom学校printseen
2条回答

您从不重置seen,因此在1到40之间的7个数字的5轮之后,您就没有更多的数字来填充另一行7。在第六轮,在5个数字之后,你涵盖了所有40个选项,剩下的2个选项没有更多的数字。因此,您陷入了while len(rivi) < 7:循环(因为rivi永远不会到达7个元素)

您可以通过使用^{}而不是在循环中调用random.randint并检查是否已经选择了号码来简化此过程:

numbers = list(range(1, 41))
for x in range (rvnro1):
    rivi = sorted(random.sample(numbers, 7))
    if rivi == voittorivi:
        print('Voitit pääpalkinnon! Onneksi olkoon!')
    print(rivi)
    print(' ')
    sleep(0.1)
  sleep(0.1)
  rivi.clear() # reinitiating the list
  seen.clear() # reinitiating the set

修复

它还将帮助您结束该算法,因为它陷入了无尽的循环中,因为while len(rivi)<7从未实现过

次要修复

.clear() 根据评论的建议,在新编辑中添加了

相关问题 更多 >