Python if是布尔语句

Juw*_*wan -1 python if-statement pycharm

我在一个简单的表达式中遇到了问题,如下所示.

number=int(input("enter the number"))
for n in range(40-101):
    if n % number is 0:
        print(n)
Run Code Online (Sandbox Code Playgroud)

当我输入10作为输入时,它不输出任何内容作为输出.通过我的小学数学,我可以轻松地假设这应该打印所有可以除以10的数字.

所以问题应该在if声明中.它没有进入print(n).

我正在使用PyCharm Community Edition和Python 3.4

Kev*_*uan 5

  1. 您应该使用==而不是is在这种情况下,因为:

    is检查两个对象id是否相同,并==检查两个对象的值是否相同.

  2. 嗯,range(40-101)给予range(-61)和那被视为range(0, -61).让我们来看看:

    >>> range(40-101)
    range(0, -61)
    >>> list(range(40-101))
    []
    
    Run Code Online (Sandbox Code Playgroud)

    我觉得你的意思是range(40, 101)对的?

所以你的代码应该是这样的:

number = int(input("Enter the number: "))
for n in range(40, 101):
    if n % number == 0:
        print(n)
Run Code Online (Sandbox Code Playgroud)

演示:

Enter the number: 10
40
50
60
70
80
90
100
Run Code Online (Sandbox Code Playgroud)

刚想到要改进你的代码,%在这种情况下你不需要因为range()有一个step参数.从文件:

class range(stop) class range(start, stop[, step])

范围构造函数的参数必须是整数(内置int或实现__index__特殊方法的任何对象).

如果step省略该参数,则默认为1.如果省略start参数,则默认为0.如果step为零,ValueError则引发.

对于正步骤,范围r的内容由公式确定,r[i] = start + step*i其中i >= 0r[i] < stop.

因此,正如文档所述,您也可以设置step而不是使用%来检查可以通过number手动使用分割的所有数字if.例如:

number = int(input("Enter the number: "))
for n in range(40, 101, number):
    print(n)
Run Code Online (Sandbox Code Playgroud)