Python if是布尔语句

Python if是布尔语句,python,if-statement,pycharm,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语句中。它不会进入打印(n) 我正在使用PyCharm社区版和Python 3.4 在这种情况下,您应该使用==

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

number=int(input("enter the number"))
for n in range(40-101):
    if n % number is 0:
        print(n)
当我输入10作为输入时,它不会输出任何内容。用我的小学数学,我可以很容易地假设这应该打印出所有可以除以10的数字

所以问题应该在
if
语句中。它不会进入打印(n)

我正在使用PyCharm社区版和Python 3.4

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

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

  • 那么,
    范围(40-101)
    给出了
    范围(-61)
    ,这被视为
    范围(0,-61)
    。让我们看看:

    >>> range(40-101)
    range(0, -61)
    >>> list(range(40-101))
    []
    
    我想你的意思是
    范围(40101)
    对吗

  • 因此,您的代码应该如下所示:

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


    刚刚有了一个改进代码的想法,在这种情况下,您不需要
    %
    ,因为它有一个
    步骤
    参数。从文件中:

    等级范围(停止)
    类别范围(开始、停止[、步骤])

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

    如果省略
    步骤
    参数,则默认为1。如果省略start参数,则默认为0。如果步骤为零,则引发
    ValueError

    对于正阶跃,范围r的内容由公式
    r[i]=start+step*i
    确定,其中
    i>=0
    r[i]

    因此,如文档所述,您还可以设置
    步骤
    而不是使用
    %
    来检查所有可以被
    数字
    分割的数字,手动使用
    if
    。例如:

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

    “既然他们使用”是“无处不在…”谁是“他们”?我建议你停止听它们,因为你几乎不应该使用
    is
    唯一常见的情况是
    我能想到的是当你检查
    某个东西是否没有时,那只是因为它在语义上更正确
    something==None
    仍然有效-只是没有那么好。这是真的,但在Arc676的建议下,我尝试在范围(40101,1)内执行相同的代码数字为10。它是有效的。所以我认为is适用于整数,但不适用于字符串等,就像java一样。所以我的意思是,根据is,两个具有相同内容的不同字符串是false。但是根据is,两个具有相同整数值的不同变量是相等的。is
    步骤的第三个参数是
    。因此,在
    range(40101,1)
    range(40101)
    之间没有区别。但是,嗯,我有个好主意来改进你的代码。@Juwan:但是,我在你的代码中没有看到任何字符串,你已经将输入字符串转换为整数,使用
    int()
    函数对吗?是的,我认为它是这样工作的。因为如果你试图在输入代码中输入类似于名称的内容,就会失败,因为它无法将其解析为整数值。@Juwan:哦,你是说这个吗。然后,您可以使用
    try…except
    捕获
    ValueError
    引发的
    int()
    错误。我想你很快就会知道的;)
    number = int(input("Enter the number: "))
    for n in range(40, 101, number):
        print(n)