파이썬/파이썬 기초 코딩

[조건문] 조건이 겹치는 경우

토마토농장농장 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의 배수