你如何在python中使用相同的答案来停止两个变量?

时间:2013-10-30 20:23:10

标签: python loops while-loop

我试图让一个想成为百万富翁的人#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
()
()

所以这显然是错误的,有时相同的答案打印两次或错误的答案覆盖正确的答案。

对这么长的问题抱歉,可能是一个非常简单的答案(如何修复循环),但我知道我不应该要求代码!!

非常感谢!

2 个答案:

答案 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子句之前,你就会脱离循环。所以你最多只运行一次循环体。