如何检查输入为浮点数或整数?优化Python代码支持浮点数输入
解决Python输入浮点数/整数的验证问题
原代码的核心问题在于使用x.isnumeric()验证输入,该方法仅能识别无小数点、无符号的纯数字字符串,无法处理浮点数格式(如"1.5")。以下是修改后的代码,支持整数和浮点数输入,同时处理无效输入的情况:
print("hello") mass_list = [] volume_list = [] # 获取质量输入 while True: x = input("Enter Mass: ") if x == "": break try: m = float(x) mass_list.append(m) except ValueError: print("请输入有效的数字(整数或浮点数)") # 获取体积输入,数量匹配质量列表 while len(volume_list) < len(mass_list): x = input("Enter volume: ") try: v = float(x) volume_list.append(v) except ValueError: print("请输入有效的数字(整数或浮点数)") print(mass_list) print(volume_list) # 计算密度列表 density = [mass_list[n]/volume_list[n] for n in range(len(mass_list))] print(density) # 计算平均密度并保留两位小数 avg_density = sum(density) / len(density) print("{0:.2f}".format(avg_density))
关键修改说明
- 输入验证逻辑:用
try-except捕获float()转换的ValueError,只要输入能被转为浮点数(包括整数格式的字符串),就视为有效输入,完美覆盖整数和浮点数场景 - 空输入处理:质量输入循环中,直接判断输入为空时跳出循环,逻辑更清晰
- 代码优化:密度计算改用列表推导式,平均密度计算用
sum()简化代码,比原代码更简洁高效
测试预期输入:
- 质量输入:10、15、20、空值
- 体积输入:1、1.5、2
- 最终输出平均密度为
10.00,符合预期
内容的提问来源于stack exchange,提问作者Ghaith J
相关产品推荐
相关产品推荐

