鱼C论坛

 找回密码
 立即注册
查看: 1210|回复: 7

[已解决]一个零基础python入门学习课堂练习的求助

[复制链接]
发表于 2020-3-21 16:09:57 | 显示全部楼层 |阅读模式

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

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

x
新人刚学python,在做《零基础python入门》第四章4.2课堂小练习的时候,我想把那个填分数的小程序改成错了可以继续填的样子。但是试了很多方法都没成功。麻烦各位帮忙看下怎么改才行。谢谢。
原程序是:
#P4.1.py
score = int(input('输入分数:'))
if 100 >= score >= 90:
        print('A')
elif 90 > score >= 80:
        print('B')
elif 80 > score >= 60:
        print('C')
elif 60 > score >= 0:
        print('D')
else:
        print('输入错误。')

我试了一些方法后,最后改完至少能跑起来不死机的是:
for guess in range(0,100):
        guess = int(input('输入你的分数:'))
        score = int(guess)

while True:
                if score != guess:
                        score = input('输入错误,继续:')
                else:

                        if 100 >= score >= 90:
                                print('A')
                        elif 90 > score >= 80:
                                print('B')
                        elif 80 > score >= 60:
                                print('C')
                        elif 60 > score >= 0:
                                print('D')
                
print('over')

但是这个运行后只会一直提示输入分数。请教有没有什么办法让它在输入0-100之外的数字后,再返回继续输入一直到正确的范围呢?多谢。
最佳答案
2020-3-21 16:21:23
while True:
    guess = int(input('输入你的分数:'))
    if guess < 0 or guess > 100:
        score = print('输入错误,重新输入')
    elif 100 >= guess >= 90:
            print('A')
    elif 90 > guess >= 80:
            print('B')
    elif 80 > guess >= 60:
            print('C')
    elif 60 > guess >= 0:
           print('D')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-21 16:16:26 | 显示全部楼层
本帖最后由 Hoiste 于 2020-3-21 16:24 编辑

一、循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字
二、没有设置break条件,所以会陷入死循环。
三、有一个无意义的for循环和无意义的变量名

参考代码
score = int(input('输入你的分数:'))

while True:
    if score in range(0,101):#0到100之间的整形列表,不包含101
        if 100 >= score >= 90:
            print('A')
        elif 90 >= score >= 80:
            print('B')
        elif 80 >= score >= 60:
            print('C')
        elif 60 >= score >= 0:
            print('D')
        break#没有这个会一直死循环的
    else:
        score = int(input('输入有误,请重新输入:'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-21 16:21:23 | 显示全部楼层    本楼为最佳答案   
while True:
    guess = int(input('输入你的分数:'))
    if guess < 0 or guess > 100:
        score = print('输入错误,重新输入')
    elif 100 >= guess >= 90:
            print('A')
    elif 90 > guess >= 80:
            print('B')
    elif 80 > guess >= 60:
            print('C')
    elif 60 > guess >= 0:
           print('D')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-21 16:23:23 | 显示全部楼层

多谢多谢,原来是这么做啊,我试了那个大于或者小于,但是我用的是 if 100 < guess < 0 ,提示错误,然后就没再用它。现在知道了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 16:25:22 | 显示全部楼层
Hoiste 发表于 2020-3-21 16:16
循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字,此外没有设置break条件,所以会陷 ...

嗯,明白了,多谢。我一开始加了个break,然后也是一直让输入分数。后边我又把break去掉了,把range挪到后边,结果就是直接卡死了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 16:31:58 | 显示全部楼层
Hoiste 发表于 2020-3-21 16:16
一、循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字
二、没有设置break条件,所以 ...

刚才没刷出这个代码,把最佳给那位朋友了。现在才看到代码,你这个更完美。没办法,没法选最佳了,手动最佳吧。这个才是我想要的效果。多谢多谢。学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 16:36:10 | 显示全部楼层
你打算完成什么功能?
前三行的 for循环导致你需要输入100次(不管你输入的是什么值)
score每次输入都需要转成int,否则不能与int进行比较

你是打算输入一个值,然后输出等级,若输入超出范围则重新输入?
score = int(input('输入你的分数:'))
while True:
    if score>100 or score<0:
        score = int(input('输入错误,继续:'))
        continue
    if 100 >= score >= 90:
        print('A')
    elif 90 > score >= 80:
        print('B')
    elif 80 > score >= 60:
        print('C')
    elif 60 > score >= 0:
        print('D')
    break
                
print('over')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-21 16:45:59 | 显示全部楼层
sunrise085 发表于 2020-3-21 16:36
你打算完成什么功能?
前三行的 for循环导致你需要输入100次(不管你输入的是什么值)
score每次输入都需 ...

多谢各位热心帮忙,你这个也很棒,又学会一个continue,多谢多谢。就是这效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 05:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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