2 if语句与1 else破坏循环

时间:2020-01-05 18:09:29

标签: python python-3.x if-statement nested

我的Python代码是

while True:
    a = int(input("enter a digit"))
    if a < 10:
        print("digit is less than 10")
    if a < 50 and a > 10:
        print("digit is more than 10")
    else:
        print("error")

所以我的疑问是,当我为(a <10)运行该程序时,它将相对于if语句显示正确的输出,但也会提供else语句以及if的输出。但是,如果第二个短语中提到的if条件为(a <50并且a> 10),则输出仅是“数字大于10”,这是正确的,但是为什么值小于时,为什么会有else的额外输出10。

4 个答案:

答案 0 :(得分:2)

如果您希望所有if语句都属于同一if..else块,那么您应该这样做:

while True:
    a = int(input("enter a digit"))
    if a < 10:
        print("digit is less than 10")
    elif a < 50 and a > 10:
        print("digit is more than 10")
    else:
        print("error")

说明:

您当前的代码有两个不同的if..else块:

a = int(input("enter a digit"))
if a < 10:
    print("digit is less than 10")


if a < 50 and a > 10:
    print("digit is more than 10")
else:
    print("error")

因此,如果a<10,它将打印"digit is less than 10"。然后该if块结束,您的代码进入第二个if块。由于a不在1050之间,因此它将输入else语句并打印"error"

答案 1 :(得分:0)

因为您有两个if语句,所以需要一个elif

 if a < 10:
     print("digit is less than 10")
 elif a < 50 and a > 10:
     print("digit is more than 10")
 else:
     print("error") 

输出:

enter a digit1
digit is less than 10
enter a digit50
error
enter a digit49
digit is more than 10
enter a digit
enter a digit90
error

答案 2 :(得分:0)

之所以会这样,是因为在顺序代码中运行类似

如果Statememt(a <10)

If else语句(a> 10和a <50)

对于a < 10

如果陈述a<10打印

如果陈述10 < a < 50 :(否),则else打印执行

答案 3 :(得分:0)

在这些情况下,您需要更多的语句,则需要使用elif语句。 这是解决方案: 而True: a = int(input(“ enter a digit”)) 如果<10: 打印(“数字小于10”) 小数<50和> 10: 打印(“位数大于10”) 其他: 打印(“错误”)