Welcome to the BBOGAK

Nice to see you here

LET's GET it Dev. Knowledge

Python

[기초] Python 조건문,반복문,할당연산자(if,elif,else,for,while,break,continue,range)

IT뽀각 2022. 9. 17. 13:45
반응형

이번글에서 소개드릴 것은 파이썬을 함에 있어서 정말 정말 편하게 만들어주는 조건문과 반복문입니다.

 

간단한 게 조건문과 반복문을 설명하자면 이렇습니다.

 

- 조건문: 조건에 맞게 코드를 실행시켜주는 코드 블록

- 반복문: 원하는 수만큼 코드를 반복시켜주는 코드 블록

 

이것을 통해서 특정 조건에 따라 코드의 흐름을 제어할 수 있습니다. 이를 프로그래밍에서 흐름 제어(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

 

오늘은 파이썬에서 필요한 흐름을 제어하는 법에 대해서 알아봤습니다. 이것만 잘 사용해도 여러 문제를 해결함에 있어서 큰 도움이 되니 연습이 많이 필요합니다.

 

[출처] https://kbkb456.tistory.com/68

반응형

'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