这是一个非常简单的骰子掷骰程序,该程序会不断掷骰两个骰子,直到骰子翻倍。所以我的while语句的结构为:
while DieOne != 6 and DieTwo != 6:
由于某种原因,程序DieOne
等于6时结束。完全不考虑DieTwo
。
但是,如果我在while语句中将and
更改为or
,该程序将正常运行。这对我来说没有意义。
import random
print('How many times before double 6s?')
num=0
DieOne = 0
DieTwo = 0
while DieOne != 6 or DieTwo != 6:
num = num + 1
DieOne = random.randint(1,6)
DieTwo = random.randint(1,6)
print(DieOne)
print(DieTwo)
print()
if (DieOne == 6) and (DieTwo == 6):
num = str(num)
print('You got double 6s in ' + num + ' tries!')
print()
break
答案 0 :(得分:0)
TLDR在底部。
首先,如果满足以下条件,则运行while循环,所以
DieOne != 6 or DieTwo != 6:
简化后必须返回true,以便运行while函数
如果两个条件均成立,和运算符将返回true,因此while循环仅在 True和True 时运行。 / p>
所以
while DieOne != 6 and DieTwo != 6:
例如,如果任何一个骰子都掷出6,就不会运行:
如果DiceOne掷4,而DiceTwo掷6,则while循环将不会运行,因为DieOne!= 6为true,而DieTwo!= 6为false。我在下面的代码中加入了这种思路。
while DieOne != 6 and DieTwo != 6:
while True and False:
while False: #So it won't run because it is false
或运算符的工作方式不同,当一个条件为真时, or 运算符返回true,因此while循环将在以下情况下运行它是 True或True , True或False 或_False或True。 所以
while DieOne != 6 or DieTwo != 6:
如果只有两个骰子掷出六个,将运行。例如:
如果DiceOne掷4,而DiceTwo掷6,则运行while循环,因为DieOne!= 6为true,而DieTwo!= 6为false。我在下面的代码中加入了这种思路。
while DieOne != 6 or DieTwo != 6:
while True or False:
while True: #So it will run because it is true
TLDR /审查:
while True: #Will run
while False: #Won't run
并且:
while True and True: #Will run
while True and False: #Won't run
while False and True: #Won't run
while False and False: #Won't run
或者:
while True or True: #Will run
while True or False: #Will run
while False or True: #Will run
while False or False: #Won't run
答案 1 :(得分:0)
您需要的是Not
而不是!=
。
尝试一下:
while not (DieOne == 6 or DieTwo == 6):