繁体   English   中英

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

[英]How do you make a while loop in python that stops two variables with the same answer?

我正在尝试制作一个“谁想要成为百万富翁”风格的程序随机问题,随机地点随机答案(在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
()
()

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

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

非常感谢!

在你的示例中,while循环中的break语句似乎是不必要的。

即使数字相等,这个brake也会结束循环。

据我所知,主要的问题是生成rnd1 ... rnd4

你可以尝试random.shuffle用于这些目的

a = range(1, 5)
random.shuffle(a)
rnd1, rnd2, rnd3, rnd4 = a

random.shuffle将序列x移动到位。 因此,可以生成具有所需值的序列并对其进行混洗

删除那些break语句,它应该工作。

假设你的两个变量是相等的。 然后进入循环,然后为rnd4创建一个新值。 下一步是检查2个变量现在是否不同,如果不是,则重复。 但是在你再次使用while子句之前,你就会脱离循环。 因此,您最多只运行一次循环体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM