我正在尝试查找用户的性别。这是我的函数代码:
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循环有关,或者它是否是一个整体逻辑问题。
感谢您的帮助。
答案 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