2017-09-14 54 views
-2

所以我是新來的python,並剛剛開始創建一個基本程序,我將添加一個菜單系統,以幫助顯示我的進度和知識python在一個文件中,並幫助我更舒適的多功能,函數調用函數等...簡單的Python代碼重複一個else語句,我不知道爲什麼

我的程序正在重複一個else語句後,將使if語句正確的蜇。

請看:

def menuReturn(): 
returnAns = input("Would you like to return to the menu? [y/n] ") 

if returnAns.lower == "y": 
    print("Returning you to the menu") 
    print("") 
    print("") 
    print("") 
    menu() 

elif returnAns.lower == "n": 
    print("Exiting...") 

else: 
    print("Please repeat the answer") 
    menuReturn() 

def askName(): 
    name = input("What is your name? ") 
    print(name + "? Thats a beautiful name!") 
    menuReturn() 

def menu(menuAnswer): 
    if menuAnswer.lower == "askname": 
     print("Good Choice!") 
     askName() 

    else: 
     print("Please try again") 
     menu(menuAnswer) 

print("Welcome to the menu!") 
print("") 
print("Please enter a keyword from the following") 
print("")                  
#Add items here! 
print("-askName") 
menuAnswer = input("") 
menu(menuAnswer) 

我不得不添加一些不必要的缺口,我發佈了這個問題,所以我們對此深感抱歉

請給出一個簡單的答案,因爲我的編程「行話」是不能滿負荷

希望從你很快就會聽到, 約翰弗萊徹

回答

1

returnAns.lower返回ST戒指的內置功能較低<built-in method lower of str object at 0x*>,而不是調用它的結果。這就是爲什麼else似乎重複,if條件正確失敗。你想調用更低的功能:

returnAns.lower() # returns the lowercase returnAns 
0

@TheoretiCAL是正確的。您希望函數調用字符串變量爲returnAns.lower()而不是returnAns.lower

不同之處在於,str.lower()返回一個字符串,其中全部爲小寫字符,而str.lower不是有效的運算符根據python string dosumentation here:https://docs.python.org/2/library/string.html

相關問題