2013-08-15 4 views
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 루프와 경우 또는이 전체 로직 문제가 있는지 알아 내기 위해 노력했습니다.

도움 주셔서 감사합니다.

+0

이 같은 아마 시도 대신에 뭔가 :

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

또는 동등 : 따라서

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

, 모두 모두, 나는에 전체 기능을 수정 제안 귀하의 문제는,이 문제를 해결하십시오. –

답변

1

한 가지 문제는 섹션에 있습니다!

gender != "m" or "f" 

"m"와 "F"모두 파이썬에서 참으로 취급 등, 등 =이보다 긴밀하게 결합 혹은이 과정이 동일하다

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

항상 사실입니다.

대신보십시오 :

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

또는

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

문제는 문자 확인과 함께합니다. 현재 두 진술 gender != 'm'"f"을 확인하고 있으며 두 번째 진술은 비어 있지 않으므로 항상 true입니다. 답변의 해결 아래의 경우

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 
관련 문제