python';和';操作员和';其他';块
我写了一个代码,生成一个从0到100的随机数。 在if语句中使用它之后,我在else块后面打印数字python';和';操作员和';其他';块,python,operators,Python,Operators,我写了一个代码,生成一个从0到100的随机数。 在if语句中使用它之后,我在else块后面打印数字 import random while True: n = random.randint(0,100) if (n < 100 and n > 0): pass else: print(n) 随机导入 尽管如此: n=随机随机随机数(0100) 如果(n0): 通过 其他: 打印(n) 正如我所知,它不应该打印出任何数字,因
import random
while True:
n = random.randint(0,100)
if (n < 100 and n > 0):
pass
else:
print(n)
随机导入
尽管如此:
n=随机随机随机数(0100)
如果(n<100且n>0):
通过
其他:
打印(n)
正如我所知,它不应该打印出任何数字,因为数字不能同时“不”小于100和“不”大于0。我的经验是,它不会在else
块中同时检查这两个条件
使用“或”而不是“和”,没有打印的数字
我的目标是只让0到100之间的数字进入if块,而不应该在else块中打印任何数字(使用print(n))
编辑:
参考@C_Z_u注释:在python中,在语句中使用和,如果一个条件变为false,它将进入else块。random.randint(0100)
将生成0到100之间的数字(包括0和100),因此您正在使用的测试用例有时会失败
import random
while True:
n = random.randint(0,100)
if (n < 100 and n > 0):
pass
else:
print(n)
如果使用包含边界,会发生什么情况:
if (n <= 100 and n >= 0):
如果(n=0):
相反?这是否像您预期的那样工作?这是因为使用和
两个密码之一是错误的
- 数字100:
n<100
Falsen>0
True
- 数字0:
n<100
Truen>0
False
因此,您需要添加=
运算符以使这两个条件均为真:
import random
while True:
n = random.randint(0,100)
if n <= 100 and n >= 0:
pass
else:
print(n)
随机导入
尽管如此:
n=随机随机随机数(0100)
如果n=0:
通过
其他:
打印(n)
指的是:
对于and语句,python将计算这两个条件。如果其中一个为false,则整个and语句的计算结果为false,然后输入else块
import random
while True:
n = random.randint(0,100)
if (n < 100 and n > 0):
pass
else:
print(n)
使用或而不是和
:
如果在If语句中使用或
,则仅当两个条件都为false时,才会进入else
块。
但是,如果至少有一个条件为true,则它将进入if
块。
在未使用的条件下使用第二个if。如果n
随机导入
最小值=0
最大值=100
尽管如此:
n=随机随机随机数(最小值、最大值)
如果(n>min或n
在这种情况下,因为我使用了“and”,我必须用elif
检查条件的相反部分
使用elif
块。
随机导入
最小值=0
最大值=100
尽管如此:
n=随机随机随机数(最小值、最大值)
如果nmin:
通过
elif非n<最大值且非n>最小值:
打印(n)
elif not nmin
与相反,如果nmin
两个条件的计算结果均为true,则只会进入if
块-这就是和操作符的作用。对于和
语句,python将计算这两个条件。如果其中一个为false,则整个和语句的计算结果为false
,然后输入else
块。在这种情况下,我必须使用elif
块,这样它将检查这两个条件。我认为只有当两个条件都为false时,它才会进入else块,因为我使用了“and”。如果您只想在两个条件都为false
时进入else块,那么您需要使用或
操作符,而不是像您提到的和
操作符。如果其中一个或两个条件都为真,或
运算符将计算为真,如果两个条件都为假(听起来像是您想要的),则将计算为假。如果我使用或
操作数,它将允许在if块中输入数字100。我的情况是只让0到100之间的数字进入if块。然后你需要使用=
排除这些值。我认为你把自己与双重否定条件思维混淆了…