4. 조건문으로 흐름 제어하기
【파이선 배우기】
1. if 문
2. 비교연산자
3. 코드 블록
지금까지 배웠던 프로그램들은 모두 한 방향으로만 진행되는 프로그램이었다. 하지만 경우에 따라서 프로그램의 흐름을 나누어서 생각해야 하는 경우도 있다. 예를 들어 식탁에 맛있는 음식이 준비되어 있다고 할 때, 배가 고프다면 음식을 맛있게 먹겠지만 이미 배가 부른 상태라면 음식을 먹으려고 하지 않을 것이다.
이처럼 조건에 따라 실행되는 결과가 달라지는 것을 조건문이라고 하며, if 문 안에 이러한 조건과 응답을 조합할 수 있다. 이번 장에서는 프로그램에서 if 문을 어떻게 사용하는지에 대해 알아보도록 하자.
1if 문
가. if 문이란?
파이선에서는 if 문을 통해 프로그램의 흐름을 제어할 수 있다. 예를 들면 ‘만약 “예”라고 입력하면 반복하여 실행한다.’라는 조건문을 통해 프로그램을 흐름을 제어할 수 있다.
if 조건:
명령1
명령2
elif:
명령3
명령4
else:
명령5
명령6
if 뒤에 흐름을 제어할 조건이 오게 되며, 그 뒤에 콜론(:)을 붙여준다.
if 조건 콜론(:) 뒤에 들여쓰기로 이루어진 코드 블록이 온다. if 문 뒤의 명령은 if 문의 조건이 True일 경우 실행된다.
elif는 else if의 약자로 앞에 반드시 if가 있어야 한다. elif가 있을 경 우 첫 번째 if 문을 확인해 조건을 충족하면 뒤의 elif는 확인하지 않고 넘어가서 효율적이다.
if 문의 조건이 False인 경우 else 콜론(:) 뒤의 명령이 실행된다.
나. if 문
a=int(input("1~20사이의 정수를 입력해 주세요.:"))
if a<10:
print("입력한 수는 10보다 작습니다.")
else:
print("입력한 수는 10보다 작지 않습니다.")
>4if1.py
1~20사이의 정수를 입력해주세요.:8
입력한 수는 10보다 작습니다.
>4if1.py
1~20사이의 정수를 입력해주세요.:15
입력한 수는 10보다 작지 않습니다.
1행에서는 int(input()) 함수를 사용해서 변수 a에 정수 입력값을 받을 수 있도록 하였다. 입력하고 싶은 값은 출력할 경우 나타나는 콜론 옆에 입력하면 된다. 이때 int(input( )) 함수를 사용한 이유는 입력받은 값을 정수로 변환하여야만 수로 인식해서 비교가 가능하기 때문이다. input( ) 함수는 입력받은 값을 문자열로 전환하기 때문에 int(input( )) 함수를 사용해서 입력받은 수를 정수 형태로 변환해야 하는 것이다.
3행에서 if를 사용하여 a가 10보다 작다는 조건을 만들었다. 입력받은 변수 a가 주어진 조건에 True인 경우 if 문 아래 들여쓰기로 되어있는 행인 print(“입력한 수는 10보다 작습니다.”) 함수가 실행되지만 주어진 조건에 False인 경우 else 문 아래 들여쓰기 되어있는 print(“입력한 수는 10보다 작지 않습니다.”)가 실행된다.
다. 코딩해 보기
1) 정수형 변수 a와 b를 입력받아 a+b의 값이 10보다 크면 “두 수의 합이 10보다 큽니다.”라고 출력되고, 그렇지 않을 경우 “두 수의 합이 10보다 크지 않습니다.”라고 출력되는 프로그램이 되도록 코딩해 보자.
a=int(input("정수를 입력해 주세요.:"))
b=int(input("정수를 입력해 주세요.:"))
if a+b>10:
print("두 수의 합이 10보다 큽니다.")
else:
print("두 수의 합이 10보다 크지 않습니다.")
2) 정수형 변수 c와 d를 입력받아 “(입력한 수 중 큰 수)가 (입력한 수 중 작은 수)보다 큽니다.”라고 출력되고, 두 수가 같으면 “두 수는 같습니다.”라고 출력되는 프로그램이 되도록 코딩해 보자.
c=int(input("정수를 입력해 주세요.:"))
d=int(input("정수를 입력해 주세요.:"))
if c>d:
print("%d이(가) %d보다 큽니다." % (c, d))
else:
if d>c:
print("%d이(가) %d보다 큽니다." % (d, c))
else:
print("두 수는 같습니다.")
2비교연산자
가. 비교연산자란?
조건을 작성할 때에는 비교연산자를 사용하게 된다. if와 콜론(:) 사이에 작성하게 되는 것이 조건인데 이 조건의 참과 거짓의 평가 결과에 따라 흐름이 제어되는 것이다. 비교연산자는 어떻게 사용하는 것일까? 파이선에서는 6가지의 비교연산자가 있다.
연산자 | 설명 |
---|---|
== | 값이 동일하다 |
!= | 값이 동일하지 않다 |
> | 왼쪽 값이 오른쪽 값보다 크다 |
< | 왼쪽 값이 오른쪽 값보다 작다 |
>= | 왼쪽 값이 오른쪽 값보다 크거나 동일하다 |
<= | 왼쪽 값이 오른쪽 값보다 작거나 동일하다 |
비교연산자가 어떻게 판단하는지 예제를 통해 알아보도록 하자.
a=int(5)
b=int(input("5와 같은 숫자를 입력해 주세요:"))
if a==b:
print("a와 b는 같습니다.")
else:
print("a와 b는 같지 않습니다.")
>4operator1.py
5와 같은 수를 입력해 주세요.:5
a와 b는 같습니다.
>4operator1.py
5와 같은 수를 입력해 주세요.:4
a와 b는 같지 않습니다.
1행에서 변수 a에 정수 5를 대입했다. 2행에서는 “5와 같은 숫자를 입력해 주세요:”라는 문장과 함께 정수를 입력받아 변수 b에 대입한다. 4행에서 == 비교연산자를 사용해 a==b라는 조건을 제시한다. a와 b가 같을 경우 if 문 다음행에 들여쓰기 되어 있는 “a와 b는 같습니다.”가 출력되고, a와 b가 같지 않을 경우 else 문 다음행에 들여쓰기 되어 있는 “a와 b는 같지 않습니다.”가 출력된다.
나. 코딩해 보기
1) 정수를 입력받고, 입력받은 수가 100보다 작은 경우 “입력한 수는 100보다 크지 않습니다.”, 100보다 크고 1000보다 작은 경우 “입력한 수는 100보다 크고 1000보다 작습니다.”, 1000보다 큰 경우 “입력한 수는 1000보다 큽니다.”라고 출력되는 프로그램을 코딩해 보자.
a=int(input("정수를 입력해 주세요.:"))
if a>100:
if a<1000:
print("입력한 수는 100보다 크고 1000보다는 작습니다.")
else:
print("입력한 수는 1000보다 큽니다.")
else:
print("입력한 수는 100보다 크지 않습니다.")
2) 나이를 입력받고, 17세 이상인 경우 “고등학생이군요.” 14세 이상 17세 미만인 경우 “중학생이군요.”, 8세 이상 14세 미만인 경우 “초등학생이군요.”, 세 가지 경우 모두 아닌 경우 “초, 중, 고등학생은 아니군요.”가 출력되는 프로그램을 코딩해 보자.
age=int(input("나이를 입력해 주세요.:"))
if age>=17:
print("고등학생이군요.")
elif age>=14:
print("중학생이군요.")
elif age>=8:
print("초등학생이군요.")
else:
print("초, 중, 고등학생은 아니군요.")
3코드 블록
가. 코드 블록과 들여쓰기
코드 블록(Code Block)은 여러 코드가 이루는 일정한 구역을 말하는데, 프로그래밍 언어마다 이것을 표현하는 방법은 각기 다르다. 파이선은 들여쓰기 방식으로 구역을 나눈다. 들여쓰기는 Space 키와 Tab 키 모두 사용할 수 있지만 이들을 섞어서 사용할 수는 없다. 파이선을 만든 귀도는 PEP(Python Ehancement Proposals)-8에서 스페이스 4칸을 사용할 것을 권장하고 있다.
if a==3: # a가 3과 같다면
→ print('삼') # 코드 블록
→ print(' ') # 코드 블록
→ print('Three') # 코드 블록
else:
→ print('삼이 아님') # 코드 블록
스크린리더를 통해 코드를 작성할 경우 들여쓰기를 알아차리기가 쉽지 않고, 코드 블록을 표시하여 코딩해도 쉽지 않다. 따라서 스크린리더를 통해 코드 블록을 만들 경우 2단원에 제시한 스크린리더 조작법을 참고해서 코딩할 수 있도록 한다.
나. 코딩해 보기
다음 if 문은 들여쓰기가 되어 있지 않아서 제대로 실행되지 않는다. 코드 블록을 사용해서 바르게 코딩해 보자.
1)
a=int(input("정수를 입력해 주세요.:"))
if a>100:
print("100보다 큰 수를 입력했습니다.")
else:
print("입력한 수는 100보다 크지 않습니다.")
a=int(input("정수를 입력해 주세요.:"))
if a>100:
print("100보다 큰 수를 입력했습니다.")
else:
print("입력한 수는 100보다 크지 않습니다.")
2)
a=int(input("정수를 입력해 주세요.:"))
if a>10:
if a<100:
print("10 초과 100 미만")
else:
print("100 이상")
else:
print("10 이하")
a=int(input("정수를 입력해 주세요.:"))
if a>10:
if a<100:
print("10 초과 100 미만")
else:
print("100 이상")
else:
print("10 이하")