鱼C论坛

 找回密码
 立即注册
查看: 210|回复: 5

[已解决]006讲动手题1 写了两组类似代码,为啥一个行一个不行

[复制链接]
发表于 2024-2-26 22:32:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 泼墨染笛香 于 2024-2-26 23:10 编辑

题目:
编写一个成绩评级程序,要求用户输入分数,程序返回对应的评级。程序可以不断接收输入,直至用户输入小写字母 e 结束程序。
分数 < 60,D。                        60 <= 分数 < 80,C。                80 <= 分数 < 90,B
90 <= 分数 < 100,A。        分数 == 100,S

我的代码:
#代码1 输入e报异常
  1. while(1):
  2.     score0 = input("请输入你的分数:")
  3.     score = int(score0)

  4.     if score < 60:
  5.         print("D")      
  6.     if 60 <= score < 80:
  7.         print("C")
  8.     if 80 <= score < 90:
  9.         print("B")
  10.     if 90 <= score < 100:
  11.         print("A")
  12.     if score == 100:
  13.         print("S")
  14.     if score0 == 'e':
  15.         break
复制代码



#代码2 输入e可以结束程序
  1. while(1):
  2.     score0 = input("请输入你的分数:")
  3.     if score0 == 'e':
  4.         break
  5.    
  6.     score = int(score0)
  7.     if score < 60:
  8.         print("D")      
  9.     if 60 <= score < 80:
  10.         print("C")
  11.     if 80 <= score < 90:
  12.         print("B")
  13.     if 90 <= score < 100:
  14.         print("A")
  15.     if score == 100:
  16.         print("S")
复制代码
最佳答案
2024-2-27 08:53:02
int()函数可以将一个带有数字的字符串转换为整型
int()函数在转换时,如果遇到不能转换的数据类型,将会抛出异常,因此执行int('e')时会报错

所以要么像代码2那样把检测到e时退出的语句放在int()前面
或者用try-except语句,如果在转换时遇到异常,就执行except方案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-27 08:53:02 | 显示全部楼层    本楼为最佳答案   
int()函数可以将一个带有数字的字符串转换为整型
int()函数在转换时,如果遇到不能转换的数据类型,将会抛出异常,因此执行int('e')时会报错

所以要么像代码2那样把检测到e时退出的语句放在int()前面
或者用try-except语句,如果在转换时遇到异常,就执行except方案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-2-26 22:32:16 | 显示全部楼层
假设你写的两组类似代码分别是:
代码1:
  1. score = input("请输入分数(输入e退出):")
  2. while score != 'e':
  3.     score = int(score)
  4.     if score < 60:
  5.         print("D")
  6.     elif score < 70:
  7.         print("C")
  8.     elif score < 80:
  9.         print("B")
  10.     else:
  11.         print("A")
  12.     score = input("请输入分数(输入e退出):")
复制代码


代码2:
  1. score = input("请输入分数(输入e退出):")
  2. while score != 'e':
  3.     score = int(score)
  4.     if score < 60:
  5.         print("D")
  6.     if score < 70:
  7.         print("C")
  8.     if score < 80:
  9.         print("B")
  10.     else:
  11.         print("A")
  12.     score = input("请输入分数(输入e退出):")
复制代码


这两段代码看似很相似,但实际上有一个细微的差别导致了不同的结果。

在代码1中,我们使用了`if-elif-else`语句来判断分数的等级。这意味着只有满足第一个条件时才会执行,如果满足了第一个条件,后面的条件将不会被判断。

而在代码2中,我们使用了独立的`if`语句来判断分数的等级。这样的话,每个`if`语句都会被依次判断和执行,导致可能出现多个等级的打印输出。

所以,当输入分数为80时,在代码1中会输出"A",而在代码2中会输出"B"和"A"。这就是两段代码行为不同的原因。

所以,如果你想要实现正确的分数评级程序,请使用代码1的写法。即使用`if-elif-else`语句来判断分数的等级,并确保只打印出其中一个等级。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-26 22:50:41 | 显示全部楼层
FishC 发表于 2024-2-26 22:32
假设你写的两组类似代码分别是:
代码1:

你这AI分析的一点用没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-26 22:50:54 | 显示全部楼层
泼墨染笛香 发表于 2024-02-26 22:50
你这AI分析的一点用没有


抱歉让您感到困惑。以下是我根据您提供的问题重新回答的解释:

根据您的描述,您写了两组类似的代码,但其中一个代码运行正常,而另一个却有问题。这可能是由于两组代码在逻辑上存在差异导致的。

首先,请确保您提供的两组代码是相同的,并且只有细微的差别。然后,我们可以比较两组代码以找出问题所在。

在对比两段代码时,我们可以看到,在代码1中,使用了`if-elif-else`语句来判断不同分数范围的情况,并且使用了缩进来表明条件的层次关系。而在代码2中,使用了多个独立的`if`语句,并且没有使用缩进来表明条件的层次关系。

这个差异可能会导致代码2在判断分数等级时出现问题。因为在代码2中,即使满足了第一个条件(分数小于60),后面的条件也会被继续判断和执行。这可能会导致错误的评级结果输出。

因此,我建议您使用代码1中的写法,即使用`if-elif-else`语句,并确保每个条件在正确的层次上判断。这样,您就可以得到正确的评级结果。

希望以上解释能解开您的困惑,如果还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-27 09:12:15 | 显示全部楼层
cmy.p 发表于 2024-2-27 08:53
int()函数可以将一个带有数字的字符串转换为整型
int()函数在转换时,如果遇到不能转换的数据类型,将会抛 ...

谢谢 懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表