陷入函数中的while循环(python)

时间:2013-08-15 23:12:46

标签: python-3.x while-loop

我正在尝试查找用户的性别。这是我的函数代码:

def getGender():
"""figure out the gender of the person."""
gender = input("Are you male or female? (m/f)").lower()
while gender != "m" or "f":
    gender = input("Are you male or female? (m/f)").lower()

return gender

当我运行它时,即使输入有效的响应,我仍然会陷入循环中。 这是主要代码:

def main():
    welcome()
    getGender()
    if gender == "m":
        maleCalc()
        maleFinding()
    else:
        femaleCalc()
        femFinding()
    disclaimer()

#run the program
main()
input("\n\nPress the enter key to exit.")

我一直试图弄清楚问题是否与我的函数的while循环有关,或者它是否是一个整体逻辑问题。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

一个问题出在以下部分:

gender != "m" or "f"

在Python中,“m”和“f”都被视为true,因此,因为!=比or更紧密地绑定,这与

相同
(gender != "m") or "f"

总是如此。

尝试改为:

while gender != "m" or gender != "f":

while gender not in ("m", "f"):

答案 1 :(得分:1)

问题在于检查角色。您目前正在检查两个语句gender != 'm'"f",显然第二个语句始终为真,因为它不是空的。尝试也许这样的事情:

while (gender != "m") and (gender != "f"):

或同等地:

while gender not in ["m", "f"]:

因此,总而言之,我建议将整个功能修改为:

def getGender():
    """figure out the gender of the person."""
    gender = ""
    while gender not in ["m", "f"]:
        gender = input("Are you male or female? (m/f)").lower()

    return gender