鱼C论坛

 找回密码
 立即注册
查看: 1164|回复: 13

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

[复制链接]
发表于 2020-5-27 17:15:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冰糖葫芦墩儿 于 2020-5-27 17:21 编辑
原题如下:按照 100 分制,90 分以上成绩为 A,80 到 90 为 B,60 到 80 为 C,60 以下为 D,写一个程序,当用户输入分数,自动转换为ABCD 的形式打印。

第一次写的是这样的:
  1. print("___________鱼饼牌成绩等级转换器欢迎您。__________\n如要结束程序请输入0000.")
  2. score = int(input("请输入分数:"))

  3. while 1:
  4.     if score >= 90:
  5.         print("A")
  6.     elif 80 < score < 90:
  7.         print("B")
  8.     elif 60 < score <= 80:
  9.         print("C")
  10.     elif score == 0000:
  11.         print("程序结束,感谢使用。")
  12.         break
  13.     else:
  14.         print("D")
  15.     score = int(input("请输入分数:"))
复制代码

但是上班实在没事做,就又在基础上改了一下。
这个版本是想要让用户自己定义范围,学生数量。学生数量都用完的话就程序结束。
但是有点问题出现了:
  1. print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

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

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

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

  13. score = int(input("现在请依次输入分数(一次只可输入一个):"))
  14. while student > 0:
  15. [backcolor=Red]#这个地方有问题,因为比规定的学生数量要多1次,不知道为什么,明明规定了大于0......[/backcolor]
  16.     student -= 1
  17.     if score >= a:
  18.         print("A")
  19.     elif c <= score < b:
  20.         print("B")
  21.     elif e <= score < d:
  22.         print("C")
  23.     else:
  24.         print("D")
  25.     score = int(input("请输入学生分数:"))

  26. print(i, "名学生分数已转换完。感谢您的使用。")
复制代码

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

你可以直接在下面判断下范围对不对~不需要还没学到的知识
  1. while True:
  2.     a = int(input("A类成绩需大于等于:"))
  3.     b = int(input("B类成绩需小于:"))
  4.     c = int(input("B类成绩需大于等于:"))
  5.     d = int(input("C类成绩需小于:"))
  6.     e = int(input("C类成绩需大于等于:"))
  7.     if a >= b >= c >= d >= e:
  8.         break
  9.     print('你的分数输入范围不正确!请重新输入!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 17:18:10 | 显示全部楼层
  1. print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

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

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

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

  13. #score = int(input("现在请依次输入分数(一次只可输入一个):"))
  14. while student:
  15.     score = int(input("请输入学生分数:"))
  16.     student -= 1
  17.     if score >= a:
  18.         print("A")
  19.     elif c <= score < b:
  20.         print("B")
  21.     elif e <= score < d:
  22.         print("C")
  23.     else:
  24.         print("D")
  25.    

  26. print(i, "名学生分数已转换完。感谢您的使用。")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-27 17:19:43 | 显示全部楼层

哦哦......是哈,我真傻......谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 17:20:25 | 显示全部楼层
本帖最后由 青出于蓝 于 2020-5-27 17:21 编辑

哦哦,看错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 17:20:35 | 显示全部楼层
这个地方有问题,因为比规定的学生数量要多1次,不知道为什么,明明规定了大于0......

因为你 while student > 0 的循环外面还输入了一次学生成绩所以多一个,正确代码:
  1. print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

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

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

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

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

  27. print(i, "名学生分数已转换完。感谢您的使用。")
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯!谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-27 17:25:38 | 显示全部楼层

请问这个
除此之外还想要问一下大家,有没有方法可以判断用户输入的范围是否重叠?使用还没学到的知识也没关系,只是很好奇而已。
您知道吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 17:25:46 | 显示全部楼层    本楼为最佳答案   

你可以直接在下面判断下范围对不对~不需要还没学到的知识
  1. while True:
  2.     a = int(input("A类成绩需大于等于:"))
  3.     b = int(input("B类成绩需小于:"))
  4.     c = int(input("B类成绩需大于等于:"))
  5.     d = int(input("C类成绩需小于:"))
  6.     e = int(input("C类成绩需大于等于:"))
  7.     if a >= b >= c >= d >= e:
  8.         break
  9.     print('你的分数输入范围不正确!请重新输入!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-27 17:27:18 | 显示全部楼层
Twilight6 发表于 2020-5-27 17:25
你可以直接在下面判断下范围对不对~不需要还没学到的知识

好棒!!谢谢您!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 17:27:59 | 显示全部楼层
  1. while True:
  2.     a = int(input("A类成绩需大于等于:"))
  3.     b = int(input("B类成绩需小于:"))
  4.     if a >= b:
  5.         c = int(input("B类成绩需大于等于:"))
  6.         if b >= c:
  7.             d = int(input("C类成绩需小于:"))
  8.             if c >= d:
  9.                 e = int(input("C类成绩需大于等于:"))
  10.                 break
  11.     print('你的分数输入范围不正确!请重新输入!')
  12. print(e, "分以下的分数将被定义为D")
复制代码

这样更好 不要全部输入完 才判断
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-27 17:28:21 | 显示全部楼层
如下:
  1. print("__________欢迎使用鱼饼成绩转换器!__________\n__________请按以下提示输入需要的成绩分类。__________")

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

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

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

  13. while student > 0:
  14.    
  15.     score = int(input("现在请依次输入分数(一次只可输入一个):"))
  16.     student -= 1
  17.     if score >= a:
  18.          print("A")
  19.     elif c <= score < b:
  20.         print("B")
  21.     elif e <= score < d:
  22.         print("C")
  23.     else:
  24.         print("D")
  25.    

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

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-27 17:31:59 | 显示全部楼层
Twilight6 发表于 2020-5-27 17:27
这样更好 不要全部输入完 才判断

谢谢您提供的思路!很棒。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 17:33:03 | 显示全部楼层
冰糖葫芦墩儿 发表于 2020-5-27 17:31
谢谢您提供的思路!很棒。



                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 16:58:12 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 18:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表