2015-11-19 54 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

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

相關問題