|
发表于 2023-6-1 16:13:54
|
显示全部楼层
本楼为最佳答案
这个代码存在一些问题,具体如下:
1. 如果输入的不是数字,而是字母'e',虽然代码中有判断语句 `if x == 'e': break` ,可以退出循环,但由于 `x` 已经被转成了整型,所以条件始终为 `False`,判断结果会一直是输出'D'。
2. 当输入一个数时,按照代码逻辑,即使符合某个分数段的判断条件,其它分数段的判断也依然会执行,这样会导致在输出正确结果之前打印多个错误信息。
以下是修改后的代码:
- while True:
- x = input('输入你的分数:')
- if x == 'e':
- break
- else:
- x = int(x)
- if 0 <= x < 60:
- print('D')
- elif 60 <= x < 80:
- print('C')
- elif 80 <= x < 90:
- print('B')
- elif x == 100:
- print('S')
- else:
- print('A')
复制代码
主要变动如下:
1. 将转换输入值类型的操作放到第3行,这样当输入非数字时就会抛出异常,从而避免上面的问题。
2. 消除了嵌套的if-else结构,使用elif实现分数段的检测,并将每个段自立地进行判断和输出,从而保证只输出一个结果。
求最佳答案 |
|