-
[TIL] 20.12.16 Python 제어문(조건문, 반복문)Cloud/클라우드 아키택트 양성과정 2021. 1. 1. 22:38
[20.12.16] Python 제어문(조건문, 반복문)
프로그램 구조에서 빠질 수 없는 조건문, 반복문에 대해서 학습했다.
글을 쓰는 날짜는 벌써 2021년이다. 얼른 포스팅하자...
* 조건문(if)
- 특정 조건을 만족하거나, 만족하지 않을 경우에 프로그램이 수행할 부분을 옮기는 분기점
- if, else, elif를 이용해서 작성
※ 비교 연산자
> 조건문에 대해서 정리하기 전에 비교 연산자를 정리하고 가자.
비교 연산자 설명 x < y x가 y보다 작다 x > y x가 y보다 크다 x == y x와 y가 같다 x != y x와 y가 같지 않다 x >= y x가 y보다 크거나 같다 x <= y x가 y보다 작거나 같다 > 위와 같은 비교 연산자는 조건문의 조건에서 자주 이용되기에 알아둘 필요가 있다.
1) 단일 if문
> 가장 기본적인 형태이다. if문 뒤에 나오는 조건을 만족하면 if 하단 블록을 실행한다.
money = 2000 if money >= 3000: # 돈이 3천원 이상 있다면 print('택시')
2) if-else 문
> 단일 if문에서 나아간 형태이며 조건을 만족했을 때와 그렇지 않았을 때의 블록을 정의한다.
> if문의 조건을 만족하지 못할 경우에 else문 하단 블록을 실행한다.
money = 2000 if money >= 3000: print('택시') else: print('도보') # 출력 : 도보
3) if-elif-else 문
> if-else문은 단일 조건 만족/불만족에 대해서 처리했다.
> 여러 가지 조건에 따라서 다르게 실행하려면 elif를 동원해서 처리할 수 있다.
> if문과 여러 elif문을 통해서 다양한 조건을 검사할 수 있다.
money = 1000 if money == 100: print('백원') elif menoy == 500: print('오백원') elif money == 1000: print('천원') else: print('해당 없음') # 출력 : 천원
4) 중첩 if문
> 조건을 검사한 뒤에 또 다른 검사가 필요하다면 if문을 중첩시킬 수 있다.
> if문 아래에 다시 if문을 작성한다.
num = 15 if num%3 == 0: if num%5 == 0: print('3과 5의 공배수 입니다.') else: print('3의 배수입니다.') elif num%5 == 0: print('5의 배수입니다.') else: print('3의 배수도, 5의 배수도 아닙니다.') # 출력 : 3과 5의 공배수 입니다.
> 3의 배수, 5의 배수, 3과 5의 공배수인지 판단하는 예시다.
> 3의 배수를 검사하는 if문 아래에 5의 배수인지를 검사해서 3의 배수인지 공배수인지 분기한다.
5) 다중 if문과 if-elif문의 차이점
> if-elif는 여러 가지 조건을 검사하는 조건문이다.
> 다중 if문도 여러가지 조건을 검사하는 조건문이다.
> 둘의 차이는 조건을 만족할 시에 다른 조건들을 모두 검사하는가 혹은 지나치는가의 차이가 있다.
# 1) 다중 if문 num = 6 if num%2 == 0: print('2의 배수입니다.') if num%3 == 0: print('3의 배수입니다.') # 출력 # 2의 배수입니다. # 3의 배수입니다. # 2) if-elif문 num = 6 if num%2 == 0: print('2의 배수입니다.') elif num%3 == 0: print('3의 배수입니다.') # 출력 # 2의 배수입니다.
> 다중 if문의 경우 첫 번째 if문을 검사 후 조건 만족 시 실행하고 그다음 if문도 검사를 진행한다.
> if-elif문의 경우 첫 번째 if문을 검사 후 조건을 만족하면 다른 조건을 검사하지 않는다.
> 만약 if-elif문에서 첫 번째 if문을 만족하지 못했다면 그 다음 elif문으로 넘어가서 조건을 검사한다.
* 반복문(while, for문)
- 프로그램이 반복적인 일을 수행하도록 하는 제어역할
- while, for문 2가지 형태가 있음.
1) while문
> 조건이 참인 동안에 하단 블록의 문장이 반복적으로 수행됨.
hit = 0 # 나무를 찍은 횟수 while hit < 10: # 나무를 찍은 횟수가 10번 보다 작은 동안 반복 hit += 1 print(f'나무를 {hit}번 찍었습니다.') if hit == 10: # 나무를 열 번 찍으면 print('나무가 넘어갑니다.')
> while 바로 옆에 반복문을 실행할 조건을 걸어두고 실행한다.
2) for문
> while문과 비슷하나 특정 구간(리스트, 튜플, 문자열 등)의 요소를 차례대로 지나간다.
> 반복할 구간은 다양한 자료구조가 올 수 있지만 단순 반복은 range() 함수를 활용한다.
> range() : 숫자 리스트를 자동으로 만들어주는 함수
> range(a) : 0부터 a미만의 숫자를 포함하는 range 객체 생성
> range(a,b) : a이상 b미만의 숫자를 포함하는 range 객체 생성
for i in range(5): print(i) ''' 출력 1 2 3 4 ''' for i in range(1,6): print(i) ''' 출력 1 2 3 4 5 '''
※ while, for문은 서로 완벽하게 호환이 된다. (서로의 형태로 옮겨 작성할 수 있다.)
3) 중첩 for문
> for문 안에 for문을 넣은 구조다. 특정 상황에서 유용하게 쓰일 수 있다.
> 다만, 너무 복잡한 구조를 가질 경우 프로그램 실행 시간이 필요 이상으로 커질 수 있다.
# 구구단 예시 for i in range(2,10): for j in range(1,10): print(f'{i} * {k} = {i*k}')
4) 리스트 내포
> 리스트 선언 시 for문을 내포해서 선언할 수 있다.
a = [i for i in range(1,5)] print(a) # a => [1,2,3,4]
※ break, continue
> 강제로 반복문을 빠져나오는 break와 다시 처음으로 돌아가는 continue를 사용할 수 있다.
# break 예시 num = 1 while True: if num%5 == 0: break print(num) num += 1 # num을 출력하되 num이 5의 배수가 되면 break로 반복문 탈출 # continue 예시 num = 1 while num<10: if num%2 == 0: num += 1 continue print(num) num += 1 # num을 출력하되 num이 짝수이면 다시 반복문 처음으로 continue
* 실습 문제
> 이번 실습 문제는 양이 많아서 일부분만 추렸다.
1) 2의 배수면 '2의 배수', 3의 배수면 '3의 배수', 5의 배수면 '5의 배수', 7의 배수면 '7의 배수'로 출력하되 해당되는 값이 없을 경우 '해당되는 값이 없습니다.'를 출력하기
# 풀이 num = int(input('> ')) check = False if num%3==0: print('3의 배수') check = True if num%5==0: print('5의 배수') check = True if num%7==0: print('7의 배수') check = True if num%2==0: print('2의 배수') check = True if not check: print('해당되는 값이 없습니다.')
2) 1부터 100까지 출력하되 5의 배수는 제외하고 출력하기
# 풀이 for i in range(1,101): if i%5 == 0: continue print(i)
3) txt = "Python"일 때 아래와 같이 출력하기
P
Py
Pyt
Pyth
Ptyho
Python
# 풀이 txt = 'Python' for i in range(len(txt)+1): print(txt[:i])
※ 이 게시물은 'Do it 점프 투 파이썬' 교재와 엔코아 플레이데이터에서 배운 내용을 토대로 작성되었습니다.
'Cloud > 클라우드 아키택트 양성과정' 카테고리의 다른 글
[TIL] 20.12.18 클래스, 객체 (0) 2021.01.07 [TIL] 20.12.17 Python 함수, 파일 읽기/쓰기 (0) 2021.01.03 [TIL] 20.12.15 Jupyter notebook 설치, Google colab 사용, 파이썬 자료형 (0) 2020.12.28 [TIL] 20.12.14 (2) 파이썬 개념 / 특징 (0) 2020.12.22 [TIL] 20.12.14 클라우드 개념 학습 (0) 2020.12.20