可恶的神经网络 发表于 2023-3-11 09:22:11

课后作业6:为什么使用多个if语句后,最后使用else会出错

cj=input("请输入你的成绩:")

while cj !='e':
    cj=int(float(cj))
    if cj == 100:
      print('S')
    if 90<=cj<100:
      print('A')
    if 80<=cj<90:
      print('B')
    if 60<=cj<80:
      print('C')
    else:
      print('D')
    cj=input("请输入你的成绩:")
   

最后结果
请输入你的成绩:90.1
A
D
请输入你的成绩:

虽然输入了90分以上,但是还是会显示一个D成绩,这是为什么

isdkz 发表于 2023-3-11 09:27:27

在这段代码中,如果输入的成绩不在[60,80)范围内,会输出一个'D'成绩。

然而,在这种情况下,如果该成绩在范围内,它也会输出一个'D'成绩。

这是因为if语句是相互独立的,每个if语句都会执行,即使成绩已经匹配了一个更高的级别。

因此,在输出一个'A'成绩之后,因为成绩不在[60,80)范围内,它会输出一个'D'成绩。

为了避免这个问题,你可以把后面的if语句改为elif语句,

这样它只会在前面的if语句都不匹配时执行,而不是每次都执行。例如:

cj=input("请输入你的成绩:")

while cj !='e':
    cj=int(float(cj))
    if cj == 100:
      print('S')
    elif 90<=cj<100:
      print('A')
    elif 80<=cj<90:
      print('B')
    elif 60<=cj<80:
      print('C')
    else:
      print('D')
    cj=input("请输入你的成绩:")
这样,只有在成绩不在或等于100的范围内时,才会输出一个'D'成绩。

可恶的神经网络 发表于 2023-3-11 09:34:02

isdkz 发表于 2023-3-11 09:27
在这段代码中,如果输入的成绩不在[60,80)范围内,会输出一个'D'成绩。

然而,在这种情况下,如果该成绩 ...

谢谢大佬
页: [1]
查看完整版本: 课后作业6:为什么使用多个if语句后,最后使用else会出错