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

Python中isinstance判断的if语句异常:输入均进入else分支

问题分析

你的代码核心问题在于:Python的input()函数无论输入什么内容,返回的都是字符串类型。所以传给isThisAnInteger的参数永远是str,isinstance(isInt, int)自然永远为False,导致不管输入整数还是字符串,都会进入else分支。

解决方案

要实现“输入整数进入if分支,非整数进入else”的逻辑,需要先尝试把输入的字符串转换为整数,通过捕获转换时的异常来判断是否为有效整数。以下是修正后的代码:

def isThisAnInteger(input_str):
    try:
        # 尝试将输入字符串转为整数
        num = int(input_str)
        print("Top of If: statement")
        print(f"输入是整数: {num}")
        return num
    except ValueError:
        # 转换失败,说明不是有效整数
        print("Bottom of else: statement")
        print("输入不是有效整数")
        return None

iStart = isThisAnInteger(input("Enter the start of the range: "))
iEnd = isThisAnInteger(input("Enter the end of the range: "))
关键说明
  • 使用try-except捕获int()转换时的ValueError:如果输入能被转为整数,就进入try块(对应原逻辑的if分支);转换失败则进入except块(对应原逻辑的else分支)。
  • 原代码中isinstance的判断逻辑不适用,因为input()返回的始终是字符串,必须先做类型转换再判断有效性。

内容的提问来源于stack exchange,提问作者BigDog169

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:38:07