三个草莓 发表于 前天 17:06

为什么有bug啊

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")


这是第五讲的一个作业题,我看着这段代码挺正常的啊,为什么答案说有bug啊(答案我看得懂,答案看起来没问题,只是单纯觉得这个代码也没有问题,问题在哪里?)

FishC 发表于 前天 17:07

关于第五讲作业代码的Bug解释

你的代码逻辑本身没有问题,但存在一个关键的类型处理问题:
input() 获取的是字符串类型,而字符串比较遵循字典序(逐字符ASCII码比较),不是数值比较

具体问题演示:
输入"10"和"2"时:
o 字符串比较:"10" 的第一个字符 '1' 的ASCII码(49)小于 '2'(50)→ 判定为 num1 < num2
o 实际数值:10 > 2

修正方法:将字符串转为整数
在比较前添加类型转换:
python
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))


完整修正代码:
python
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

if num1 < num2:
    print("第一个数比第二个数小!")
elif num1 > num2:
    print("第一个数比第二个数大!")
else:
    print("第一个数和第二个数一样大!")


额外优化建议:
1. 使用 elif 替代多个 if 提升效率
2. 添加异常处理(后续课程会学到):
python
try:
    num1 = int(input("请输入第一个整数:"))
    num2 = int(input("请输入第二个整数:"))
    # 比较代码...
except ValueError:
    print("输入错误,请确保输入的是整数!")


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

player-none 发表于 前天 17:46

输入的是字符串,字符串比较规则有点不同,“1”会被判断为大于“10”。

建议改成int(input())。

求最佳

三个草莓 发表于 前天 18:28

player-none 发表于 2025-6-1 17:46
输入的是字符串,字符串比较规则有点不同,“1”会被判断为大于“10”。

建议改成int(input())。


int(input())就可以直接实现input向int的转换了嘛

player-none 发表于 前天 18:36

三个草莓 发表于 2025-6-1 18:28
int(input())就可以直接实现input向int的转换了嘛

input是函数,它被调用之后返回一个字符串“str”类型,int是获取这个字符串对应的整数

所以没有“input被转换”这一说法

三个草莓 发表于 前天 19:45

player-none 发表于 2025-6-1 18:36
input是函数,它被调用之后返回一个字符串“str”类型,int是获取这个字符串对应的整数

所以没有“inp ...

了解了,谢谢你!
页: [1]
查看完整版本: 为什么有bug啊