이번글에서 소개드릴 것은 파이썬을 함에 있어서 정말 정말 편하게 만들어주는 조건문과 반복문입니다.
간단한 게 조건문과 반복문을 설명하자면 이렇습니다.
- 조건문: 조건에 맞게 코드를 실행시켜주는 코드 블록
- 반복문: 원하는 수만큼 코드를 반복시켜주는 코드 블록
이것을 통해서 특정 조건에 따라 코드의 흐름을 제어할 수 있습니다. 이를 프로그래밍에서 흐름 제어(flow control)라고 합니다. 사람이 일일이 코드를 반복하거나 조건이 달라서 코드를 재생산하는 행위를 막아줍니다.
1. 조건문(if, elif, else)
- 1가지 조건
1가지 조건의 if문법은 이렇습니다.
if 조건:
조건이 참인 경우 출력
else:
거짓인 경우 출력
원하는 조건을 if에 넣고 나머지는 else로 처리해주시면 됩니다.
만약 어떤 숫자가 3000 초과인 경우 "yes"를 아닌 경우는 "no"를 출력하는 if문을 작성한다고 생각해봅시다.
여기서 조건을 정리해봅시다.
- 조건: 어떤 숫자가 3000 초과인 경우 "yes"
- 나머지: "no"
해당 조건에서는 이런 식으로 코딩할 수 있을 것입니다.
a = 2900
if a > 3000:
print("yes")
else:
print("no")
여기서는 a를 2900으로 선언했으니 3000보다 작기 때문에 "no"를 출력할 것입니다.
- n가지 조건
그렇다면 조건이 여러 가지면 어떻게 될까요??
바로 elif를 이용해서 해결할 수 있습니다.
if 조건1:
조건1이 참인 경우 출력
elif 조건2:
조건2이 참인 경우 출력
else:
거짓인 경우 출력
만약 어떤 숫자가 3500 초과인 경우 "oh"를 3000 초과인 경우 "yes"를 아닌 경우는 "no"를 출력하는 if문을 작성한다고 생각해봅시다.
조건을 정리해봅시다.
- 조건 1: 어떤 숫자가 3500 초과인 경우 "oh"
- 조건 2: 3000 초과인 경우 "yes"
- 나머지: no
해당 조건에서는 이런 식으로 코딩할 수 있을 것입니다.
a = 3600
if a > 3500:
print("oh!")
elif a > 3000:
print("yes")
else:
print("no")
여기서는 a를 3600으로 선언했으니 3500보다 크기 때문에 "oh"를 출력할 것입니다.
이런 식으로 elif를 이용하여 조건을 계속 여러 개로 늘려 나갈 수 있습니다.
match라는 조건문도 있지만 이건 함수와 연계하여 활용하는 게 활용성이 좋으므로 함수를 설명할 때 같이 설명하도록 하겠습니다.
2. 반복문(while, for)과 할당 연산자
- 조건이 맞을 때까지 실행시켜보자 -> while
- 원하는 수만큼만 실행시키고 싶다 -> for
사실 for문을 쓴다고 해서 while 역할을 못하는 것은 아닙니다. 그래도 그냥 편의성을 위해서 나눠 봤습니다.
그리고 반복문을 활용할 때는 할당 연산자를 활용하면 편합니다.
- 할당연산자 종류
문법 | 역할 | 예시 |
= | 왼쪽 변수에 오른쪽 값을 할당 | a = b |
+= | 왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽변수에 할당 | a += 1 (a = a+1 이거와 같음) |
-= | 왼쪽 변수에서 오른쪽 값을 빼고 결과를 왼쪽변수에 할당 | a -= 1 (a = a-1 이거와 같음) |
*= | 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽변수에 할당 | a *= 2 (a = a*2 이거와 같음) |
/= | 왼쪽 변수에서 오른쪽 값을 나누고 결과를 왼쪽변수에 할당 | a /= 2 (a = a/2 이거와 같음) |
%= | 왼쪽 변수에서 오른쪽 값을 나눈 나머지의 결과를 왼쪽변수에 할당 | a %= 3 (a = a%3 이거와 같음) |
**= | 왼쪽 변수에 오른쪽 값만큼 제곱을 하고 결과를 왼쪽변수에 할당 | a **=2 (a = a**2 이거와 같음) |
//= | 왼쪽 변수에서 오른쪽 값을 나눈 몫의 결과를 왼쪽변수에 할당 | a //=2 (a = a//2 이거와 같음) |
할당연산자를 활용하게 되면 반복문을 활용 시에 편하게 코딩할 수 있습니다.
- while 문
조건이 맞을 때까지 무한정으로 실행하는 반복문을 while이라고 합니다. 문법은 이렇습니다.
while 조건:
실행(조건이 참이 될 때까지 실행)
x에 대해서 15 미만일 때 그 값을 출력하고 해당 값에 +1을 해주는 코드를 만든다고 생각해봅시다.
여기서 코드를 정리해보면
- 조건: x에 대해서 15 미만일 때
- 실행코드: 그 값을 출력하고 해당 값에 +1
해당 코드는 이런 식으로 코딩이 가능할 것입니다.
x = 0
#조건
while x < 15:
#실행 코드
print(x)
x += 1
실행결과
while문의 실행결과
x가 14일 때까지 출력하고 15가 되었을 때 출력을 멈춘 것을 알 수 있습니다.
break와 continue
반복문에서는 break와 continue를 통해서 좀 더 나이스 한 제어가 가능합니다.
- break: 조건에 맞으면 코드를 그 선에서 멈춤
만약 위의 예시에서 x가 5를 초과하면 코드를 멈추겠다. 조건을 추가하고 싶다고 생각해봅시다.
물론 15를 6으로 바꾸는 방법도 있겠지만 break를 활용하는 방법이 있을 것입니다.
여기서 코드를 정리해보면
- 조건: x에 대해서 15 미만일 때
+ break 조건: x가 5를 초과할 때
- 실행코드: 그 값을 출력하고 해당 값에 +1
이렇다면 아래의 방법처럼 코딩이 가능할 것입니다.
x = 0
while x < 15:
if x > 5:
break
print(x)
x += 1
실행 결과
5초과 조건을 걸어서 5까지만 출력이 되었다.
- continue: 조건에 맞으면 해당 코드를 스킵하고 다음 반복으로 넘어감
만약 위의 예시에서 홀수만 출력하겠다고 말을 한다면 결국 15 미만까지(끝까지) 반복문이 돌지만 홀수만 출력을 해야만 할 것입니다. 이럴 때 활용하는 것이 continue입니다.
여기서 코드를 정리해보면
- 조건: x에 대해서 15 미만일 때
+ continue 조건: 홀수일 때
- 실행코드: 그 값을 출력하고 해당 값에 +1
이렇다면 아래의 방법처럼 코딩이 가능할 것입니다.
x = 0
while x < 15:
x = x + 1
if x % 2 == 0:
continue
print(x)
아래 코드의 뜻은 x를 2로 나눴을 때 몫이 0인 경우 즉 짝수인 경우 continue(스킵) 하겠다는 코드입니다.
if x % 2 == 0:
continue
실행결과
홀수만 출력되고 있다.
- for 문
원하는 수만큼만 실행시키고 싶을 때 활용하는 for문에 대해서 알아보도록 하겠습니다.
기본 문법
for 할당변수 in 반복횟수 혹은 실행할 리스트:
실행문
반복 횟수 혹은 실행할 리스트: 해당 반복을 몇 번 할지 혹은 끝까지 반복할 리스트에 를 넣습니다.
할당 변수
- 반복 횟수를 넣어주면 0부터 +1로 순차적으로 증가하며
- 리스트를 넣어주는 경우 인덱스가 0인 것부터 할당 변수에 들어가게 됩니다.
ex) [1,2,3,4,5] 리스트를 넣어주는 경우 할당 변수에 1부터 순차적으로 들어감
range를 활용한 for 문
반복문에서 반복 횟수는 range를 통해서 표현합니다.
range(끝 숫자): 하나의 숫자만 넣을 경우 끝수자로 인식해서 0부터 (끝 숫자 -1)까지 나열해줍니다.
ex) range(10) = 0,1,2,3,4,5,6,7,8,9
for i in range(10):
print(i)
for문 실행결과
range(시작 숫자, 끝 숫자): 시작 숫자부터 (끝 숫자 -1)까지 나열해줍니다.
ex) range(1,10) = 1,2,3,4,5,6,7,8,9
for i in range(1,5):
print(i)
for문 실행결과 2
range(1,5)가 실행 횟수라고 보면 되고 i가 할당 변수라고 보면 됩니다.
반복해서 i에 1~5까지 할당하여 차례차례 print 해주는 반복문입니다.
리스트를 이용한 for 문
리스트를 반복문에 넣게 되면 할당 변수에 리스트의 인덱스 0 값부터 차례차례 들어가게 됩니다.
item_list = [1,2,3,4,5]
for item in item_list:
print(item)
여기서 리스트는 item_list이고 for문의 item은 item_list에 인덱스[0]부터 [4]까지 반복해서 출력해주게 되는 겁니다.
for문 실행결과3
if문과 섞어서 이런 식으로도 활용이 가능합니다. 만약 내가 리스트 안에 3,4만 출력하고 싶다고 한다면 이런 식으로 가능할 것입니다.
for item in item_list:
if item in [3,4]:
print(item)
for문 실행결과4
딕셔너리를 이용한 for문
딕셔너리도 for문을 활용할 수 있습니다.
dic_list = {'a' : 0.40, 'b' : 0.35, 'c': 0.25}
이런 딕셔너리가 있다고 가정해볼때 key와 value를 순차적으로 뽑아내고 싶다고 한다면 아래와 같이 하면 됩니다.
#.items()로 key,value값 반환
#key = k , value = v
for key,value in dic_list.items():
print(key,value)
for k,v in dic_list.items():
print(k,v)
딕셔너리. items()로 key, value값 반환하고 각각의 값을 뽑아 올 수 있습니다.
실행결과
딕셔너리 key value 뽑아오기
그리고 편리하게 연산하는 것도 가능합니다.
- 모든 벨류에 2곱하기
for k, v in dic_list.items():
dic_list[k] = v*2
print(dic_list)
실행결과
딕셔너리 for문 실행결과
- key를 a로 가지고 있는 값을 3으로 변환
#a 키를 가지고 있는 벨류를 3으로 변환
for key in list(dic_list.keys()):
if key == 'a':
dic_list[key] = 3
print(dic_list)
실행결과
딕셔너리 for문 실행결과2
- key를 a로 가지고 있는 값을 삭제
#a 키값을 가지고 있는 것을 삭제
for key in list(dic_list.keys()):
if key == 'a':
del dic_list[key]
print(dic_list)
실행결과
딕셔너리 for문 실행결과3
오늘은 파이썬에서 필요한 흐름을 제어하는 법에 대해서 알아봤습니다. 이것만 잘 사용해도 여러 문제를 해결함에 있어서 큰 도움이 되니 연습이 많이 필요합니다.
'Python' 카테고리의 다른 글
[배열] Python 문자열 배열 입력받기 (0) | 2022.09.17 |
---|---|
[기초] Python 변수값의형태 - 2 (0) | 2022.09.17 |
[기초] Python 변수값의 형태 (0) | 2022.09.17 |
[기초] Python 변수 선언하기 (1) | 2022.09.17 |
크롤링 실행시 에러 (0) | 2022.08.12 |