1

我正在尝试查找用户的性别。这是我的该功能的代码:

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 循环上还是整体逻辑问题。

谢谢你的帮助。

4

2 回答 2

1

一个问题在该部分中:

gender != "m" or "f"

"m" 和 "f" 在 Python 中都被视为 true,因此,由于 != 的绑定比 or 更紧密,这与

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

这总是正确的。

请尝试:

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

或者

while gender not in ("m", "f"):
于 2013-08-15T23:17:01.683 回答
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
于 2013-08-15T23:17:47.340 回答