简单的python代码重复一个else语句,我不知道为什么

时间:2017-09-14 21:27:03

标签: python function if-statement iteration

所以我是python的新手,刚刚开始创建一个基本程序,我将添加一个菜单系统,以帮助在一个文件中显示我在python上的进度和知识,并帮助我更熟悉多个功能,函数调用函数等....

我的程序在输入使if语句正确的sting后重复else语句。

看看:

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)

我不得不为我添加一些不必要的缩进来发布这个问题,很遗憾

请给出一个简单的答案,因为我的节目“行话”不是满负荷

希望很快收到你的回复, 约翰弗莱彻

2 个答案:

答案 0 :(得分:1)

returnAns.lower返回以较低函数<built-in method lower of str object at 0x*>构建的字符串,而不是调用它的结果。这就是else似乎重复的原因,if条件正确失败。你想调用较低的函数:

returnAns.lower() # returns the lowercase returnAns

答案 1 :(得分:0)

@TheoretiCAL是对的。您希望对字符串变量的函数调用为returnAns.lower()而不是returnAns.lower

区别在于str.lower()返回一个包含全部小写字符的字符串,而str.lower根据python字符串dosumentation不是有效的运算符:https://docs.python.org/2/library/string.html