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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:30:26