ffcat 发表于 2020-7-2 17:33:53

初学者python代码问题

求教第六讲课后题最后一题:

"""
0. 编写一个成绩评级程序,要求用户输入分数,程序返回对应的评级。
分数 < 60,D
60 <= 分数 < 80,C
80 <= 分数 < 90,B
90 <= 分数 < 100,A
分数 == 100,S

程序可以不断接收输入,直至用户输入小写字母 e 结束程序

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



但有个问题:

为什么我在尝试将 score = int(score) 加在while 前时,输入大于60的数字就会报错?



Twilight6 发表于 2020-7-2 17:43:54

本帖最后由 Twilight6 于 2020-7-2 17:50 编辑



int 函数是将其他类型的值转为整型

input 函数是接受用户输入,并将其值转化为字符串

字符串的 '1' 和整型的 1 是不能进行比较的~ 当你把 score = int(score) 移动到循环前面

会导致你后续input的字符串没办法转为整型,导致后来你的 int 和 str 字符串进行比较报错

因为两种不同类型的值不能进行比较,也就是字符串和 整数不能直接进行逻辑比较


SHRS23 发表于 2020-7-2 17:44:40

你修改后的程序只有在第一次运行的时候会执行 score = int(score)
然后就会进入while循环,在循环中不再包括score = int(score)
这样在第二次输入比较的时候就会出现score是str字符串类型,和60 int整数类型比较
这时候会有TypeError异常

ffcat 发表于 2020-7-2 19:36:53

感谢楼上两位大佬指教{:5_106:}
页: [1]
查看完整版本: 初学者python代码问题