鱼C论坛

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

[已解决]零基础学Python 007/008讲课后作业

[复制链接]
发表于 2020-5-18 16:14:14 | 显示全部楼层 |阅读模式

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

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

x
这课有个根据考试成绩评级的问题,我试着做了一些扩展,源代码如下,但是水平有限出了一点问题:
  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. prompt="请输入第%d人的考试成绩:"%(i-(i-1))
  6. while i:
  7.     temp = input(prompt)
  8.     i-=1
  9.     while (not temp.isnumeric() or int(temp)>100):
  10.         temp =input("请输入100以内整数:")
  11.     result=int(temp)
  12.     if result>=90:
  13.         print("A")
  14.     if 80<result<90:
  15.         print("B")
  16.     if 60<=result<=80:
  17.         print("C")
  18.     if result<60:
  19.         print("D")
复制代码

其中,想通过这一句做到,班上有i=10 ,10个人,请输入第1个人,然后循环显示,输入第2个人,直到显示输入第10个人。但是这个功能有问题,请高手指导,描述经尽量简单,感谢。
  1. prompt="请输入第%d人的考试成绩:"%(i-(i-1))
复制代码
最佳答案
2020-5-18 16:24:07
本帖最后由 sunrise085 于 2020-5-18 16:26 编辑

你用的是while循环
  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. k=i
  6. while i:
  7.     prompt="请输入第%d人的考试成绩:"%(k-(i-1))
  8.     temp = input(prompt)
  9.     i-=1
  10.     while (not temp.isnumeric() or int(temp)>100):
  11.         temp =input("请输入100以内整数:")
  12.     result=int(temp)
  13.     if result>=90:
  14.         print("A")
  15.     if 80<result<90:
  16.         print("B")
  17.     if 60<=result<=80:
  18.         print("C")
  19.     if result<60:
  20.         print("D")
复制代码


for循环可能更好一些
  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. for k in range(i):
  6.     prompt="请输入第%d人的考试成绩:"%(k+1)
  7.     temp = input(prompt)
  8.     while (not temp.isnumeric() or int(temp)>100):
  9.         temp =input("请输入100以内整数:")
  10.     result=int(temp)
  11.     if result>=90:
  12.         print("A")
  13.     if 80<result<90:
  14.         print("B")
  15.     if 60<=result<=80:
  16.         print("C")
  17.     if result<60:
  18.         print("D")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-18 16:18:09 | 显示全部楼层
prompt放入while循环不就行了么?

条件改一下,改成 i不等于10,等于10就退出while循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 16:22:48 | 显示全部楼层
heidern0612 发表于 2020-5-18 16:18
prompt放入while循环不就行了么?

条件改一下,改成 i不等于10,等于10就退出while循环。

不是,循环没什么问题, 老是提示输入第1 人的成绩,不能提示说输入第2人的成绩,第3人的成绩。
C:\Users\zhaop4\Desktop\捕获.gif
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 16:24:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-5-18 16:26 编辑

你用的是while循环
  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. k=i
  6. while i:
  7.     prompt="请输入第%d人的考试成绩:"%(k-(i-1))
  8.     temp = input(prompt)
  9.     i-=1
  10.     while (not temp.isnumeric() or int(temp)>100):
  11.         temp =input("请输入100以内整数:")
  12.     result=int(temp)
  13.     if result>=90:
  14.         print("A")
  15.     if 80<result<90:
  16.         print("B")
  17.     if 60<=result<=80:
  18.         print("C")
  19.     if result<60:
  20.         print("D")
复制代码


for循环可能更好一些
  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. for k in range(i):
  6.     prompt="请输入第%d人的考试成绩:"%(k+1)
  7.     temp = input(prompt)
  8.     while (not temp.isnumeric() or int(temp)>100):
  9.         temp =input("请输入100以内整数:")
  10.     result=int(temp)
  11.     if result>=90:
  12.         print("A")
  13.     if 80<result<90:
  14.         print("B")
  15.     if 60<=result<=80:
  16.         print("C")
  17.     if result<60:
  18.         print("D")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 16:28:05 | 显示全部楼层
本帖最后由 heidern0612 于 2020-5-18 16:29 编辑
  1. i=int(input("请输入班级人数:"))
  2. num = 0
  3. while i != num:
  4.         num =int(input ("请输入需要查询的人数:"))
  5.         result=int(input(f"请输入第{num}人的考试成绩:"))
  6.         if result>=90:
  7.             print("A")
  8.         elif result >=80:
  9.             print("B")
  10.         elif result >= 70:
  11.             print("C")
  12.         else:
  13.             print("D")
复制代码


假如一共10个人,输入第10个人退出。

其他的人数可以无限次查询。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 16:29:33 | 显示全部楼层
在你的原代码上进行小部分修改,以便你理解~~~

  1. i=input("请输入班级人数:")
  2. while (not i.isnumeric()):
  3.     i=input("请输入一个代表班级人数的整数:")
  4. i=int(i)
  5. count = 1
  6. result = []  # 记录成绩
  7. while i :
  8.     prompt="请输入第%d人的考试成绩:"%count
  9.     temp = input(prompt)
  10.     while (not temp.isnumeric() or int(temp)>100):
  11.         temp =input("请输入100以内整数:")
  12.     result.append(temp)  # 记录成绩列表
  13.     i -= 1  # 每次减一个人
  14.     count += 1 # 下一个人

  15. for each in result:
  16.     result=int(each)
  17.     if result>=90:
  18.         print("A")
  19.     if 80<result<90:
  20.         print("B")
  21.     if 60<=result<=80:
  22.         print("C")
  23.     if result<60:
  24.         print("D")
复制代码



如果对你有帮助,记得设置最佳嘿嘿~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 16:49:09 | 显示全部楼层
Twilight6 发表于 2020-5-18 16:29
在你的原代码上进行小部分修改,以便你理解~~~



感谢你的指导,综合选了四楼为最佳。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 16:50:00 | 显示全部楼层
heidern0612 发表于 2020-5-18 16:28
假如一共10个人,输入第10个人退出。

其他的人数可以无限次查询。

感谢你的指导,综合选了四楼为最佳,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 16:50:19 | 显示全部楼层
笨虫学爬虫 发表于 2020-5-18 16:49
感谢你的指导,综合选了四楼为最佳。

没事~ 你觉得最好的就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 18:05:13 | 显示全部楼层
笨虫学爬虫 发表于 2020-5-18 16:50
感谢你的指导,综合选了四楼为最佳,谢谢!

你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 08:39:59 | 显示全部楼层
heidern0612 发表于 2020-5-18 18:05
你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。

但是我觉得你这个表述有问题,当输入90分以上时,你会出现A,B,C三个评级。
  1.         if result>=90:
  2.             print("A")
  3.         elif result >=80:
  4.             print("B")
  5.         elif result >= 70:
  6.             print("C")
  7.         else:
  8.             print("D")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 09:06:03 | 显示全部楼层
本帖最后由 heidern0612 于 2020-5-19 09:17 编辑
笨虫学爬虫 发表于 2020-5-19 08:39
但是我觉得你这个表述有问题,当输入90分以上时,你会出现A,B,C三个评级。


你实验了吗? 超过90分直接就进90分的分支了,还进啥ABC评级

你可以拿我写的代码实验下。

这个就是个逻辑的问题,你既然if都大于等于90了,剩下的自然就是小于90的,还用写出来么?

当然我这个顺序不能乱,乱的话就判断错了。自上而下执行的时候,这个逻辑是对的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 09:52:55 | 显示全部楼层
heidern0612 发表于 2020-5-19 09:06
你实验了吗? 超过90分直接就进90分的分支了,还进啥ABC评级

你可以拿我写的代码实验下。

我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 10:13:23 | 显示全部楼层
笨虫学爬虫 发表于 2020-5-19 09:52
我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。

这个用的就是python自上而下执行的特性.

没这个特性的话,顺序乱的话,就不成立了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 20:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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