Python 属性错误:';int';对象没有属性';isdigit';从用户输入

Python 属性错误:';int';对象没有属性';isdigit';从用户输入,python,ide,Python,Ide,我正在默认IDE中运行python 3 这是我的密码: def print\: f=打开(“height.txt”、“r”) content=f.read() 打印(内容) f、 关闭() main() def main(): name=str(输入(“你叫什么名字?”)) data=int(输入(“你有多高?(厘米)”) 如果data.isdigit()==True: 打印(“\n”) elif data.isdigit()==False: 打印(“必须是数字!”) main() #a+为只读

我正在默认IDE中运行python 3

这是我的密码:

def print\:
f=打开(“height.txt”、“r”)
content=f.read()
打印(内容)
f、 关闭()
main()
def main():
name=str(输入(“你叫什么名字?”))
data=int(输入(“你有多高?(厘米)”)
如果data.isdigit()==True:
打印(“\n”)
elif data.isdigit()==False:
打印(“必须是数字!”)
main()
#a+为只读模式
f=打开(“height.txt”,“a+”)
f、 写(姓名)
f、 写入(str(数据))
f、 写(“cm”)
f、 关闭()
数据_1=str(输入(“1=View Contents.Other=Quit”))
如果数据_1==“1”:
打印()
其他:
打印(“退出”)
main()

问题在于isdigit对字符串进行操作;但是,您已经将数据对象强制转换为int:data=int(输入(“您有多高?(CM)”)。如果要使用isdigit函数,则应将数据设置为字符串。data=str(input(“…”)

您试图在已转换为int的数据上检查
isdigit()
。将其作为
str读入
str
然后在检查它是数字后转换:

def main():     
    name = str(input("What is your name?"))
    data = str(input("How tall are you? (CM)"))

    while !data.isdigit():
        print("Must be a number!")
        data = str(input("How tall are you? (CM)"))
        print("\n")

    data = int(data)
    print("\n")

此循环将继续请求int,直到提供了一个int,然后将其转换为int

我的错误是-if data.isdigit()==True:AttributeError:'int'对象没有属性'isdigit'似乎此程序可能存在递归问题。如果数据不是int,则调用main函数,然后写入height.txt。我想你想在调用main之后终止函数。。。所以打印(“必须是一个数字”)main()返回好的,我明白了!非常感谢:)好的,我明白了。所以我需要将它设置为一个字符串来检查它是否是一个数字。非常感谢您的回复。没错,
int
没有
isdigit()
方法,它必须是字符串。如果不先检查,尝试将字符串强制转换为
int
,可能会引发异常。我现在明白了!非常感谢!