2017-09-14 86 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

相关问题