Python自定义max_num函数接收input输入时无法正确返回最大值
问题原因
Python内置的input()函数接收的所有用户输入,默认返回值都是字符串类型,不会自动转换为整数、浮点数这类数值类型。
你的代码直接把input()拿到的三个字符串传入max_num函数,此时函数内执行的>=比较遵循字符串比较规则:逐位对比每个字符的ASCII编码值,和数值大小的比较逻辑完全不同,自然无法得到正确的最大值结果。
举个典型错误场景:如果你依次输入10、2、3,字符串比较逻辑下'10' < '2'(因为首字符'1'的ASCII码小于'2'的ASCII码),最终会错误返回2作为最大值。
修复方案
接收用户输入后,显式将输入值转换为数值类型即可:
- 仅需要支持整数输入时,用
int()做类型转换 - 需要兼容小数输入时,用
float()做类型转换
修复后可正常运行的代码如下:
def max_num(num1, num2, num3): if num1 >= num2 and num1 >= num3: return num1 elif num2 >= num1 and num2 >= num3: return num2 else: return num3 # 此处以int整数转换为例,需要支持小数可将int替换为float first = int(input('first number ')) second = int(input('second number ')) third = int(input('third number ')) print(max_num(first, second, third))
内容的提问来源于stack exchange,提问作者Youssef Elsaid hassan
相关产品推荐
相关产品推荐

