鱼C论坛

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

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

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

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

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

x
这课有个根据考试成绩评级的问题,我试着做了一些扩展,源代码如下,但是水平有限出了一点问题:
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))
最佳答案
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")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

条件改一下,改成 i不等于10,等于10就退出while循环。
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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个人退出。

其他的人数可以无限次查询。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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")


如果对你有帮助,记得设置最佳嘿嘿~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



感谢你的指导,综合选了四楼为最佳。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

感谢你的指导,综合选了四楼为最佳,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

没事~ 你觉得最好的就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你的if逻辑有问题,if条件既然有>=90了,同级的If就不需要再小于90了,有点多此一举。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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")
想知道小甲鱼最近在做啥?请访问 -> 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的,还用写出来么?

当然我这个顺序不能乱,乱的话就判断错了。自上而下执行的时候,这个逻辑是对的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

我昨天试的时候出了问题,刚试了下又好了,可能是我的问题。
我再看看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

没这个特性的话,顺序乱的话,就不成立了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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