ghu*_*man 8 python boolean while-loop multiple-conditions
这是一个非常简单的掷骰子程序,它不断掷两个骰子,直到得到双 6。所以我的 while 语句结构如下:
while DieOne != 6 and DieTwo != 6:
Run Code Online (Sandbox Code Playgroud)
出于某种原因,该计划在DieOne获得 6 分后立即结束。DieTwo根本不考虑。
但是如果我将 while 语句中的theand改为 an 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
Run Code Online (Sandbox Code Playgroud)
小智 10
TLDR 在底部。
首先,如果以下条件为真,while 循环就会运行,所以
DieOne != 6 or DieTwo != 6:
Run Code Online (Sandbox Code Playgroud)
简化时必须返回 true,以便运行 while 函数
在与运营商时返回true两个条件都满足,所以当它是while循环将只运行真时真。
因此,例如,如果任一骰子掷出 6,则以下内容将不会运行:
while DieOne != 6 and DieTwo != 6:
Run Code Online (Sandbox Code Playgroud)
如果 DieOne 掷出 4 而 DieTwo 掷出 6,while 循环将不会运行,因为 DieOne != 6 为真,而 DieTwo != 6 为假。我把这个思路放到了下面的代码中。
while DieOne != 6 and DieTwo != 6:
while True and False:
while False: #So it won't run because it is false
Run Code Online (Sandbox Code Playgroud)
该或操作员的工作方式不同,该或操作返回时真一个条件是真实的,所以当它是while循环将运行真或真,真或假,或_False或真。所以
while DieOne != 6 or DieTwo != 6:
Run Code Online (Sandbox Code Playgroud)
如果只有两个骰子掷出 6,则将运行。例如:
如果 DieOne 掷出 4 而 DieTwo 掷出 6,while 循环将运行,因为 DieOne != 6 为真,而 DieTwo != 6 为假。我把这个思路放到了下面的代码中。
while DieOne != 6 or DieTwo != 6:
while True or False:
while True: #So it will run because it is true
Run Code Online (Sandbox Code Playgroud)
TLDR/评论:
while True: #Will run
while False: #Won't run
Run Code Online (Sandbox Code Playgroud)
和:
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
Run Code Online (Sandbox Code Playgroud)
或者:
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
Run Code Online (Sandbox Code Playgroud)