You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python三角形校验程序小于号比较逻辑异常问题排查

问题根因排查
  • 核心问题是输入获取的边长为字符串类型,未转换为数值类型,所有运算和比较都是字符串规则而非数值规则:
    1. Python中input()函数的返回值默认是字符串类型,直接执行a+b时做的是字符串拼接操作,不是数值加法:比如输入3和4,a+b得到的是字符串'34'而非数值7
    2. 字符串的大小比较是按字符的ASCII码逐位对比:比如'5' < '34'对比第一位的ASCII码,5的ASCII码大于3,直接返回False,符合3、4、5输入校验失败的现象
    3. 全相同的数字比如三个5能通过的原因:三个字符串都是'5',拼接后是'55',逐位对比到第一位相同后,长度更短的字符串判定为更小,所以'5' < '55'会返回True,刚好巧合符合判断条件。
修复方案

只需要在获取输入后,把值转换为数值类型即可,需要整数边长用int(),需要支持小数边长用float(),修复后代码如下:

a = int(input('a= '))
b = int(input('b= '))
c = int(input('c= '))

print(c < (a+b))
print(b < (a+c))
print(a < (b+c))

print(a)
print(b)
print(c)

while not(c < (a+b) and b < (a+c) and a < (b+c)):
    print('not a triangle.')
    a = int(input('a= '))
    b = int(input('b= '))
    c = int(input('c= '))

print('Loaded triangle a= {0}, b= {1}, c= {2}.'.format(a,b,c))

内容的提问来源于stack exchange,提问作者bigaminn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:36:01