파이썬/파이썬 기초 코딩
[조건문] 조건이 겹치는 경우
토마토농장농장
2022. 2. 14. 16:42
조건문을 사용할 때,
조건이 애매하게 교집합이 되는 경우가 있다.
예를 들어, 숫자를 입력하면 4의 배수인지 5의 배수인지 판별해준다고 하자.
20의 경우, 4의 배수라고 할 수도 있고, 5의 배수라고 할 수도 있고, 4와 5의 배수라고 할 수도 있다.
일단 4의 배수, 5의 배수 조건만 넣었을 때 어떻게 결과가 나오는지 살펴 보자. (교집합 조건을 넣지 않은 경우)
num1=input("숫자 입력:")
num2=int(num1)
if num2%4 == 0:
x ='4의 배수'
elif num2%5 == 0 :
x ='5의 배수'
else :
x='4,5의 배수가 아니다'
print(x)
결과 :
숫자 입력:20
4의 배수
if/ elif 문을 사용할 때, 먼저 나오는 조건이 우선순위가 높다.
위에서 아래로 필터로 걸러지는 개념이라고 보면 되는데,
20은 4의 배수이자 5의 배수이지만,
elif 는 else if 즉, if ~의 조건이 아니면서 elif ~ 조건 이라는 의미이기 때문에 4의 배수로 출력된다.
교집합 조건을 넣었을 때는 어떻게 될까.
num1=input("숫자 입력:")
num2=int(num1)
if num2%5 == 0 :
x ='5의 배수'
elif num2%4 == 0 :
x ='4의 배수'
elif num2%4 == 0 and num2%5==0:
x ='4의 배수이자 5의 배수'
else :
x='4,5의 배수가 아니다'
print(x)
결과 :
숫자 입력:20
5의 배수
역시 위에서부터 걸러지기 때문에 결과는 5의 배수로 출력된다.
따라서,
교집합 조건이 있을 때는, 교집합 조건을 맨 위에 넣어주는 것이 누락되지 않는 방법이다.
num1=input("숫자 입력:")
num2=int(num1)
if num2%4 == 0 and num2%5==0:
x ='4의 배수이자 5의 배수'
elif num2%5 == 0 :
x ='5의 배수'
elif num2%4 == 0 :
x ='4의 배수'
else :
x='4,5의 배수가 아니다'
print(x)
결과:
숫자 입력:20
4의 배수이자 5의 배수