粪海蝇魔 发表于 2022-3-4 01:24:59

萌新求解006讲最后一题

标准答案
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("请输入你的分数:")

我的思路是这样
counts = 5

while counts > 0:
    temp = input("请输入你的分数: ")
    guess = int(temp)

    if guess < 60:
      print("D")
    if 60 <= guess < 80:
      print("C")
    if 80 <= guess < 90:
      print("B")
    if 90 <= guess < 100:
      print("A")
    if guess == 100:
      print("S")
   
    if guess == "e":
      counts = counts - 5
      
      

为什么我的思路输入e后无法运行呢?求大佬解答

wp231957 发表于 2022-3-4 06:57:08

if guess == "e":
      break

isdkz 发表于 2022-3-4 07:29:57

本帖最后由 isdkz 于 2022-3-4 07:43 编辑

因为 e 不是十进制整数,你用 int() 转化成整数就会出错,

e 是一个十六进制数,你用 int(temp, 16) 是可以转化成十进制整数的,

但是这样一来所有的输入都转成了 16 进制数,后面你就得用 16 进制数来判断了,

所以最好的做法是用字符串的 isdigit 方法判断字符串是否是十进制数,

如果是的话再用 int(temp) 转化成整数,然后对整数进行比较

故对你的代码修改如下:
counts = 5

while counts > 0:
    temp = input("请输入你的分数: ")
    if temp.isdigit():         # 用字符串的 isdigit 方法判断字符串是不是十进制整数
      guess = int(temp)

      if guess < 60:      # 分数评级的地方要跟转化成整数的地方缩进同一级,因为转化成整数才能跟整数比较
            print("D")
      if 60 <= guess < 80:
            print("C")
      if 80 <= guess < 90:
            print("B")
      if 90 <= guess < 100:
            print("A")
      if guess == 100:
            print("S")
   
    if temp == "e":                  # 这里得换成 temp,因为 guess 是转化成整数才定义的
      counts = counts - 5
      
      

python爱好者. 发表于 2022-3-4 08:43:50

这行的错:
score = int(score)

粪海蝇魔 发表于 2022-3-4 16:22:02

isdkz 发表于 2022-3-4 07:29
因为 e 不是十进制整数,你用 int() 转化成整数就会出错,

e 是一个十六进制数,你用 int(temp, 16) 是 ...

好的,明白了十分感谢

粪海蝇魔 发表于 2022-3-4 17:00:16

wp231957 发表于 2022-3-4 06:57
if guess == "e":
      break

感谢

粪海蝇魔 发表于 2022-3-4 17:00:55

python爱好者. 发表于 2022-3-4 08:43
这行的错:

感谢

python爱好者. 发表于 2022-3-4 17:01:36

粪海蝇魔 发表于 2022-3-4 17:00
感谢

不用谢
页: [1]
查看完整版本: 萌新求解006讲最后一题