| 
 | 
 
 
发表于 2023-4-8 19:43:45
|
显示全部楼层
 
 
 
 本帖最后由 andy大宝 于 2023-4-8 19:49 编辑  
 
首先,您需要知道为什么下列代码的运行结果是这样: 
 
显然,1 和 "1" 是有本质区别的,前者是指数学运算中的整数 1(即int),而后者是指 1 这个字符(即str),因此,返回结果是 False(错误的) 
再来看第一段代码的逻辑,其中出现了两个问题 
问题一:假设我们一开始输入的数字是 85,,那么就会出现下面这种情况: 
- 请输入你的分数:85
 
 - B
 
 - 请输入你的分数:85
 
 - Traceback (most recent call last):
 
 -   File "C:/Users/andy2008/Desktop/常用/新建文件夹/8.py", line 15, in <module>
 
 -     if 90 <= score < 100:
 
 - TypeError: '<=' not supported between instances of 'int' and 'str'
 
  复制代码 
这里的报错已经很明显了:85 和 "85" 根本就不是同一个东西,怎么能把字符当做数字进行比较呢? 
因此为了能够进行判断,代码应该修改成这样: 
- score = input("请输入你的分数:")
 
 - while score != 'e':
 
 -         score = int(score)
 
  
 
-         if score <= 60:
 
 -             print("D")
 
 -             score = input("请输入你的分数:")
 
 -             score = int(score)
 
 -         if 60 <= score < 80:
 
 -             print("C")
 
 -             score = input("请输入你的分数:")
 
 -             score = int(score)
 
 -         if 80 <= score < 90:
 
 -             print("B")
 
 -             score = input("请输入你的分数:")
 
 -             score = int(score)
 
 -         if 90 <= score < 100:
 
 -             print("A")
 
 -             score = input("请输入你的分数:")
 
 -             score = int(score)
 
 -         if score == 100:
 
 -             print("S")
 
 -             score = input("请输入你的分数:")
 
 -             score = int(score)
 
 
  复制代码 
问题二:当我们完成每一个数字的判断时,程序总会继续下一轮循环,因此对于 input 可以直接简写为:- 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("请输入你的分数:")
 
 
  复制代码 
 
 |   
 
 
 
 |