鱼C论坛

 找回密码
 立即注册
查看: 2558|回复: 8

[已解决]难顶哦好兄弟

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

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

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

x
time = 2

while time > 1:
    temp = input("请输入你的分数:")
    score = int(temp)
    if  0 <= score < 60:
        print("D")
    else:
        if  60 <= score < 80:
            print("C")
        else:
            if 90 <= score < 100:
                print("A")
            else:
                if score == 100:
                    print("S")
                else:
                    if score == "e":
                        time = time - 2
                        print("完结撒花")
                    else:
                        print("你搁这逗我玩呢?")

就是做不到输入e就结束,我对比了下小甲鱼写的,他是在开头就把score不等于e就开始循环这个给写上了,我这个有办法改成输入e停下吗?(!=我还是百度的,小甲鱼又留超纲作业(手动狗头
感谢大佬们的帮助
最佳答案
2020-5-18 07:47:58
本帖最后由 Twilight6 于 2020-5-18 07:57 编辑

input 是接受用户输入之后返回一个字符串类型的值
而 int是将数字符串转化为整型,若不是数字字符串就会报错,例如你想想,假设你input输入了个汉字,int如何把汉字转为整数?完全不可行,所以同理,python中就会导致报错

在你的代码基础上进行更改了下代码位置,其他没变:
time = 2

while time > 1:
    temp = input("请输入你的分数:")
    if temp == "e":
        time = time - 2
        print("完结撒花")
    else:
        score = int(temp)
        if  0 <= score < 60:
            print("D")
        else:
            if  60 <= score < 80:
                print("C")
            else:
                if 90 <= score < 100:
                    print("A")
                else:
                    if score == 100:
                        print("S")
                    else:
                        print("你搁这逗我玩呢?")

你到后面几课如果学到字符串方法和break,continue 和 elif 就可以更好解决这些问题了
例如字符串有个方法:isdigit()  如果字符串包含数字则返回 True,否则返回 False。作为判断条件,True后在将其转为int整型就不会报错
break 可以退出循环
continue 可以终止本次循环,开始下次循环
elif 只要前面同缩进下的elif 或 第一个 if 条件满足一个,之后的elif 都不会在进行判断
然后我们代码就可以这样改:
while 1:
    temp = input("请输入你的分数:")
    if temp.isdigit():  # 这边判断你输入的是不是纯数字字符串,若是继续执行代码
        score = int(temp)
        if  0 <= score < 60:
            print("D")
        elif  60 <= score < 80:
            print("C")
        elif 90 <= score < 100:
            print("A")
        elif score == 100:
            print("S")
        else:
            print("你搁这逗我玩呢?")
    elif temp == "e":
        print("完结撒花")
        break


如果帮助到你了,记得给个最佳哦~

  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-18 06:40:19 | 显示全部楼层
如果输入“e”的话这一行:score = int(temp)就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 06:40:52 | 显示全部楼层
所以判断是否等于“e”的语句应该放到score = int(temp)这句的前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 06:42:42 | 显示全部楼层
time = 2

while time > 1:
    temp = input("请输入你的分数:")
    if temp == "e":
        time = time - 2
        print("完结撒花")
    elif not temp.isdigit():
        print("输入错误!")
        break
    score = int(temp)
    if  0 <= score < 60:
        print("D")
    else:
        if  60 <= score < 80:
            print("C")
        else:
            if 90 <= score < 100:
                print("A")
            else:
                if score == 100:
                    print("S")
                else:
                    print("你搁这逗我玩呢?")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 07:47:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-18 07:57 编辑

input 是接受用户输入之后返回一个字符串类型的值
而 int是将数字符串转化为整型,若不是数字字符串就会报错,例如你想想,假设你input输入了个汉字,int如何把汉字转为整数?完全不可行,所以同理,python中就会导致报错

在你的代码基础上进行更改了下代码位置,其他没变:
time = 2

while time > 1:
    temp = input("请输入你的分数:")
    if temp == "e":
        time = time - 2
        print("完结撒花")
    else:
        score = int(temp)
        if  0 <= score < 60:
            print("D")
        else:
            if  60 <= score < 80:
                print("C")
            else:
                if 90 <= score < 100:
                    print("A")
                else:
                    if score == 100:
                        print("S")
                    else:
                        print("你搁这逗我玩呢?")

你到后面几课如果学到字符串方法和break,continue 和 elif 就可以更好解决这些问题了
例如字符串有个方法:isdigit()  如果字符串包含数字则返回 True,否则返回 False。作为判断条件,True后在将其转为int整型就不会报错
break 可以退出循环
continue 可以终止本次循环,开始下次循环
elif 只要前面同缩进下的elif 或 第一个 if 条件满足一个,之后的elif 都不会在进行判断
然后我们代码就可以这样改:
while 1:
    temp = input("请输入你的分数:")
    if temp.isdigit():  # 这边判断你输入的是不是纯数字字符串,若是继续执行代码
        score = int(temp)
        if  0 <= score < 60:
            print("D")
        elif  60 <= score < 80:
            print("C")
        elif 90 <= score < 100:
            print("A")
        elif score == 100:
            print("S")
        else:
            print("你搁这逗我玩呢?")
    elif temp == "e":
        print("完结撒花")
        break


如果帮助到你了,记得给个最佳哦~

  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 07:55:11 | 显示全部楼层
直接输入e就break掉循环不得了么?……

另外你的if else分支也不对 ..最好不要这么写,容易乱。

直接elif就好。
while 1:
    score = input("请输入你的分数,输入e退出:")
    if score == "e":
        print("退出当前程序")
        break
    else:
        score = int(score)
        if score == 100:
            print("S")
        elif score >= 90:
            print("A")
        elif score >=80:
            print("B")
        elif score >=70:
            print("C")   
        elif score >=60:
            print("D")
        else:
            print("不及格")
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 09:58:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-18 20:16:04 | 显示全部楼层
heidern0612 发表于 2020-5-18 07:55
直接输入e就break掉循环不得了么?……

另外你的if else分支也不对 ..最好不要这么写,容易乱。

elif还没学呢哈哈,这个是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 20:19:01 | 显示全部楼层
KevinHu 发表于 2020-5-18 06:40
所以判断是否等于“e”的语句应该放到score = int(temp)这句的前面

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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