李二蛋 发表于 2021-9-8 15:34:23

求求大神救救小白,python最新版P7作业

为啥这个会错:
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("请输入你的分数:")
标准答案比我的好在哪里?我这种思维对么?需要那些改进。
谢谢各位前辈引路{:9_221:}

德丽莎最可爱 发表于 2021-9-9 12:42:21

因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else里面才把numb设置成整数,也就是说这个循环一旦开始,优先判定temp是不是e,如果不是e再开始化为整数,开始下面的条件分支(我也是小白,暑假才学的)

德丽莎最可爱 发表于 2021-9-9 12:43:55

标准答案和我说的也是一个意思,也是先判断temp是否等于e,如果不等于,再把它化为整数

德丽莎最可爱 发表于 2021-9-9 12:49:03

说的再详细一点,因为你在第四行输入了这个numb = int(temp),也就是说,你已经把temp认定为一个数了,因为只有数才能化为整数,而你运行的时候输入一个e,e并不是数,就产生了问题

傻眼貓咪 发表于 2021-9-9 14:09:16

本帖最后由 傻眼貓咪 于 2021-9-9 17:37 编辑

{:5_99:}{:5_99:}{:5_99:}while True:
    score = input("請輸入你的分數:")
    if score == 'e': break
    else:
      if eval(score) < 60: print("D")
      elif eval(score) < 80: print("C")
      elif eval(score) < 90: print("B")
      else: print("A")
      break

niuniuniu666 发表于 2021-9-9 17:25:48

本帖最后由 niuniuniu666 于 2021-9-9 17:29 编辑

德丽莎最可爱 发表于 2021-9-9 12:42
因为你已经把numb设置成了整数(int),你输入一个e,肯定会报错,为什么第二个就对了呢,因为第二个在else ...
{:10_275:}这位大佬说的很对。如果按照原有代码顺序,先给temp赋值位字符串'e',之后对字符串'e'使用int()方法的话,就会报错,因为字符串没有int()方法。
对字符串使用int()方法就会报错。

德丽莎最可爱 发表于 2021-9-9 20:09:48

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

我就差不多得了,我才学了十几天,但是一直在钻研,做笔记,收获还是不少的

李二蛋 发表于 2021-9-13 11:10:07

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

如果我输入a,肯定都会报错滴吧
页: [1]
查看完整版本: 求求大神救救小白,python最新版P7作业