为啥不是在嵌套的“if 语句”中检查所有条件?

Posted

技术标签:

【中文标题】为啥不是在嵌套的“if 语句”中检查所有条件?【英文标题】:Why aren't all conditions checked in nested 'if statements'?为什么不是在嵌套的“if 语句”中检查所有条件? 【发布时间】:2021-09-11 16:22:08 【问题描述】:
score = 50

if score >= 60:
  print('elon')
  if score <= 50:
      print('please type number bigger than 0')
else:
  print('please type a number next time')

任何人都可以尝试帮助我理解为什么满足第二个条件但未执行的机制,因为它嵌套在错误的第一个条件后面。我正在努力理解如何以及何时嵌套“事物”。为什么 ELSE 语句没有嵌套?

【问题讨论】:

一个数字怎么可能既大于 60 小于 50?这是不可能的。 第二个if只有在第一个if条件为真时才能达到。改用 elif 并且不要缩进它 缩进在python中很重要。如果第二个ifelse 的on 或其他有相反的缩进,它们在语法上是正确的,但含义不同。 if score &gt;= 60 块中的所有内容只有在分数至少为 60 时才会运行。所以甚至没有达到if score &lt;= 50 语句。 【参考方案1】:

Python 使用缩进作为块分隔符,但如果您愿意,我们可以使用 C 样式的花括号使其显式化:

score = 50

if (score >= 60) 
    print('elon')
    if (score <= 50) 
        print('please type number bigger than 0')
    
 else 
    print('please type a number next time')

如果检查score是否大于或等于60,这段代码会做什么,如果是,它将执行块的内容,所以print("elon")然后检查score是否小于或等于50,并且如果是print("please ..."). 在这种情况下,嵌套的if 永远不会为真,因为要在此处生成,score 必须大于或等于 60,因此它不能小于或等于 50。

如果我减少嵌套 if 的缩进,并使其成为 elif :

if score >= 60:
    print('elon')
elif score <= 50:
    print('please type number bigger than 0')
else:
    print('please type a number next time')

这意味着: |得分|结果| |--------|-----| |score = 60|埃隆| |50

【讨论】:

以上是关于为啥不是在嵌套的“if 语句”中检查所有条件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不使用嵌套的 if 语句有啥具体原因吗? [关闭]

即使第一个条件为假,是不是所有条件都在 if 语句中进行检查?

为啥我的 If 语句在 PHP 中接受不正确的字符串条件?

c语言中连续3个if语句 三种情况,大于等于小于0,为啥只执行第一个if就不执行下面的了?请问

C语言中三个if语句的嵌套怎理解

提取与IF语句一起使用的所有逻辑测试条件(非嵌套)并打印到单独的列中