Python入门问题:如何处理用户输入浮点数的错误情况?
解决输入正整数时的浮点数处理问题
你的代码存在核心问题:用type(a) == float判断完全无效——因为不管用户输入的是整数(比如"5")还是浮点数(比如"5.5"),转成float后类型都是float,这会导致程序一直触发"Floats don't count"的提示,永远无法正常执行下去。
正确的思路应该是:判断输入的数值是否是整数(包括5.0这种形式的浮点数),同时还要确保它是正整数。另外还要考虑用户输入非数字(比如字母、符号)的情况,避免程序报错。
方法一:先验证输入字符串格式
先接收原始输入字符串,检查是否是纯整数格式(没有小数点,或者小数点后全是0),再转成整数:
while True: # 处理第一个输入 while True: input_a = input("Enter a positive integer: ") # 检查是否是整数格式(允许带.0的情况) if input_a.isdigit(): a = int(input_a) break elif '.' in input_a: parts = input_a.split('.') if len(parts) == 2 and parts[0].isdigit() and parts[1] == '0': a = int(parts[0]) break else: print("请输入正整数,浮点数(非整数形式)不允许,请重新输入。") else: print("请输入有效的正整数,请重新输入。") # 处理第二个输入 while True: input_b = input("Enter another positive integer: ") if input_b.isdigit(): b = int(input_b) break elif '.' in input_b: parts = input_b.split('.') if len(parts) == 2 and parts[0].isdigit() and parts[1] == '0': b = int(parts[0]) break else: print("请输入正整数,浮点数(非整数形式)不允许,请重新输入。") else: print("请输入有效的正整数,请重新输入。") # 检查是否为正整数 if a > 0 and b > 0: break else: print("输入的不是正整数,请重新输入。") print(f"你输入的两个正整数是:{a} 和 {b}")
方法二:转成float后判断是否为整数
利用float的is_integer()方法,判断数值是否是整数(包括5.0这种情况),同时捕获非数字输入的异常:
while True: try: a = float(input("Enter a positive integer: ")) b = float(input("Enter another positive integer: ")) # 判断是否为整数(包括5.0) if not (a.is_integer() and b.is_integer()): print("请输入正整数,浮点数(非整数形式)不允许,请重新输入。") continue # 转成整数并检查是否为正 a_int = int(a) b_int = int(b) if a_int > 0 and b_int > 0: a, b = a_int, b_int break else: print("输入的不是正整数,请重新输入。") except ValueError: print("请输入有效的数字,请重新输入。") print(f"你输入的两个正整数是:{a} 和 {b}")
这两种方法都能实现你的需求:
- 拒绝非整数形式的浮点数(比如5.5)
- 允许输入5.0这种形式的数值并自动转成整数
- 处理非数字输入的情况,避免程序崩溃
- 确保最终得到的是正整数
内容的提问来源于stack exchange,提问作者Dog Developer
相关产品推荐
相关产品推荐

