鱼C论坛

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

[已解决]求求大神救救小白,python最新版P7作业

[复制链接]
发表于 2021-9-8 15:34:23 | 显示全部楼层 |阅读模式

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

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

x
为啥这个会错:
while True :

    temp = input("请输入你的分数")
    numb = int(temp)
    if temp == 'e':
        break
    else:
        if numb < 60:
            print("D")
        else:
            if 60 <= numb < 80:
                print("C")
            else:
                if 80 <= numb <90:
                    print("B")
                else :
                    if 90 <= numb <100:
                        print("A")
                    else:
                        print("S")
   
为啥这个就对:
while True :

    temp = input("请输入你的分数")
    if temp == 'e':
        break
    else:
        numb = int(temp)
        if numb < 60:
            print("D")
        else:
            if 60 <= numb < 80:
                print("C")
            else:
                if 80 <= numb <90:
                    print("B")
                else :
                    if 90 <= numb <100:
                        print("A")
                    else:
                        print("S")

这个是标准答案
score = input("请输入你的分数:")

while score != 'e':
    score = int(score)

    if score < 60:
        print("D")

    if 60 <= score < 80:
        print("C")

    if 80 <= score < 90:
        print("B")

    if 90 <= score < 100:
        print("A")

    if score == 100:
        print("S")

    score = input("请输入你的分数:")
标准答案比我的好在哪里?我这种思维对么?需要那些改进。
谢谢各位前辈引路

最佳答案
2021-9-9 12:42:21
因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else里面才把numb设置成整数,也就是说这个循环一旦开始,优先判定temp是不是e,如果不是e再开始化为整数,开始下面的条件分支(我也是小白,暑假才学的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-9 12:42:21 | 显示全部楼层    本楼为最佳答案   
因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else里面才把numb设置成整数,也就是说这个循环一旦开始,优先判定temp是不是e,如果不是e再开始化为整数,开始下面的条件分支(我也是小白,暑假才学的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-9 12:43:55 | 显示全部楼层
标准答案和我说的也是一个意思,也是先判断temp是否等于e,如果不等于,再把它化为整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-9 12:49:03 | 显示全部楼层
说的再详细一点,因为你在第四行输入了这个numb = int(temp),也就是说,你已经把temp认定为一个数了,因为只有数才能化为整数,而你运行的时候输入一个e,e并不是数,就产生了问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-9 14:09:16 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-9 17:37 编辑

  1. while True:
  2.     score = input("請輸入你的分數:")
  3.     if score == 'e': break
  4.     else:
  5.         if eval(score) < 60: print("D")
  6.         elif eval(score) < 80: print("C")
  7.         elif eval(score) < 90: print("B")
  8.         else: print("A")
  9.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-9 17:25:48 | 显示全部楼层
本帖最后由 niuniuniu666 于 2021-9-9 17:29 编辑
德丽莎最可爱 发表于 2021-9-9 12:42
因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else ...

这位大佬说的很对。如果按照原有代码顺序,先给temp赋值位字符串'e',之后对字符串'e'使用int()方法的话,就会报错,因为字符串没有int()方法。
对字符串使用int()方法就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-9 20:09:48 | 显示全部楼层
niuniuniu666 发表于 2021-9-9 17:25
这位大佬说的很对。如果按照原有代码顺序,先给temp赋值位字符串'e',之后对字符串'e'使用int( ...

我就差不多得了,我才学了十几天,但是一直在钻研,做笔记,收获还是不少的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-13 11:10:07 | 显示全部楼层
德丽莎最可爱 发表于 2021-9-9 12:42
因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else ...

如果我输入a,肯定都会报错滴吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 07:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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