|
发表于 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("请输入你的分数:")
复制代码
|
|