笨虫学爬虫 发表于 2020-5-18 16:14:14

零基础学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))

heidern0612 发表于 2020-5-18 16:18:09

prompt放入while循环不就行了么?

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

笨虫学爬虫 发表于 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

sunrise085 发表于 2020-5-18 16:24:07

本帖最后由 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:28:05

本帖最后由 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个人退出。

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

Twilight6 发表于 2020-5-18 16:29:33

在你的原代码上进行小部分修改,以便你理解~~~

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:}

笨虫学爬虫 发表于 2020-5-18 16:49:09

Twilight6 发表于 2020-5-18 16:29
在你的原代码上进行小部分修改,以便你理解~~~




感谢你的指导,综合选了四楼为最佳。

笨虫学爬虫 发表于 2020-5-18 16:50:00

heidern0612 发表于 2020-5-18 16:28
假如一共10个人,输入第10个人退出。

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

感谢你的指导,综合选了四楼为最佳,谢谢!

Twilight6 发表于 2020-5-18 16:50:19

笨虫学爬虫 发表于 2020-5-18 16:49
感谢你的指导,综合选了四楼为最佳。

没事~ 你觉得最好的就行{:10_287:}

heidern0612 发表于 2020-5-18 18:05:13

笨虫学爬虫 发表于 2020-5-18 16:50
感谢你的指导,综合选了四楼为最佳,谢谢!

你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。

笨虫学爬虫 发表于 2020-5-19 08:39:59

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:06:03

本帖最后由 heidern0612 于 2020-5-19 09:17 编辑

笨虫学爬虫 发表于 2020-5-19 08:39
但是我觉得你这个表述有问题,当输入90分以上时,你会出现A,B,C三个评级。

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

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

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

当然我这个顺序不能乱,乱的话就判断错了。自上而下执行的时候,这个逻辑是对的。

笨虫学爬虫 发表于 2020-5-19 09:52:55

heidern0612 发表于 2020-5-19 09:06
你实验了吗? 超过90分直接就进90分的分支了,还进啥ABC评级

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


我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。{:5_107:}

heidern0612 发表于 2020-5-19 10:13:23

笨虫学爬虫 发表于 2020-5-19 09:52
我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。

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

没这个特性的话,顺序乱的话,就不成立了。
页: [1]
查看完整版本: 零基础学Python 007/008讲课后作业