我试图让一个想成为百万富翁的人#39;随机问题的样式程序,随机位置的随机答案(在Python中)。我正在努力形成一个重复循环的循环,以便两个变量永远不会相同。 我的循环(显然不起作用)是:
while rnd4 == rnd2:
rnd4 = random.randint(1,3)
break
在我目前的计划中:
if rnd2 == 1:
position1 = answer #the random question has already been printed and the
#answer set
elif rnd2 == 2:
position2 = answer
elif rnd2 == 3:
position3 = answer
rnd3 = random.randint(1,4)
rnd4 = random.randint(1,3)
while rnd3 == rnd1:
rnd3 = random.randint(1,4) #these loops are meant to mean that the same
break #answer is never repeated twice + the same
while rnd4 == rnd2: #position is never overwritten
rnd4 = random.randint(1,3)
break
if rnd3 == 1:
if rnd4 == 1:
position1 = (no1[1])
elif rnd4 == 2:
position2 = (no1[1])
elif rnd4 == 3:
position3 = (no1[1])
...(跳过代码)
print (position1)
print (position2)
print (position3)
由于程序的随机性,它很难测试,但我期待的格式如下:
q1
answer
() #only two of the positions have had code written for them yet
random answer
或以上的组合。 (基本上一个正确的答案和一个错误的答案在不同的位置) 我偶尔得到:
q1
answer
answer
()
或
q1
random answer
()
()
所以这显然是错误的,有时相同的答案打印两次或错误的答案覆盖正确的答案。
对这么长的问题抱歉,可能是一个非常简单的答案(如何修复循环),但我知道我不应该要求代码!!
非常感谢!
答案 0 :(得分:1)
在您的示例中{while}循环中的break
语句似乎是不必要的。
即使数字相等,此brake
也会结束。
据我所知,主要问题是生成rnd1
... rnd4
您可以尝试random.shuffle
出于这些目的吗
a = range(1, 5)
random.shuffle(a)
rnd1, rnd2, rnd3, rnd4 = a
random.shuffle
将序列x移动到位。所以可以生成具有所需值的序列并将其随机化
答案 1 :(得分:1)
删除那些break
语句,它应该有用。
假设你的两个变量相等。然后进入循环,然后为rnd4创建一个新值。下一步是检查2个变量现在是否不同,如果不是,则重复。但是在你再次使用while子句之前,你就会脱离循环。所以你最多只运行一次循环体。