这段代码应该生成一个代表问题的随机数。数字生成器生成从 1 到 10 的数字。但如果该数字不在数字列表 "numlist"
中,它应该生成另一个数字。这应该是为了让程序不会问同一个问题两次。使用 numlist.remove()
不适用于此目的。什么会起作用?或者,有什么更好的方法。
此外,我想知道如何制作它以减少代码中的重复(循环?)。
def roll():
var = random.randint(1,10)
if var not in numlist:
roll()
elif var == 1:
numlist.remove(1)
q1()
elif var == 2:
numlist.remove(2)
q2()
elif var == 3:
numlist.remove(3)
q3()
elif var == 4:
numlist.remove(4)
q4()
elif var == 5:
numlist.remove(5)
q5()
elif var ==6:
numlist.remove(6)
q6()
elif var == 7:
numlist.remove(7)
q7()
elif var == 8:
numlist.remove(8)
q8()
elif var == 9:
numlist.remove(9)
q9()
elif var == 10:
numlist.remove(10)
q10()
最佳答案
您似乎只将数字用于调度。同样的结果(以随机顺序调用 10 个函数中的每一个)可以在不先通过数字的情况下实现,如下所示:
import random
def roll():
qs = [q1, q2, q3, q4, q5, q6, q7, q8, q9, q10]
random.shuffle(qs)
for q in qs:
yield q
# ...
for rolled in roll():
rolled()
通过不直接调用 q#()
函数而是生成它们,它们可以在调用者方便的时候调用。
关于python - 如何修复此迭代 python 代码并减少重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431118/