[파이썬기초] 02. 조건문
12107 단어 파이썬기초파이썬혼자 공부하는 파이썬파이썬
1. 단일 조건문
- 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문
- 즉 코드의 실행 흐름을 변경한다는 의미. 이를 조건분기라고 부름
- 조건문의 조건부분에는 참과 거짓을 구분할 수 있는 조건이 들어가게 됨
>>>> if True:
print("True입니다!")
True입니다!
>>>> if False:
print("False입니니다!")
# 아무것도 실행되지 않음
- if뒤에 있는 불 값이 참인 경우에 대해서만 해당 구문이 실행되는 것을 확인할 수 있음
- 즉 코드의 실행 흐름을 변경한다는 의미. 이를 조건분기라고 부름
>>>> if True:
print("True입니다!")
True입니다!
>>>> if False:
print("False입니니다!")
# 아무것도 실행되지 않음
예제
시간을 입력 받아 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<12
이 True
라면 '오전'이라는 문자열을, False
라면 '오후'라는 문자열을 출력
- 조건을 한 번만 비교하므로 이전 코드보다 효율적
2.2 elif 구문
- 세 개 이 상의 조건을 연결해서 비교를 할 때 사용하는 구문
time = int(input('시간을 입력하세요.'))
if time < 12:
print('오전')
else:
print('오후')
time<12
이 True
라면 '오전'이라는 문자열을, False
라면 '오후'라는 문자열을 출력예제
속도를 입력 받아 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
로 변환
speed = int(input('속도: '))
if speed >= 100:
print('고속')
elif speed >= 60:
print('중속')
else:
print('저속')
- 이 경우, 위의 코드에서는 if, elif구문을 모두 거친 후 '저속'이라는 문자열이 출력될 것
- 매우 비효율적이며, 조건문이나 코드가 많아지고 길어질 수록 더욱 심해짐
# 입력되는 speed 값이 저속 > 고속 > 중속 순으로 빈번하게 나타난다고 예상
speed = int(input('속도: '))
if speed < 60:
print('저속')
elif speed >= 100:
print('고속')
else:
print('중속')
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
키워드를 입력해뒀더라도, 잊어버리는 경우를 대비하여,raise
와NotImplementedError
를 조합하여 정상실행은 되나 구현되지 않은 부분을 알려주는 오류를 발생시킴
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
해당 글은 도서 '혼자 공부하는 파이썬'과 학교 강의를 참조하여 작성되었습니다.
Author And Source
이 문제에 관하여([파이썬기초] 02. 조건문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@illisam/파이썬기초-02.-조건문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)