冰糖葫芦墩儿 发表于 2020-5-27 17:15:00

【python入门007课后作业】关于成绩分类时的一些小问题

本帖最后由 冰糖葫芦墩儿 于 2020-5-27 17:21 编辑

原题如下:按照 100 分制,90 分以上成绩为 A,80 到 90 为 B,60 到 80 为 C,60 以下为 D,写一个程序,当用户输入分数,自动转换为ABCD 的形式打印。
第一次写的是这样的:
print("___________鱼饼牌成绩等级转换器欢迎您。__________\n如要结束程序请输入0000.")
score = int(input("请输入分数:"))

while 1:
    if score >= 90:
      print("A")
    elif 80 < score < 90:
      print("B")
    elif 60 < score <= 80:
      print("C")
    elif score == 0000:
      print("程序结束,感谢使用。")
      break
    else:
      print("D")
    score = int(input("请输入分数:"))
但是上班实在没事做,就又在基础上改了一下。
这个版本是想要让用户自己定义范围,学生数量。学生数量都用完的话就程序结束。
但是有点问题出现了:
print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

a = int(input("A类成绩需大于等于:"))
b = int(input("B类成绩需小于:"))
c = int(input("B类成绩需大于等于:"))
d = int(input("C类成绩需小于:"))
e = int(input("C类成绩需大于等于:"))
print(e, "分以下的分数将被定义为D")

student = int(input("请输入学生数量:"))
i = student

while student <= 0:
    print("请输入0以上的阿拉伯数字。")
    student = int(input("请重新输入学生数量:"))

score = int(input("现在请依次输入分数(一次只可输入一个):"))
while student > 0:
#这个地方有问题,因为比规定的学生数量要多1次,不知道为什么,明明规定了大于0......
    student -= 1
    if score >= a:
      print("A")
    elif c <= score < b:
      print("B")
    elif e <= score < d:
      print("C")
    else:
      print("D")
    score = int(input("请输入学生分数:"))

print(i, "名学生分数已转换完。感谢您的使用。")

while的问题解决了,谢谢大家!
除此之外还想要问一下大家,有没有方法可以判断用户输入的范围是否重叠?使用还没学到的知识也没关系,只是很好奇而已。
谢谢!

qiuyouzhi 发表于 2020-5-27 17:18:10

print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

a = int(input("A类成绩需大于等于:"))
b = int(input("B类成绩需小于:"))
c = int(input("B类成绩需大于等于:"))
d = int(input("C类成绩需小于:"))
e = int(input("C类成绩需大于等于:"))
print(e, "分以下的分数将被定义为D")

student = int(input("请输入学生数量:"))
i = student

while student <= 0:
    print("请输入0以上的阿拉伯数字。")
    student = int(input("请重新输入学生数量:"))

#score = int(input("现在请依次输入分数(一次只可输入一个):"))
while student:
    score = int(input("请输入学生分数:"))
    student -= 1
    if score >= a:
      print("A")
    elif c <= score < b:
      print("B")
    elif e <= score < d:
      print("C")
    else:
      print("D")
   

print(i, "名学生分数已转换完。感谢您的使用。")

冰糖葫芦墩儿 发表于 2020-5-27 17:19:43

qiuyouzhi 发表于 2020-5-27 17:18


哦哦......是哈,我真傻......谢谢

青出于蓝 发表于 2020-5-27 17:20:25

本帖最后由 青出于蓝 于 2020-5-27 17:21 编辑

哦哦,看错

Twilight6 发表于 2020-5-27 17:20:35

这个地方有问题,因为比规定的学生数量要多1次,不知道为什么,明明规定了大于0......
因为你 while student > 0 的循环外面还输入了一次学生成绩所以多一个,正确代码:
print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

a = int(input("A类成绩需大于等于:"))
b = int(input("B类成绩需小于:"))
c = int(input("B类成绩需大于等于:"))
d = int(input("C类成绩需小于:"))
e = int(input("C类成绩需大于等于:"))
print(e, "分以下的分数将被定义为D")

student = int(input("请输入学生数量:"))
i = student

while student <= 0:
    print("请输入0以上的阿拉伯数字。")
    student = int(input("请重新输入学生数量:"))

print("现在请依次输入分数(一次只可输入一个):")
while student > 0:
# 这个地方有问题,因为比规定的学生数量要多1次,不知道为什么,明明规定了大于0.....
    score = int(input())
    student -= 1
    if score >= a:
      print("A")
    elif c <= score < b:
      print("B")
    elif e <= score < d:
      print("C")
    else:
      print("D")
    print('请输入学生分数:',end='')

print(i, "名学生分数已转换完。感谢您的使用。")


冰糖葫芦墩儿 发表于 2020-5-27 17:22:43

Twilight6 发表于 2020-5-27 17:20
因为你 while student > 0 的循环外面还输入了一次学生成绩所以多一个,正确代码:

嗯!谢谢!

冰糖葫芦墩儿 发表于 2020-5-27 17:25:38

qiuyouzhi 发表于 2020-5-27 17:18


请问这个除此之外还想要问一下大家,有没有方法可以判断用户输入的范围是否重叠?使用还没学到的知识也没关系,只是很好奇而已。您知道吗?

Twilight6 发表于 2020-5-27 17:25:46

冰糖葫芦墩儿 发表于 2020-5-27 17:22
嗯!谢谢!

你可以直接在下面判断下范围对不对~不需要还没学到的知识
while True:
    a = int(input("A类成绩需大于等于:"))
    b = int(input("B类成绩需小于:"))
    c = int(input("B类成绩需大于等于:"))
    d = int(input("C类成绩需小于:"))
    e = int(input("C类成绩需大于等于:"))
    if a >= b >= c >= d >= e:
      break
    print('你的分数输入范围不正确!请重新输入!')

冰糖葫芦墩儿 发表于 2020-5-27 17:27:18

Twilight6 发表于 2020-5-27 17:25
你可以直接在下面判断下范围对不对~不需要还没学到的知识

好棒!!谢谢您!!

Twilight6 发表于 2020-5-27 17:27:59

冰糖葫芦墩儿 发表于 2020-5-27 17:27
好棒!!谢谢您!!

while True:
    a = int(input("A类成绩需大于等于:"))
    b = int(input("B类成绩需小于:"))
    if a >= b:
      c = int(input("B类成绩需大于等于:"))
      if b >= c:
            d = int(input("C类成绩需小于:"))
            if c >= d:
                e = int(input("C类成绩需大于等于:"))
                break
    print('你的分数输入范围不正确!请重新输入!')
print(e, "分以下的分数将被定义为D")
这样更好 不要全部输入完 才判断

宋恺 发表于 2020-5-27 17:28:21

如下:
print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

a = int(input("A类成绩需大于等于:"))
b = int(input("B类成绩需小于:"))
c = int(input("B类成绩需大于等于:"))
d = int(input("C类成绩需小于:"))
e = int(input("C类成绩需大于等于:"))
print(e, "分以下的分数将被定义为D")

student = int(input("请输入学生数量:"))
i = student

while student <= 0:
    print("请输入0以上的阿拉伯数字。")
    student = int(input("请重新输入学生数量:"))

while student > 0:
   
    score = int(input("现在请依次输入分数(一次只可输入一个):"))
    student -= 1
    if score >= a:
         print("A")
    elif c <= score < b:
      print("B")
    elif e <= score < d:
      print("C")
    else:
      print("D")
   

print(i, "名学生分数已转换完。感谢您的使用。")

冰糖葫芦墩儿 发表于 2020-5-27 17:31:59

Twilight6 发表于 2020-5-27 17:27
这样更好 不要全部输入完 才判断

{:5_105:}谢谢您提供的思路!很棒。

Twilight6 发表于 2020-5-27 17:33:03

冰糖葫芦墩儿 发表于 2020-5-27 17:31
谢谢您提供的思路!很棒。

{:10_297:}
https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif

zwhe 发表于 2020-5-29 16:58:12

{:5_93:}
页: [1]
查看完整版本: 【python入门007课后作业】关于成绩分类时的一些小问题