python拜拜 发表于 2020-9-9 23:08:14

求教

输入100以上的数字,为什么没有执行 "重新输入0~100",而是执行了 "输入一个分数"
a = 100
while a:
    a = int(input("输入一个分数:"))
    if 100 >= a and a >= 90:
      print("A")
      break
    elif 90 > a and a >= 80:
      print("B")
      break
    elif 80 > a and a >= 60:
      print("C")
      break
    elif 60>a:
      print("D")
      break
    elif a < 0 and a > 100:
      a = int(input("重新输入0~100:"))
      print(a)

疾风怪盗 发表于 2020-9-9 23:08:15

本帖最后由 疾风怪盗 于 2020-9-9 23:22 编辑

elif a < 0 and a > 100:
这个条件,太难了,又要大于100,又要小于0,没法满足,所以就没有"重新输入0~100:"
其实可以完全不写这个条件

a = 100
while a:
    a = int(input("输入一个分数:"))
    if 90 <= a <= 100:
      print("A")
      break
    elif 80 <= a < 90:
      print("B")
      break
    elif 60 <= a < 80:
      print("C")
      break
    elif 0 <= a < 60:
      print("D")
      break
    else:
      a = int(input("重新输入0~100:"))
      print(a)

CH10 发表于 2020-9-10 11:58:11

elif a < 0 and a > 100:
{:10_277:}这一句的意思是a要小于0并且要大于100,你不觉得有问题么??,改成a小于0或者a大于100就行

winderhu 发表于 2020-9-10 14:44:55

    elif a < 0 and a > 100:         #这个地方不对,两者是并且的关系,没有数字可以又小于0并且又大于100,所以这个条件是不成立的自然不能执行后面的重新输入和打印。
      a = int(input("重新输入0~100:"))
      print(a)

Cool_Breeze 发表于 2020-9-10 16:14:46

#!/usr/bin/env python3
#coding=utf-8

# 输入100以上的数字,为什么没有执行 "重新输入0~100",而是执行了 "输入一个分数"
a = 100
while a:
    a = int(input("输入一个分数:"))
    if 100 >= a and a >= 90:
      print("A")
      break
    elif 90 > a and a >= 80:
      print("B")
      break
    elif 80 > a and a >= 60:
      print("C")
      break
    elif 60>a:
      print("D")
      break
    # and 短路求值了 101<0 不成立所以跳过了代码段
    # or 则不会短路求值
    elif a < 0 or a > 100:
      a = int(input("重新输入0~100:"))
      print(a)
页: [1]
查看完整版本: 求教