-
파이썬 프로그래밍(python) 4 - 조건문, 반복문과 할당연산자(if, elif, else, for, while, break, continue, range)데이터분석/파이썬 2021. 11. 14. 10:32반응형
https://kbkb456.tistory.com/66
저번 시간까지 변수 선언과 변수 타입에 대해서 알아봤습니다.
오늘부터 소개드릴 것은 파이썬을 함에 있어서 정말 정말 편하게 만들어주는 조건문과 반복문입니다.
간단한 게 조건문과 반복문을 설명하자면 이렇습니다.
- 조건문: 조건에 맞게 코드를 실행시켜주는 코드 블록
- 반복문: 원하는 수만큼 코드를 반복시켜주는 코드 블록
이것을 통해서 특정 조건에 따라 코드의 흐름을 제어할 수 있습니다. 이를 프로그래밍에서 흐름 제어(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
실행결과
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
실행 결과
- 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)
range(시작 숫자, 끝 숫자): 시작 숫자부터 (끝 숫자 -1)까지 나열해줍니다.
ex) range(1,10) = 1,2,3,4,5,6,7,8,9
for i in range(1,5): print(i)
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]까지 반복해서 출력해주게 되는 겁니다.
if문과 섞어서 이런 식으로도 활용이 가능합니다. 만약 내가 리스트 안에 3,4만 출력하고 싶다고 한다면 이런 식으로 가능할 것입니다.
for item in item_list: if item in [3,4]: print(item)
딕셔너리를 이용한 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값 반환하고 각각의 값을 뽑아 올 수 있습니다.
실행결과
그리고 편리하게 연산하는 것도 가능합니다.
- 모든 벨류에 2곱하기
for k, v in dic_list.items(): dic_list[k] = v*2 print(dic_list)
실행결과
- key를 a로 가지고 있는 값을 3으로 변환
#a 키를 가지고 있는 벨류를 3으로 변환 for key in list(dic_list.keys()): if key == 'a': dic_list[key] = 3 print(dic_list)
실행결과
- key를 a로 가지고 있는 값을 삭제
#a 키값을 가지고 있는 것을 삭제 for key in list(dic_list.keys()): if key == 'a': del dic_list[key] print(dic_list)
실행결과
오늘은 파이썬에서 필요한 흐름을 제어하는 법에 대해서 알아봤습니다. 이것만 잘 사용해도 여러 문제를 해결함에 있어서 큰 도움이 되니 연습이 많이 필요합니다.
https://colab.research.google.com/drive/173FdHs_NNWEm9c4vbAzkbtTsUPSeMPY1?usp=sharing
반응형'데이터분석 > 파이썬' 카테고리의 다른 글
파이썬 프로그래밍(python) 6 - 예외처리와 라이브러리활용(try, except, import) (0) 2021.11.19 파이썬 프로그래밍(python) 5 - 함수와 클래스(def, class) (0) 2021.11.15 파이썬 프로그래밍(python) 3 - 변수값의 형태 -2(리스트, 튜플, 딕셔너리, boolean, set) (0) 2021.11.13 파이썬 프로그래밍(python) 2 - 변수값의 형태 - 1(숫자형과 문자열) (0) 2021.11.08 파이썬 프로그래밍(python) 1 - 변수 선언 (0) 2021.11.07