【问题标题】:2 if statement with 1 else destroying a loop2 if 语句与 1 else 破坏循环
【发布时间】:2020-01-05 18:09:29
【问题描述】:

这里是我的 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),输出只是“数字大于 10”,这是正确的,但是当值小于时,为什么会有额外的 else 输出10 .

【问题讨论】:

  • 使用if/elif/else。如果a == 10 会发生什么?

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


【解决方案1】:

如果您希望所有 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&lt;10,它将打印"digit is less than 10"。然后if 块结束,您的代码进入第二个if 块。由于a不在1050之间,所以会进入else语句,打印"error"

【讨论】:

  • 谢谢你的回答对我很有帮助
  • 不客气@Priyanshu,欢迎来到 Stack Overflow!如果此答案或任何答案解决了您的问题,请考虑通过单击复选标记对其进行投票并接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。干杯!
【解决方案2】:

因为你有两个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

【讨论】:

    【解决方案3】:

    发生这种情况是因为顺序代码运行方式类似

    如果Statememt(a

    If else 语句(a > 10 and a

    如果是a &lt; 10

    如果声明 a&lt;10 打印

    如果声明10 &lt; a &lt; 50:(false) 所以else 打印执行

    【讨论】:

      【解决方案4】:

      在这些需要更多语句的情况下,您需要使用 elif 语句。 这是解决方案: 而真: a = int(input("输入一个数字")) 如果 10: print("数字大于 10") 别的: 打印(“错误”)

      【讨论】: