인프런 커뮤니티 질문&답변

jjaney님의 프로필 이미지
jjaney

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

파이썬 입문 강의 _ python-question2-web 중 질문입니다.

작성

·

251

0

안녕하세요 선생님,

좋은 강의 늘 감사드립니다.

문제를 풀며 빠르게 익숙해지는 파이썬 기본 : 문자열, 리스트, 조건문 활용 중 질문입니다.

20번

1151.png

저는 문자열 인덱스와 if문, int ( ) 타입 변환을 이용하여 다음과 같이 작성했고, 정답이 출력 되는 것을 확인했습니다.

1152.png그리고 위 코드 중 변수 gender을 int 타입으로 변환하지 않는 경우를 생각해보았고, 오류가 날 것이라고 생각했습니다. 하지만 아래와 같이 정답은 출력 되지 않았지만, 코드 오류가 나지는 않았습니다.

1154.png그 이유를 다음과 같이 작성해봤는데, 제 생각이 맞는지 확실치 않아 질문 드리게 되었습니다.

  • int 타입 변환을 해주지 않았으므로 gender은 string 타입이다. string 타입인 gender은 1 , 3 과 같은 int 타입과 비교 자체가 불가 하므로 if-else문에서 if가 아닌 else문으로 넘어가게 되고, 언제나 '여자입니다'가 출력 된다.

    (숫자가 아닌, 900326-&063210처럼 특수 문자를 넣어도 '여자입니다'가 출력된다)

답변 1

0

안녕하세요. 답변 도우미입니다.

가능하시면 화면을 캡쳐하시기보다는, 저희도 테스트를 하려면 텍스트가 훨씬 좋거든요. 그래서 텍스트로 작성해주시면 훨씬 도움이 될 것 같아요 ㅎㅎ 다음 설명이 참고가 되면 좋을 것 같습니다.

파이썬에서 문자열과 숫자를 비교하면 항상 False가 반환됩니다.

gender = "1"
if gender == 1:
    print("남자입니다.")
else:
    print("여자입니다.")

위 코드에서 gender는 문자열 "1"이므로 gender == 1의 결과는 False입니다. 그러므로 else문이 실행되어 "여자입니다."가 출력됩니다. int 타입 변환을 해주지 않아 문자열 gender가 숫자와 비교될 때 항상 False가 반환되므로, else문의 "여자입니다."가 출력되는 것입니다.

감사합니다.

jjaney님의 프로필 이미지
jjaney

작성한 질문수

질문하기