Python求三个数最大值if语句首条件成立仍返回错误结果问题
错误原因
- 输入类型错误:
input()函数返回的默认是字符串类型,你直接对字符串做大小比较,实际比较的是字符的Unicode编码顺序,不是数值的大小,这是导致判断错误的核心原因。
举个对应你异常场景的例子:如果输入的三个值分别是12、3、4,程序拿到的是字符串"12"、"3"、"4",字符串比较时会逐个字符比对:"12"和"3"比第一个字符,"1"的编码小于"3",所以"12" > "3"的结果是False,你以为成立的首个if判断实际根本没触发,之后elif判断"3" > "12"为真,但"3" > "4"为假,最终走到else分支返回第三个值,和你遇到的异常完全吻合。 - 冗余参数:你定义函数时声明了
x,y,z三个参数,但函数内部又用input的返回值覆盖了这三个参数,传入的参数完全没有作用,属于无用代码。 - 格式小错误:第一个
return的拼接字符串缺了空格,输出时会出现12is the biggest number这种连在一起的错误格式。
修复代码
def max_num(): # 需要支持小数就把int换成float x = int(input("num_1: ")) y = int(input("num_2: ")) z = int(input("num_3: ")) if x > y and x > z: return f"{x} is the biggest number" elif y > x and y > z: return f"{y} is the biggest number" else: return f"{z} is the biggest number" print(max_num())
内容的提问来源于stack exchange,提问作者Shawal Anwar Chowdhury
相关产品推荐
相关产品推荐

