2015-11-19 152 views
0

我在默认的IDE中运行python 3。AttributeError:'int'对象没有属性来自用户输入的'isdigit'

这里是我的代码:

def print_(): 
    f = open("height.txt","r") 
    content = f.read() 
    print(content) 
    f.close() 
    main() 


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

    if data.isdigit() == True: 
     print("\n") 

    elif data.isdigit() == False: 
     print("Must be a number!") 
     main() 


    # a+ is read only mode 
    f = open("height.txt","a+") 
    f.write(name) 
    f.write(str(data)) 
    f.write("cm, ") 
    f.close() 

    data_1 = str(input("1 = View Contents. Other = Quit")) 
    if data_1 == '1': 
     print_() 

    else: 
     print("Exiting") 

main() 
+0

我的错误是 - if data.isdigit()== True: AttributeError:'int'object has no attribute'isdigit' –

+0

似乎这个程序可能会遇到递归问题。如果数据不是int,然后写入height.txt,则调用main函数。我认为你想在main调用之后杀掉函数...所以。打印(“必须是数字”)main()返回 – mattsap

+0

好吧,我明白了!非常感谢你:) –

回答

1

您试图检查isdigit()您已经转换为int的数据。在阅读它作为一个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

+0

好的,我明白了。所以我需要将它设置为一个字符串来检查它是否是一个数字。非常感谢您的回复。 –

+0

确切地说,'int'没有'isdigit()'方法,它必须是一个字符串。如果你没有先检查,试图将一个字符串作为“int”来抛出异常。 GLHF bro – Will

+0

是的,再次感谢人! –

0

的问题是ISDIGIT一个字符串操作;但是你已经将数据对象转换为int了:data = int(input(“你有多高?(CM)”))。如果你想使用isdigit函数,你应该让数据成为一个字符串。 data = str(input(“...”))

+0

好吧,我明白了!非常感谢你! –