13.4 조건식을 여러 개 지정하기

지금까지 if에 조건식을 하나만 지정했습니다. 만약 조건이 복잡할 때는 어떻게 해야 할까요?

예를 들어 인터넷 포털의 중고나라에 글을 올리려면 먼저 포털 사이트의 회원이면서 중고나라 카페의 회원이여야 합니다. 이 조건을 if 조건문으로 나타내면 다음과 같은 모양이 됩니다.

if 포털 사이트 회원인지? 그리고 중고나라 회원인지?:
    글쓰기 화면 표시
else:
    포털 사이트 또는 중고나라 회원이 아니므로 글을   없다는 경고 문구 표시

if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요.

if_else_multiple_cond_exp.py

x = 10
y = 20
 
if x == 10 and y == 20:     # x가 10이면서 y가 20일 때
    print('참')
else:
    print('거짓')

실행 결과

x == 10 and y == 20처럼 and 논리 연산자를 사용하면 x가 10이면서 y가 20일 때 if의 코드가 실행됩니다.

만약 둘 중 하나라도 만족했을 때 '참'이 출력 되도록 하려면 or 논리 연산자를 사용하면 됩니다.

그럼 이런 논리 연산자를 어디에 사용할까요? 보통 초보자들은 여러 조건을 판단할 때 if를 계속 나열해서 중첩 if 조건문으로 만드는 경우가 많습니다. 예를 들어 x가 20보다 작은 양수인지 판단하려고 합니다.

if x > 0:
    if x < 20:
        print('20보다 작은 양수입니다.')

ifx가 0보다 큰지 검사하고, 다시 if로 20보다 작은지 검사했습니다(0보다 크면 양수). 이런 중첩 if 조건문은 and 논리 연산자를 사용해서 if 하나로 줄일 수 있습니다.

if x > 0 and x < 20:
    print('20보다 작은 양수입니다.')

x가 0보다 크면서 20보다 작을 때처럼 and 논리 연산자를 사용해서 두 조건을 모두 만족하면 '20보다 작은 양수입니다.'를 출력하도록 만들었습니다. 특히 파이썬에서는 이 조건식을 더 간단하게 만들 수 있습니다.

if 0 < x < 20:
    print('20보다 작은 양수입니다.')

0 < x < 20처럼 부등호를 연달아서 사용했습니다. 조건식이 알아보기 쉬워졌죠? 단, 여기서는 0이 앞에 왔으므로 0보다 큰지 판단하는 부등호는 방향이 반대로 바뀌었습니다. 이처럼 조건식을 만들 때는 부등호의 방향과는 관계 없이 조건의 뜻만 만족하면 됩니다. 즉, x > 00 < x의 뜻은 같습니다.