![](/img/trans.png)
[英]How do you reach a certain value for two variables at the same time while iterating?
[英]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.