【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的问题解决了,谢谢大家!
除此之外还想要问一下大家,有没有方法可以判断用户输入的范围是否重叠?使用还没学到的知识也没关系,只是很好奇而已。
谢谢! 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, "名学生分数已转换完。感谢您的使用。") qiuyouzhi 发表于 2020-5-27 17:18
哦哦......是哈,我真傻......谢谢 本帖最后由 青出于蓝 于 2020-5-27 17:21 编辑
哦哦,看错 这个地方有问题,因为比规定的学生数量要多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, "名学生分数已转换完。感谢您的使用。")
Twilight6 发表于 2020-5-27 17:20
因为你 while student > 0 的循环外面还输入了一次学生成绩所以多一个,正确代码:
嗯!谢谢! qiuyouzhi 发表于 2020-5-27 17:18
请问这个除此之外还想要问一下大家,有没有方法可以判断用户输入的范围是否重叠?使用还没学到的知识也没关系,只是很好奇而已。您知道吗? 冰糖葫芦墩儿 发表于 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('你的分数输入范围不正确!请重新输入!') Twilight6 发表于 2020-5-27 17:25
你可以直接在下面判断下范围对不对~不需要还没学到的知识
好棒!!谢谢您!! 冰糖葫芦墩儿 发表于 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")
这样更好 不要全部输入完 才判断 如下:
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, "名学生分数已转换完。感谢您的使用。")
Twilight6 发表于 2020-5-27 17:27
这样更好 不要全部输入完 才判断
{:5_105:}谢谢您提供的思路!很棒。 冰糖葫芦墩儿 发表于 2020-5-27 17:31
谢谢您提供的思路!很棒。
{:10_297:}
https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif {:5_93:}
页:
[1]