0

elif 语句

elif 语句示例

elif 是 else+if 的简写,一定要跟着 if 后面。它先否定前面的 if 条件,然后再加一个新的条件。

它的语法意义是为了减少使用嵌套结构,让代码更清晰。

以下两组代码是等价的。

score = int(input())
if score >= 60:
    if score >= 90:
        print(score, 'excellent')
    else:
        print(score, 'pass')
else:
    print(score, 'fail')
score = int(input())
if score >= 90:
    print(score, 'excellent')
elif score >= 60:
    print(score, 'pass')
else:
    print(score, 'fail')

:: tip 对比

可以对比一下跟之前这道题的区别。

::

elif 语句一般形式

if {condition}:
    {statement1}
    {statement2}
    ……
elif:
    {statement3}
    {statement4}
    ……
elif……
else:
    {statement5}
    {statement6}
    ……

elif 的隐藏条件

elif 是 else+if 的组合,它首先是否定前面的 if 条件,形成一个自己的隐藏条件,然后再加一个新的条件。 例如elif score >= 80其真实条件是否定if score >= 90后得到score < 90再加上score >= 80,最终效果是if 80 <= score < 90。所以在 score 输入 90 分时,虽然elif score >= 80条件看似也成立,但是不会执行。

score = int(input())
if score >= 90:
    print(score, 'excellent')
elif score >= 80: # 80 <= score <90
    print(score, 'good')
elif score >= 60: # 60 <= score < 80
    print(score, 'pass')
else: # score < 60
    print(score, 'fail')

elif 与多个并列 if 的区别

如果把上面的示例代码改成多个并列 if 的结构,看似效果也差不多。但是运行后 score 输入 90 就会发现问题。

score = int(input())
if score >= 90:
    print(score, 'excellent')
if score >= 80:
    print(score, 'good')
if score >= 60:
    print(score, 'pass')
if score >= 0:
    print(score, 'fail')

elif 的顺序

一个完整的 if-elif-else 语句中,只会执行最先成立的那个条件。例如以下代码中,如果 score 输入 80,只会输出 pass,而不会输出 good。因为一旦elif score >= 60成立了,就会执行其下面的语句,而elif score >= 80虽然也成立,但是不会再去判断和执行。示意图可参照上面的elif 流程图。所以要注意 elif 的排列顺序。

score = int(input())
if score >= 90:
    print(score, 'excellent')
elif score >= 60:
    print(score, 'pass')
elif score >= 80:
    print(score, 'good')
else:
    print(score, 'fail')
选择结构

以下程序语法正确的是?

[0/1]
选择结构
score = int(input())
if score >= 90:
    print('excellent')
elif score >= 60:
    print('pass')
else:
    print('fail')

如果输入90,程序会输出

如果输入80,程序会输出

如果输入50,程序会输出

[0/3]
选择结构
grade = input()
match grade:
    case "A":
        print('excellent')
    case "B":
        print('good')
    case "C":
        print('pass')
    case _:
        print('fail')

如果输入C,程序会输出

如果输入P,程序会输出

[0/2]
选择结构

以下程序语法正确的是?

[0/1]
选择结构
score = int(input())
if score >= 90:
    print('excellent',end=' ')
if score >= 80:
    print('good',end=' ')
if score >= 60:
    print('pass',end=' ')
if score >= 0:
  print('fail')

如果输入90,程序会输出

如果输入50,程序会输出

[0/2]
上一章
else
下一章
case