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
相关产品推荐
相关产品推荐

