파이썬 if,else,elif

ㅜㅜ

elif도 써보고 else도 써봤는데 if만 인식하는 건지

밑에 조건이 잘못된건지.. 남자로만 인식을 하네요..

Elif A== 2 or 4:

A='여자'

이렇게 했었는데 ㅜㅜ뭐가ㅠ잘못일까요?

11개의 답변이 있어요!

  • 안녕하세요

    if문의 조건절이 잘못됐습니다.

    if A == 1 or 3 : // OR 구문 변경

    =>

    if (A == 1 or A == 3) :

    OR 구문 뒤에서 참 거짓을 판명할 수 있는 수식을 넣어주셔야 합니다.

    3은 무조건 참이네요

    그리고 이름에 늑음은 패드립 같은데..

    테스트 할때도 저렇게 하시면 어카나요..ㅋㅋ 뜨끔?

    그럼 수고하세요

  • if 조건문 사용을 수정해 봤습니다.

    [수정 소스코드]

    # -- coding: utf-8 --

    """

    Created on Sun May 23 23:18:42 2021

    @author: raven90

    """

    def BIR(name, jumin):

    A = jumin[7]

    if A == 1 or A == 3 :

    A = '남자'

    else:

    A = '여자'

    print(name + ',' '당신의 성별은 ', A+'입니다')

    BIR('늑음', '690704-2000000')

    [실행결과 캡쳐]

  • if 조건식이 잘못됐습니다. 아래처럼 변경하면 정상적으로 작동합니다.

    if A=='1' or '3':

    ----->> if A=='1' or A=='3':

    프로그래밍에서 숫자 0 = false, 0 제외한 모든 숫자 또는 문자 = true를 의미합니다.

    IF A =='1' or '3' 에서 '3'부분이 항상 참이기 때문에 else로 넘어가지 못합니다.

    비슷한 예 로 다음과 같은 상황이 있습니다.

    IF A=='1' or 3: = > 항상 참

    IF A=='1' or 0: => A값에 따라 다름

    IF A=='1' or '0': => 항상 참( 숫자 0이 아닌, 문자0이기 때문)

  • 안녕하세요.

    아래와 같이 수정하시면 됩니다.

    def BIR(name, jumin): A = jumin[7] if A == 1 or A == 3: A = '남자' else: A = '여자' print(name+"," "당신의 성별은", A+ "입니다.") BIR("늑음","690704-2000000")

    elif or else의 문제가 아니라 if의 조건문이 문제입니다.

    if A==1 or 3 이라고 하면 or를 기준으로 왼쪽 또는 오른쪽에 TRUE가 있으면 만족을 하는데, 3은 항상 TRUE입니다. 따라서 항상 실행이 되는 것입니다. A==1 or A==3이라고 하시면 됩니다.

  • if 조건식 or 조건식:

    인데 A == 1 or A == 3:

    이렇게 작성을 해야합니다.

    A 가 1 또는 3 이라면 차라리 홀수 짝수로 구분해도 됩니다.

    아니면 if A == 1:

    elif A == 3:

    else:

    이렇게 작성해도 될듯합니다.

    파이썬이 아니더라도

    모든언어에서 기초가 되는 부분이라서

    명확히 이해하고 코딩을 하시는걸 추천드립니다

  • 위의 코딩에서 if 문에서 계속 남자만 나오는 이유는 A 변수에 입력받은 값인 jumin[7]의 값이 str 타입이기 때문입니다.

    if 문 속의 조건문에서 int형(정수형)으로 판별하는 조건을 넣었기 때문에 입력값을 받고 그 값을 int형(정수형)으로 타입을 변환해주어야 조건이 제대로 판별되어 if문이 제대로 작동하게 됩니다.

    밑의 코드는 타입을 변환하고 if elseif문으로 분기점을 나누어 작동하도록 수정한 코드입니다.

    def BIR(name, jumin):

    A = int(jumin[7])

    if A == 1:

    A = '남자'

    elif A == 3:

    A = '남자'

    else:

    A = '여자'

    print(name+',' '당신의 성별은',A+'입니다')

    BIR('늑음','690704-5000000')

  • OR 비교가 잘못되었습니다.

    A == 1 or A == 3으로 고치셔야 됩니다.

    A == 1 or 3 이면

    A == (1 or 3) A == (true)가 됩니다.

    def BIR(name, jumin): A = jumin[7] if A == 1 or A == 3: A = '남자' else : A = '여자' print(name + ',' '당신의 성별은', A + '입니다') BIR('늑음', '690704-2000000');

  • 파이쎤에서 if문에서 두가지 이상의 조건을 체크 하려고 하시는군요

    초보자가 많이 하기 쉬운 실수를 하셨습니다

    A가 1또는 3을 체크하려면

    식 or 식 이 되어야 합니다

    if문에서

    A==1 or A==3

    이렇게 체크 하셔야 합니다

    A==1 or 3 에서 3은 항상 참이 되므로

    어떤값을 넣어도 참이 되게 됩니다

  • 안녕하세요.

    if 조건이 잘못 되었습니다.

    "if A == 1 or 3" ==> "if A == 1 or A ==3"

    def BIR(name, jumin): A = jumin[7] if A == 1 or A == 3: A = '남자' else: A = '여자' print(name, ',', '당신의 성별은', A, '입니다') BIR('늑음', '690704-2000000')

  • 1. if문의 or 사용시 두번째 조건에도 대상을 정의해줘야 합니다.

    2. jumin[7]의 데이터 타입은 String 입니다. 문자로 체크해야 조건을 부합시킬수 있습니다.

    def BIR(name, jumin): A = jumin[7] print(type(A)) if A == '1' or A == '3': A = '남자' else: A = '여자' print(name + ',당신의 성별은', A+'입니다') BIR('늑음', '690704-1000000')

    <class 'str'> 늑음,당신의 성별은 남자입니다

  • elif도 써보고 else도 써봤는데 if만 인식하는 건지

    밑에 조건이 잘못된건지.. 남자로만 인식을 하네요..

    Elif A== 2 or 4:

    A='여자'

    ===> 비교문이 잘못된것 같은데요

    if a==1 or 3: 비교문은 무조건 참이 나올수밖에 없습니다

    a==1 or a==3 이렇게 해주셔야 합니다