[파이썬기초] 02. 조건문

1. 단일 조건문

  • 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문
    • 즉 코드의 실행 흐름을 변경한다는 의미. 이를 조건분기라고 부름
  • 조건문의 조건부분에는 참과 거짓을 구분할 수 있는 조건이 들어가게 됨
>>>> if True:
	print("True입니다!")
    
True입니다!

>>>> if False:
	print("False입니니다!")
    
# 아무것도 실행되지 않음
  • if뒤에 있는 불 값이 참인 경우에 대해서만 해당 구문이 실행되는 것을 확인할 수 있음

예제
시간을 입력 받아 12시 전이라면 '오전', 12시 이후라면 '오후'를 출력하는 프로그램

time = int(input('시간을 입력하세요.'))

if time < 12:
	print('오전')
if time > 12:
	print('오후')

2. 다중 조건문

  • 위의 예제처럼 두 개 이상의 조건 중 반드시 하나에만 들어맞는 경우, 위처럼 단순히 if를 여러개 작성하면, 조건을 반복해서 비교하게 됨
  • 따라서, 더 효율적인 코드 작성을 위해 내가 비교하고자 하는 조건문의 개수에 따라 사용할 수 있는 다중 조건문을 알아야함!

2.1 else 조건문

  • 1.1의 예제와 같이 '오전'아니면 '오후'와 같은 두 가지 상태만을 가질 때 사용
time = int(input('시간을 입력하세요.'))

if time < 12:
	print('오전')
else:
	print('오후')
  • 1.1의 예제와는 달리 위의 코드는 time이 12보다 작은지의 여부를 한 번만 확인함
  • time<12True라면 '오전'이라는 문자열을, False라면 '오후'라는 문자열을 출력
  • 조건을 한 번만 비교하므로 이전 코드보다 효율적

2.2 elif 구문

  • 세 개 이 상의 조건을 연결해서 비교를 할 때 사용하는 구문

예제
속도를 입력 받아 100km/h 이상이면 '고속', 60km/h 이상 100km/h 미만이면 '중속, 60km/h 미만이면 '저속'을 출력하는 프로그램

speed = int(input('속도: '))

if speed >= 100:
	print('고속')
elif 60 <= speed < 100:
	print('중속')
else:
	print('저속')

3. if 조건문 효율적으로 사용하기

3.1 효율적인 조건부 작성

  • 1.2.2 의 예제를 다시 살펴보면, elif구문에서 speed가 100보다 작은지를 검사하고 있음
  • elif문을 검사하고 있다는 것 자체가 이미 속도라 100km/h보다 느려서 넘어왔으므로 위에서 이미 제외된 조건을 한 번 더 검사할 필요는 없음
  • 해당 코드를 다시 수정해보면 아래와 같음
speed = int(input('속도: '))

if speed >= 100:
	print('고속')
elif speed >= 60:
	print('중속')
else:
	print('저속')

3.2 빈도에 따른 if문 배열

  • 위의 속도 예제에서, 만약 입력되는 값들 대부분이 60km/h 미만의 값이라고 생각해보자
    • 이 경우, 위의 코드에서는 if, elif구문을 모두 거친 후 '저속'이라는 문자열이 출력될 것
    • 매우 비효율적이며, 조건문이나 코드가 많아지고 길어질 수록 더욱 심해짐
  • 따라서, 입력되는 값의 예상되는 빈도에 따라 조건문을 적절하게 배열하면 좀 더 효율적으로 작성 가능
# 입력되는 speed 값이 저속 > 고속 > 중속 순으로 빈번하게 나타난다고 예상

speed = int(input('속도: '))

if speed < 60:
	print('저속')
elif speed >= 100:
	print('고속')
else:
	print('중속')

3.3 False, True로 변환되는 값

  • if조건문에서 매개변수에 불이 아닌 다른 값이 올 때는 자동으로 이를 불로 변환해서 처리함
  • None, 0(int type), 0.0(float type), 빈 컨테이너(빈 문자열, 빈 바이트열, 빈 리스트, 빈 튜플)는 False로 변환됨
    • 이 외의 값을 가진 경우에는 True로 변환

예제
짝수와 홀수를 판별하는 프로그램

number = int(input('숫자를 입력하세요: ))

if number%2: # 나머지가 0이 아닐 경우에 참 -> 홀수
	print('홀수입니다.')
else: # 나머지가 0인 경우에 해당 구문으로 넘어옴 -> 짝수
	print('짝수입니다.')

3.4 pass 키워드

  • 프로그래밍을 하다보면 프로그램의 전체 골격을 잡아 놓고 내부에서 처리할 내용은 찬찬히 만들겠다는 의도로 코딩하는 경우가 많음
    • 여기서 골격은 일반적으로 조건문, 반복문, 함수, 클래스 등 기본 구문을 의미
if zero == 0:
	# 공백 삽입
else:
	# 공백 삽임
  • 다른 프로그래밍 언어에서는 위와 같이 아무 내용을 작성하지 않아도 정상 실행이 되지만, 파이썬은 IndentationError를 발생시킴
    • if 조건문 사이에는 무조건 들여쓰기 4칸(혹은 tab) 삽입 후 코드를 작성해야만 구문이 성립되기 때문
    • 따라서 이경우에는 공백 대신 다른 코드를 작성해줘야함
  • 미구현 부분에 0을 삽입해도 실행은 되나, 코드의 가독성을 위하여 pass키워드를 삽입하여 가독성을 높일 수 있음
  • pass키워드를 입력해뒀더라도, 잊어버리는 경우를 대비하여, raiseNotImplementedError를 조합하여 정상실행은 되나 구현되지 않은 부분을 알려주는 오류를 발생시킴
number = int(input('정수 입력: '))

if number > 0:
	# 양수일 때: 아직 미구현 상태입니다.
    raise NotImplementedError
else:
	# 음수일 때: 아직 미구현 상태입니다.
    raise NotImplementedError
  • 코드 실행 시, 아래와 같이 정상 실행은 되나 에러 메시지를 출력해줘 미구현 부분을 알려줌
정수 입력: 10
Traceback (most recent call last):
  File "passkeyword01.py", line 03, in <module>
    raise NotImplementedError
NotImplementedError

해당 글은 도서 '혼자 공부하는 파이썬'과 학교 강의를 참조하여 작성되었습니다.

좋은 웹페이지 즐겨찾기