04. 输入三个数,输出最大值
def get_num(prompt): while True: try: return float(input(prompt)) except ValueError: print("please input a num")
def get_max(num1,num2,num3): if num1>num2: max_num=num1 else: max_num=num2 if max_num>num3: return max_num else: return num3
if name=="main": num1=get_num("please input num1 ") num2 = get_num("please input num2 ") num3 = get_num("please input num3 ") print(f'最大值是{get_max(num1,num2,num3)}')
好的, 那我输入的是 3,5,9 输出结果是9.0 确不是9 我希望输出的值永远不要改变输入的值
ChatGPT 说:
非常棒的问题!你说的这个现象,确实是很多初学者容易忽略的:
🔍 问题分析:
你在 get_num() 中使用了:
python
复制
return float(input(prompt))
无论你输入的是 3、5、9,都会被转换为 float,所以输出是 9.0。
🎯 你的目标:
✅ 输入是整数,就输出整数;输入是小数,就保留小数。
❌ 不要一律强转成
float
✅ 解决方案:智能判断是 int 还是 float
我们可以改写 get_num() 函数,让它自动识别用户输入的是整数还是小数:
✅ 最推荐写法:
python
复制
def get_num(prompt):
while True:
s = input(prompt)
try:
if '.' in s:
return float(s)
else:
return int(s)
except ValueError:
print("❌ 输入无效,请输入一个数字!")