조건문(Condition)
우리는 평소에 “만약 A라면 B를 하고, A가 아니면 C를 한다.”와 같은 형식의 말을 많이 한다.
A라는 조건이 참(True)이면 B를 하고, 거짓(False)이면 C를 한다는 의미로 생각해 볼 수 있다.
프로그래밍에서도 특정 조건이 참인지 거짓인지에 따라 동작을 다르게 수행한다. 파이썬에서 이를 어떻게 표현하는지 알아보자.
if와 else
- 파이썬에서 조건문을 표현할 때 if와 else라는 문법을 사용한다.
- if 문의 구조는 아래와 같다.
if 조건문:
조건문이 참일 때 실행하는 동작 1
조건문이 참일 때 실행하는 동작 2
...
else:
조건문이 거짓일 때 실행하는 동작 1
조건문이 거짓일 때 실행하는 동작 2
...
파이썬의 if문은 간결하다.
조건문의 마지막에는 반드시 콜론(:)을 붙인다.
조건문은 True 혹은 False로 평가되며, 비교 연산자와 논리 연산자를 사용하여 작성할 수 있다.
또 파이썬은 코드의 구분을 위해 들여쓰기를 사용한다.
다른 언어는 좀 맞지 않아도 괄호를 통해서 구분하면 되는데 파이썬은 들여쓰기로 구분하므로 들여쓰기에 신경을 써야 한다.
간단하게 비교 연산자와 논리 연산자를 사용하는 파이썬 조건문 예시를 들어보겠다.
if 2 < 5:
print("5가 2보다 큽니다.")
else:
print("2가 5보다 큽니다.")
#정답: 5가 2보다 큽니다.
name = "sungmin"
age = 24
if name == "sungmin" and age == 20: # True and True 이므로 조건문은 True로 평가
print("24살의 sungmin님 안녕하세요!")
else:
print("처음 뵙겠습니다.")
# 24살의 sungmin님 안녕하세요!
if 문 안의 또 다른 if 문
- 지금까지는 하나의 조건에 따라 if와 else로만 나누어진 상황을 보았다. 조건이 여러 개가 있다면 어떻게 표현할 수 있을까?
- 다중 조건문을 사용하면 된다.
- 아래의 조건들을 if, else를 사용하여 표현해보자.
만약 변수 age가
1) 30 이상이라면 “30대입니다.”를 출력한다.
2) 30 미만이지만 20 이상이라면 “20대입니다.”를 출력한다.
3) 20 미만이라면 "미성년자입니다."를 출력한다.
age = 15
if age >= 30:
print("30대입니다.")
else:
if age >= 20:
print("20대입니다.")
else:
print("미성년자입니다.")
이렇게 써도 되지만 우리겐 else if의 의미인 elif가 있다.
age = 15
if age >= 30:
print("30대입니다.")
elif age >= 20:
print("20대입니다.")
else:
print("미성년자입니다.")
# 미성년자입니다.
코드가 더 깔끔한 것을 볼 수 있다. elif는 여러 번 사용할 수 있다.
반복문(Loop)
반복문의 필요성
- 5개의 정수 원소가 담긴 리스트 numbers에서 순차적으로 아래와 같이 원소에 접근할 수 있다.
numbers = [10, 20, 30, 40, 50]
print(numbers[0])
print(numbers[1])
print(numbers[2])
print(numbers[3])
print(numbers[4])
이렇게 하면 10 20 30 40 50 이렇게 세로로 출력될 것이다.
그런데 만약 리스트 numbers의 원소가 몇백 개를 넘긴다면?
모든 원소에 접근하려면 상당히 비효율적으로 수백 줄의 코드를 작성해야 할 것이다.
프로그래머는 이를 간결하게 만들 의무가 있다.
이제부터 여러 종류의 파이썬 반복문에 대해 알아보자.
for 반복문
반복 횟수가 정해져 있는 경우에 사용한다. (보통 원소의 개수만큼 반복)
for 변수 in 컨테이너
- for문의 기본적인 구조는 아래와 같다.
for 변수 in 컨테이너:
반복하는 동안 수행되는 동작 1
반복하는 동안 수행되는 동작 2
...
- 먼저 for 변수 in 컨테이너(도커 컨테이너 아님)의 형식으로 작성하고 마지막에는 반드시 콜론(:)을 붙임.
- 컨테이너의 첫 번째 원소부터 마지막 원소까지 반복 수행.
- 변수에는 반복을 수행하면서 컨테이너의 원소가 차례로 하나씩 할당.
- 반복문 안에서 수행할 코드는 반드시 들여쓰기.
예시를 들어보자
리스트 순회
for name in ["kyle", "alex", "justin"]:
print(f"안녕하세요! {name}!")
#안녕하세요! kyle!
#안녕하세요! alex!
#안녕하세요! justin!
문자열 순회
word = "PYTHON"
for character in word:
print(character)
# P
# Y
# T
# H
# O
# N
조건문과 활용
numbers = [1,2,3,4,5,6,7,8,9,10]
#리스트 numbers의 원소 중 짝수만 출력
for number in numbers :
if number % 2 == 0 :
print(number)
# 2
# 4
# 6
# 8
# 10
for i in range(n)
- 레인지(range)는 연속된 정수 목록을 가지고 있는 컨테이너 자료형이다.
- for 문은 리스트, 문자열 뿐만 아니라 레인지의 원소를 반복하는 데에도 많이 사용된다.
# 0부터 4까지의 정수를 변수 i에 차례로 할당
for i in range(5):
print(i)
보통 for i in range(n)은 특정 횟수만큼 코드를 반복할 때 사용한다.
0
1
2
3
4
5
range를 쓰지만 홀수만 출력하게 할 수도 있다
for i in range(1,11,2):
print(i)
1
3
5
7
9
조건문과 함께 다양하게 반복문을 수행할 수도 있다.
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)):
if i % 2 == 0:
print(numbers[i]) # 0번째, 2번째, 4번째 원소만 출력
# 1
# 3
# 5
while 반복문
반복 횟수가 정해져 있지 않은 경우에 사용한다. (사용자가 반복 횟수를 조절 가능)
- while문의 기본적인 구조는 아래와 같다.
while 조건문:
반복하는 동안 수행되는 동작 1
반복하는 동안 수행되는 동작 2
...
while 문의 오른쪽엔 조건문 작성, 마지막엔 반드시 콜론(:)을 붙인다.
조건문의 결과가 참으로 판별되면 반복을 수행하고, 거짓으로 판별되면 반복을 중단한다.
1부터 5까지의 정수를 반복해서 출력
number = 1 # 초기화
while number <= 5: # 조건 (참이면 반복 수행, 거짓이면 반복 종료)
print(number)
number += 1 # 증감식 (증감식이 있어야만 나중에 반복을 종료할 수 있음)
1
2
3
4
5
리스트 순회
numbers = [10,20,30,40,50]
i = 0 # 초기화
while i < len(numbers) : # 조건: numbers 개수는 5개 이므로 5번 반복
print(numbers[i])
i += 1 # 증감식
10
20
30
40
50
조건문과 함께 사용
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
i = 0
# 리스트 numbers의 원소 중에서 짝수만 출력하기
while i < len(numbers):
if numbers[i] % 2 == 0:
print(numbers[i])
i += 1
2
4
6
8
10
무한루프
while문의 위험한 점이 바로 반복이 영원히 종료 되지 않을 수도 있다는 것이다. 이를 무한루프라고 한다.
증감식이 없으면 조건이 항상 True이기 때문에 무한 루프가 발생한다.
number = 1 # 초기화
while number <= 5: # 조건
print(number)
# 증감식이 없음
이러면 이제 cpu 사용률이 증가하고 메모리 누수가 발생하여 시스템 자원이 소모되고 데이터 손상이 있을 수 있다.
따라서 이와 같은 상황이 오지 않게 하려면 루프의 종료 조건을 명확히 하고, 프로그램의 흐름을 꼼꼼히 검토하며 예외 처리를 철저히 하는 것이 좋다.
break와 continue
break
반복문을 강제로 종료하는 키워드이며 for 문과 while 문에서 모두 사용 가능하다.
- 보통 조건문과 함께 사용하여 특정 조건을 만족했을 때 반복문을 종료하도록 설정한다.
for문 예시
numbers = [1, 2, 3, 4, 5]
for number in numbers:
print(number)
# 원소 3을 만난 경우 반복 종료
if number == 3:
print("반복을 종료합니다.")
break
1
2
3
반복을 종료합니다.
while문 예시
numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
i = 0
while True :
print(numbers[i])
if numbers[i] == 3 :
print("반복을 종료합니다.")
break
i += 1
1
2
3
반복을 종료합니다.
continue
다음 반복으로 강제 이동시키는 키워드이며 for 문과 while 문에서 모두 사용 가능하다.
- 보통 조건문과 함께 사용하여 특정 조건을 만족했을 때 더 이상 아래 부분을 실행하지 않고, 다음 반복으로 넘어가도록 설정한다.
for문 예시
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number % 2 == 0: # 만약 짝수라면
continue # 아래를 실행하지 않고 다음 반복으로 넘어감
print(number) # 홀수만 출력
1
3
5
while문 예시
number = 0
while number <= 5:
number += 1
if number % 2 == 0: # 만약 짝수라면
continue # 아래를 실행하지 않고 다음 반복으로 넘어감
print(number) # 홀수만 출력
1
3
5
같은 들여쓰기 레벨에서 continue의 아래 부분은 결코 실행될 수 없기 때문에 해당 부분에 코드를 작성하지 않도록 주의한다.
number = 0
while number <= 5:
number += 1
if number % 2 == 0:
continue
print("이 부분은 실행되지 않습니다.") # 이 부분은 결코 실행될 수 없다.
print(number)
1
3
5
'Language > Python' 카테고리의 다른 글
코딩 테스트를 위한 파이썬 메서드 정리 (27) | 2024.07.12 |
---|---|
[Python] 변수 (1) | 2024.04.28 |
[Python] 기본 자료형 (1) | 2024.04.25 |
[Python] 파이썬에 대하여 (4) | 2024.04.23 |