반목문이란? & 반복문이 필요한 이유
- 코드를 붙여 넣는 데 시간이 오래 걸림
- 프로그래밍 측면에서 비효율적임
- 반복되는 작업을 처리하는 반복문의 기능을 제공
- 반목적인 작업을 처리하는 도구
- 코드 작업에서 가장 많이 사용하는 구문 중 하나
for와 range의 동작 과정
즉, for문은 반복 횟수가 정해져 있을 때 주로 사용한다.
for i in range(10):
print("Hello, bitamin!", i)
print("반복문 끝!")
for i in range(10):
print(i)
i = 10
다양한 for문의 사용
1) range 증가 폭 사용하기
for i in range(10,0,-1):
print(i)
for i in range(0, 30, 3):
print(i)
2) list 원소 순회하기
name = ['이소연', '김도경', '김지윤', '서현재']
for n in name:
print(n)
3) tuple 원소 순회하기
name = ("이소연", "김도경", "김지윤", "서현재")
for n in name:
print(n)
4) 문자열 순회하기
for i in "hello bitamin!":
print(i)
5) dictionary 순회하기
bitamin = {"교육부":"김도경", "기획부":"김지윤", "총무부":"서현재"}
for depart in bitamin: # key값만 출력됨. bitamin.keys()와 결과가 같다
print(depart)
bitamin = {"교육부":"김도경", "기획부":"김지윤", "총무부":"서현재"}
for name in bitamin.values():
print(name)
bitamin = {"교육부":"김도경", "기획부":"김지윤", "총무부":"서현재"}
for depart, name in bitamin.items():
print(depart, name)
for문 응용
enumerate 함수
- 순서와 리스트의 값을 전달하는 기능
- '열거하다'라는 뜻
- 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받아
- index값을 포함하는 enumerate 객체를 리턴
- for문과 함께 자주 사용
name = ['이소연', '김도경', '김지윤', '서현재']
list(enumerate(name))
name = ['이소연', '김도경', '김지윤', '서현재']
for index, name in enumerate(name):
if index > 1:
print(index, name)
Q. 학생(1~5번)의 시험점수가 50, 70, 80, 20, 90점일 때, 시험 점수가 60점이 넘으면 합격, 그렇지 않으면 불합격이다. 각 학생이 합격인지 불합격인지 결과를 보여주는 코드를 구현해보자.
# Step 1) 시험점수를 list로 만들기
score = [50, 70 ,80 ,20 ,90]
# Step 2) 시험점수와 학생을 mapping하기
data = enumerate(score)
# Step 3) 주어진 조건을 if문을 활용하여 구현하기
for idx, sc in data:
if sc > 60:
print(idx+1, ':', sc, '(합격)')
else:
print(idx+1, ':', sc, '(불합격)')
while문의 기본구조 & 동작과정
- 기본 구조
while 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
...
- while 뒤의 조건문이 참인 동안 반복 수행
- 조건문이 False가 되면 멈추고 다음 코드를 실행
- 반드시 반복을 멈추게 하는 요소가 필요
- while문에 속하는 문장은 들여쓰기 필수
즉, while문은 반복 횟수가 정해져 있지 않을 때 주로 사용한다.
다양한 while문의 활용
Q. 'Hello, bitamin!'을 100번 출력해보자
i = 0
while i < 100:
print("Hello, bitamin", i)
i += 1
(중략)
Q. 열 번 찍어 안넘어가는 나무 없다
treehit = 0
while treehit < 10:
treehit += 1
print("나무를", treehit, "번 찍었습니다")
if treehit == 10:
print("나무 넘어갑니다")
무한 loop
- while문에 반복을 멈추는 요소가 없으면 무한 loop를 돌게 된다
- while에 True를 지정할 때, 0이 아닌 숫자는 True로 취급, 내용이 있는 문자열은 True로 취급
반복문 강제로 빠져나가기 (break문)
1) while문
i = 0
while True:
print(i)
i += 1
if i == 10:
break
2) for문
for i in range(100000000):
print(i)
if i == 10:
break
Q. 자판기에 한 잔에 300원인 커피가 10잔이 남아있다. 커피가 다 떨어질 때까지의 과정을 while문을 사용하여 구현해보자
# Step 1) 커피는 10잔이 남아있음을 변수로 저장
money = 300
coffee = 10
# Step 2) 돈을 받을 때마다 커피가 한 잔씩 소진
while money:
print("돈을 받았으니 커피를 드립니다")
coffee -=1
print("남은 커피는", coffee, "잔입니다.")
# Step 3) 커피가 모두 소진되면 판매 중지
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
break
처음으로 돌아가기(continue문)
- 반복문 전체를 빠져나가지 않고 반복문의 맨 처음으로 돌아가고 싶을 땐?
- 특정 조건에서 코드 실행을 건너뛰고 싶을 땐?
1) while문
i = 0
while i < 100:
i += 1
if i % 2 == 0: # i가 짝수일 때 print하지 않고 while문의 조건을 판단하는 곳으로 돌아감
continue
print(i)
2) for문
for i in range(100):
if i % 2 == 0: # i가 짝수일 때 print하지 않고 for문의 변수 지정하는 곳으로 돌아감
continue
print(i)
실행할 코드가 없을 때 (pass문)
- 아무 일도 하지 않고 그냥 넘어간다는 뜻
- if 다음에 아무 코드도 넣지 않으면 오류가 발생하므로 조건문의 형태를 유지하기 위해 사용
- 나중에 작성해야 할 코드를 표시할 때 사용
for i in range(100):
if i % 2 == 0: # i가 짝수일 때 실행할 코드가 없음
pass
print(i)
중첩 루프
- 반복문 여러 개가 겹쳐 있는 구조
- 2차원 데이터를 다룰 때 자주 사용
Q. 2차원 리스트를 1차원으로 바꿔보기
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new = []
for i in matrix:
for j in i:
print(j)
new.append(j)
new
Q. 10 X 10 구구단 만들어보기
for i in range(1,11):
for j in range(1,11):
print(i, "*", j, "=", i*j)
print("="*50)
'Python > 데이터 전처리' 카테고리의 다른 글
데이터프레임 연산(판다스/Pandas) (0) | 2022.04.11 |
---|---|
데이터프레임 합치기(판다스/Pandas) (0) | 2022.04.07 |
데이터프레임 살펴보기 및 필터링(판다스/Pandas) (0) | 2022.03.28 |
데이터프레임 핸들링(판다스/Pandas) (0) | 2022.03.25 |
파이썬 기초 - 조건문 (0) | 2022.03.25 |