2013-10-23 2 views
0

저는 파이썬으로 무언가를 쓰고 있는데, 왜이 코드 섹션이 작동하지 않는지 이해할 수 없습니다.문자열을 사용자가 입력 한 문자로 설정하십시오.

m = 1 
f = 0 
gender_choice = False 

while gender_choice == False: 
    gender = input('Are you male or female? Type m for male or f for female. ') 
    if gender == m or gender == f: 
    print 
    gender_choice = True 
else: 
    print 
    print "Hey, this is a text based game. Read and follow bro." 

print gender 

나는 내가 입력 raw_input을 변경하지 않는 한,하지만, 루프가 계속됩니다 "m"또는 "F"에 문자열을 설정에 문제가 있음을 이해 생각한다. 또한 현재 작성된 것처럼 사용자가 숫자, m 또는 f 이외의 다른 값을 입력하면 문자열이 정의되지 않았 음을 알리는 오류가 발생합니다 (예 : "y"를 입력 한 경우).

+0

문자열과 숫자를 비교하고 있습니다. –

+0

현재 쓰여져있는 것처럼,'if' 문 다음에 줄이 들여 쓰기되어 있지 않으므로'IndentationError'가 있습니다. – roippi

+0

'm'은 변수이고 (코드에서'1'과 같습니다),'m''은 사용자에게 입력을 요구하는 문자열이며,'gender'라는 이름을 부여합니다. 사용자가 대답으로 'm'을 입력하면 if 문은'm '== 1'이면 당연히 사실이 될 수 없습니다. –

답변

1

먼저 들여 쓰기를 확인하십시오.

내가 당신이보고 싶은 것을 생각하는 방법입니다

m = 1 
f = 0 
gender_choice = False 

while gender_choice == False: 
    gender = input('Are you male or female? Type m for male or f for female. ') 
    if gender == m or gender == f: 
     print 
     gender_choice = True 
    else: 
     print 
     print "Hey, this is a text based game. Read and follow bro." 

print gender 

그런 다음 다른 문이 만 if 문이 때문에 순간에 항상 거짓으로 평가됩니다 때 실행 얻을 것이다 성별 == 1 또는 성별 == 0을 평가합니다. 사용자가 '동독 읽기 및 팔로우'를하지 않는 경우에만 발생합니다.

gender_choice = False 

while gender_choice == False: 
    gender = raw_input('Are you male or female? Type m for male or f for female. ') 
    if gender == "m": 
     print 
     gender_bool = 1 
     gender_choice = True 
    elif gender == "f": 
     print 
     gender_bool = 0 
     gender_choice = True 
    else: 
     print "\nHey, this is a text based game. Read and follow bro.\n" 

print gender 

그런 식으로 논리의 작품과 : 당신은 당신의 코드에서 M과 F 변수 나중에 필요하면 나도 몰라하지만 난 당신이 가정거야, 그래서 내가 무엇을 할 줄 것은 이것이다 m 변수와 f 변수가 나중의 논리에서 평가할 수있는 하나의 변수 (gender_bool)에 넣어 졌으면 if 문은 더 의미가있는 (imho) 것을 평가하고 raw_input을 사용하여 오류를 발생시키지 않으면 서 아무 것도 입력 할 수 없도록합니다. 내 OCD : P를 기쁘게하기 위해 몇 가지 \ n (줄 바꿈)을 추가했습니다.

+0

정확하게 상상 한 방식으로 작동합니다. 감사합니다. 나는 bool이 무엇을하는지 이해하지 못한다. 왜 나는 그것을 필요로 하는가? 나는 당분간 그것을 주석 처리했으며 코드는 코드없이 동일하게 작동한다. –

+0

@TylerDuncan 원래 코드에서 m = 1 f = 0 인 선의 대신에 gender_bool을 넣었습니다. 왜냐하면 이유 때문에 거기에 있다고 생각했기 때문입니다.하지만 나중에 텍스트 게임 로직에서 사용할 수 있습니다. char는 남성 또는 여성입니다. –

관련 문제