python';和';操作员和';其他';块

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) 正如我所知,它不应该打印出任何数字,因

我写了一个代码,生成一个从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)
如果(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
    False
    n>0
    True
  • 数字0:
    n<100
    True
    n>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块。然后你需要使用
=
排除这些值。我认为你把自己与双重否定条件思维混淆了…