Python调用.isdigit()报AttributeError:'int'对象无该属性的解决咨询
解决AttributeError: 'int' object has no attribute 'isdigit'的问题
先给你把这个错误掰明白:
这个报错的意思很直接——你试图在一个整数(int)对象上调用isdigit()方法,但这个方法是字符串(str)类型独有的,整数根本没有这个属性,所以Python就给你抛出了这个错误。
看你贴的代码,正常运行其实不会触发这个问题啊——毕竟你一开始用input()拿到的是字符串,先调用number.isdigit()判断,只有通过判断后才把它转成int。会不会是你调试的时候不小心改了代码逻辑,比如提前把number转成int了,然后又去调用isdigit()?
不管怎样,给你两个解决方案,按需选:
方案一:用更健壮的try-except判断(推荐)
isdigit()有个局限:它识别不了带正负号的数字(比如"-50"或者"+120"会被判定为非数字字符串)。用try-except直接尝试转换的方式更通用,能覆盖所有合法整数输入:
def digi(): number_input = input("Choose a number: ") try: number = int(number_input) print("number is greater than 100 =", number > 100) except ValueError: print("Input must be an integer.") digi()
这个逻辑是:尝试把输入的字符串转成int,如果成功就继续处理;如果转换失败(比如输入了字母、符号),就触发ValueError,然后提示用户输入错误。
方案二:坚持用isdigit()(适合只允许正整数的场景)
如果你只需要用户输入正整数,那可以继续用isdigit(),但要确保只有字符串类型的变量才调用这个方法,别在转成int之后碰它:
def digi(): number = input("Choose a number: ") if number.isdigit(): number = int(number) print("number is greater than 100 =", number > 100) else: print("Input must be a positive integer (no signs or letters).") digi()
核心记住一点:isdigit()是字符串的方法,整数没有这个属性,别搞混对象类型就行。
内容的提问来源于stack exchange,提问作者user9126689
相关产品推荐
相关产品推荐

