零基础学Python 007/008讲课后作业
这课有个根据考试成绩评级的问题,我试着做了一些扩展,源代码如下,但是水平有限出了一点问题:i=input("请输入班级人数:")
while (not i.isnumeric()):
i=input("请输入一个代表班级人数的整数:")
i=int(i)
prompt="请输入第%d人的考试成绩:"%(i-(i-1))
while i:
temp = input(prompt)
i-=1
while (not temp.isnumeric() or int(temp)>100):
temp =input("请输入100以内整数:")
result=int(temp)
if result>=90:
print("A")
if 80<result<90:
print("B")
if 60<=result<=80:
print("C")
if result<60:
print("D")
其中,想通过这一句做到,班上有i=10 ,10个人,请输入第1个人,然后循环显示,输入第2个人,直到显示输入第10个人。但是这个功能有问题,请高手指导,描述经尽量简单,感谢。
prompt="请输入第%d人的考试成绩:"%(i-(i-1)) prompt放入while循环不就行了么?
条件改一下,改成 i不等于10,等于10就退出while循环。 heidern0612 发表于 2020-5-18 16:18
prompt放入while循环不就行了么?
条件改一下,改成 i不等于10,等于10就退出while循环。
不是,循环没什么问题, 老是提示输入第1 人的成绩,不能提示说输入第2人的成绩,第3人的成绩。
C:\Users\zhaop4\Desktop\捕获.gif 本帖最后由 sunrise085 于 2020-5-18 16:26 编辑
你用的是while循环
i=input("请输入班级人数:")
while (not i.isnumeric()):
i=input("请输入一个代表班级人数的整数:")
i=int(i)
k=i
while i:
prompt="请输入第%d人的考试成绩:"%(k-(i-1))
temp = input(prompt)
i-=1
while (not temp.isnumeric() or int(temp)>100):
temp =input("请输入100以内整数:")
result=int(temp)
if result>=90:
print("A")
if 80<result<90:
print("B")
if 60<=result<=80:
print("C")
if result<60:
print("D")
for循环可能更好一些
i=input("请输入班级人数:")
while (not i.isnumeric()):
i=input("请输入一个代表班级人数的整数:")
i=int(i)
for k in range(i):
prompt="请输入第%d人的考试成绩:"%(k+1)
temp = input(prompt)
while (not temp.isnumeric() or int(temp)>100):
temp =input("请输入100以内整数:")
result=int(temp)
if result>=90:
print("A")
if 80<result<90:
print("B")
if 60<=result<=80:
print("C")
if result<60:
print("D") 本帖最后由 heidern0612 于 2020-5-18 16:29 编辑
i=int(input("请输入班级人数:"))
num = 0
while i != num:
num =int(input ("请输入需要查询的人数:"))
result=int(input(f"请输入第{num}人的考试成绩:"))
if result>=90:
print("A")
elif result >=80:
print("B")
elif result >= 70:
print("C")
else:
print("D")
假如一共10个人,输入第10个人退出。
其他的人数可以无限次查询。 在你的原代码上进行小部分修改,以便你理解~~~
i=input("请输入班级人数:")
while (not i.isnumeric()):
i=input("请输入一个代表班级人数的整数:")
i=int(i)
count = 1
result = []# 记录成绩
while i :
prompt="请输入第%d人的考试成绩:"%count
temp = input(prompt)
while (not temp.isnumeric() or int(temp)>100):
temp =input("请输入100以内整数:")
result.append(temp)# 记录成绩列表
i -= 1# 每次减一个人
count += 1 # 下一个人
for each in result:
result=int(each)
if result>=90:
print("A")
if 80<result<90:
print("B")
if 60<=result<=80:
print("C")
if result<60:
print("D")
如果对你有帮助,记得设置最佳嘿嘿~{:10_287:} Twilight6 发表于 2020-5-18 16:29
在你的原代码上进行小部分修改,以便你理解~~~
感谢你的指导,综合选了四楼为最佳。 heidern0612 发表于 2020-5-18 16:28
假如一共10个人,输入第10个人退出。
其他的人数可以无限次查询。
感谢你的指导,综合选了四楼为最佳,谢谢! 笨虫学爬虫 发表于 2020-5-18 16:49
感谢你的指导,综合选了四楼为最佳。
没事~ 你觉得最好的就行{:10_287:} 笨虫学爬虫 发表于 2020-5-18 16:50
感谢你的指导,综合选了四楼为最佳,谢谢!
你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。 heidern0612 发表于 2020-5-18 18:05
你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。
但是我觉得你这个表述有问题,当输入90分以上时,你会出现A,B,C三个评级。
if result>=90:
print("A")
elif result >=80:
print("B")
elif result >= 70:
print("C")
else:
print("D") 本帖最后由 heidern0612 于 2020-5-19 09:17 编辑
笨虫学爬虫 发表于 2020-5-19 08:39
但是我觉得你这个表述有问题,当输入90分以上时,你会出现A,B,C三个评级。
你实验了吗? 超过90分直接就进90分的分支了,还进啥ABC评级
你可以拿我写的代码实验下。
这个就是个逻辑的问题,你既然if都大于等于90了,剩下的自然就是小于90的,还用写出来么?
当然我这个顺序不能乱,乱的话就判断错了。自上而下执行的时候,这个逻辑是对的。 heidern0612 发表于 2020-5-19 09:06
你实验了吗? 超过90分直接就进90分的分支了,还进啥ABC评级
你可以拿我写的代码实验下。
我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。{:5_107:} 笨虫学爬虫 发表于 2020-5-19 09:52
我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。
这个用的就是python自上而下执行的特性.
没这个特性的话,顺序乱的话,就不成立了。
页:
[1]