Python if是布尔语句

时间:2016-01-08 12:57:01

标签: python if-statement pycharm

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

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

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

所以问题应该在if语句中。它没有进入print(n)

我正在使用PyCharm Community Edition和Python 3.4

1 个答案:

答案 0 :(得分:5)

  1. 在这种情况下,您应该使用==代替is,因为:

      

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

  2. 好吧,range(40-101)给出了range(-61),并将其视为range(0, -61)。我们来看看:

    >>> range(40-101)
    range(0, -61)
    >>> list(range(40-101))
    []
    

    我认为你的意思是range(40, 101)对吗?

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

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

    演示:

    Enter the number: 10
    40
    50
    60
    70
    80
    90
    100
    

    只是想知道改进代码,在这种情况下你不需要%,因为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)