생활
파이썬 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 이렇게 해주셔야 합니다