You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:05:10