제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.22]
김뚱입니다
2025. 3. 22. 22:10
[강의 요약]
[Ch 01. 파이썬 기초] 강의 수강
32_반복문부터 36_for문과 while문 비교까지 강의 수강하였음
[반복문]
- 반복문이란?
- 특정 실행(구문)을 반복하는 것(반복 실행)
- 사용하는 이유 : 프로그래밍이 간결하고 유지 보수가 쉽다
- 반복문 사용 예시(많다)
- 대량 메일 또는 문자 발송
- 인사말 반복
- 구구단 출력
- 팩토리얼
- 영어 단어 반복 학습 도구
- 게임 반복 실행
- 매일 아침 기상 알람
- 음원 반복 재생
- 타이머
# 비효율적인 코드
print('{} * {} = {}'.format(2, 1, (2 * 1)))
print('{} * {} = {}'.format(2, 2, (2 * 2)))
print('{} * {} = {}'.format(2, 3, (2 * 3)))
print('{} * {} = {}'.format(2, 4, (2 * 4)))
print('{} * {} = {}'.format(2, 5, (2 * 5)))
print('{} * {} = {}'.format(2, 6, (2 * 6)))
print('{} * {} = {}'.format(2, 7, (2 * 7)))
print('{} * {} = {}'.format(2, 8, (2 * 8)))
print('{} * {} = {}'.format(2, 9, (2 * 9)))
# 효율적인 코드
for i in range(1, 10):
print('{} * {} = {}'.format(2, i, 2 * i))
★코드 설명★
구구단을 예시로 한 코드
- 비효율적인 코드
- 속된 말로 노가다식으로 똑같은 코드를 여러 번 작성
- 구구단은 9단까지 있는데 이런 식으로 코드 작성하면 너무 비효율적임
- 효율적인 코드
- 반복문을 사용
- 코드가 간결해졌고 2단뿐 아니라 3단 4단으로도 쉽게 변경해서 출력 가능함
# 비효율적인 코드
print('{}선수 한테 메일 발송'.format('박찬호'))
print('{}선수 한테 메일 발송'.format('박세리'))
print('{}선수 한테 메일 발송'.format('박지성'))
print('{}선수 한테 메일 발송'.format('김연경'))
print('{}선수 한테 메일 발송'.format('이승엽'))
# 효율적인 코드
players = ['박찬호', '박세리', '박지성', '김연경', '이승엽']
for player in players:
print('{}선수 한테 메일 발송'.format(player))
★코드 설명★
여러 대상에게 반복 작업하는 코드
- 비효율적인 코드
- 이 코드에서는 대상이 5명이지만 대상이 수십 수백 명이라면?
- 사실상 반복 작성이 불가능하고 비효율적임
- 효율적인 코드
- 리스트에 이름을 저장한 뒤 각 이름에 대해 반복 실행
- 대상이 늘어나도 리스트만 수정하면 코드 변경 최소화
▶ 반복문 종류
- 횟수에 의한 반복
- 횟수 지정 → 횟수만큼 반복 실행
# 회원이 100명한테 메일 발송
for i in range(100):
print('회원 번호 -> {}'.format(i))
- 조건에 의한 반복
- 조건 지정 → 조건에 만족할 때까지 반복 실행
# 단순 조건 예시
num = 0
while num < 10:
print('num -> {}'.format(num))
num += 1
# 조건이 달라지면 반복 중단
# 온도가 26도 이상이 되면 반복 종료
temperature = 20
while temperature < 26:
print("현재 온도: {}도, 에어컨 가동 중...".format(temperature))
temperature += 1
[횟수에 의한 반복(for문)]
- 횟수에 의한 반복이란?
- 정해놓은 반복 횟수에 따라 반복 실행한다.
- ex) 대량 메일 또는 문자 발송, 인사말 반복, 음원 반복 재생
- 정해놓은 반복 횟수에 따라 반복 실행한다.
- 횟수에 의한 반복은 for문이 주로 사용된다.
for i in range(5):
print("Hello~")
- for문 사용 방법
- 바로 위 코드를 참고해서 설명
- 기본 구조는 for ~ in 키워드 반복 횟수
- range(5)는 0부터 4까지 총 5회 반복할 수 있도록 값을 생성함
- i 변수는 매 반복마다 range(5)에서 꺼낸 값을 받음
- 매 반복마다 print("Hello~")를 실행
- 결과적으로 5번 "Hello~" 출력함
# 7단 출력 예시
for j in range(10):
result = 7 * j
print('{} * {} = {}'.format(7, j, result))
★코드 설명★
코드 흐름에 따라 설명
- range(10)
- 0부터 9까지 총 10개의 숫자
- j 값이 순차적으로 0, 1, 2, ..., 9 이런 식으로 변하면서 7 * j를 계산
- print()로 각 단계에서의 곱셈 결과를 출력
# pass 키워드
for k in range(10):
pass # "아직 구현할 코드가 없으니 건너뛰겠다"는 의미
★코드 설명★
pass 키워드
- pass는 코드를 비워둘 때 사용
- 나중에 코드를 작성할 예정이고 현재는 문법적 공백이 필요한 경우 사용
- 위 코드처럼 사용하면 된다.
- 반복문 자체는 존재하지만 실행할 내용은 없음
# (코드블록), 들여쓰기
for h in range(5):
print("Hi!", end="") # 코드블록
print(" loop statement!") # 코드블록
★코드 설명★
(코드블록), 들여쓰기
- 콜론( : ) 다음 줄에 들여쓰기된 부분이 코드 블록
- 들여쓰기가 없는 라인은 반복문에 포함되지 않음
- 파이썬은 들여쓰기를 통해 반복문 블록의 범위를 구분함
- 이 말은 들여쓰기를 정확히 지키는 것이 중요하다!!
[반복 범위 설정(range() 함수)]
▶ range() 기본 사용 방법
- for i in range(1, 11, 1):
- 1부터 10까지 1씩 증가한다는 의미
- 1은 시작(start), 11은 끝(stop), 1은 단계(증감 폭 step)를 의미한다~
# 1부터 10까지 1식 증가하면서 반복
for i in range(1, 11, 1):
# 0부터 9까지 2씩 증가하면서 반복
for i in range(0, 10, 2):
# 5부터 9까지 1식 증가하면서 반복
for i in range(5, 10, 1):
▶ range() 변형
- 단계 매개변수 생략
- for i in range(1, 11):
- 단계가 1인 경우 생략 가능
- 1부터 10까지 1씩 증가
for i in range(1, 11):
print(i) # 1부터 10까지 출력
- 시작 매개변수 생략
- for i in range(11):
- 시작이 0인 경우 생략 가능
- 0부터 10까지 1씩 증가
for i in range(11):
print(i)
[조건에 의한 반복(while문)]
▶ 조건에 의한 반복이란?
- 조건에 만족하면 반복 실행. 만족하지 않으면 반복을 중단
- ex) 매일 아침 기상 알람, 게임 반복 실행, 타이머
- 조건에 의한 반복은 while문이 주로 사용됨
# while문 기본 구조
endNum = 10
n = 0
while n <= endNum:
print(n)
n += 1
'''
0
1
2
3
4
5
6
7
8
9
10
'''
★코드 설명★
위 코드는 while문 기본 구조
- while n <= endNum:
- n <= endNum 이 참인 동안 반복
- print(n) → 현재 n을 출력
- n += 1 → n 값을 1 증가시켜, 조건이 거짓이 될 시점을 만듦
- n이 10을 초과하면 n <= endNum가 거짓이 되어 반복 종료
▶ while문 사용 방법
# while문 사용 방법
n = 1
while n < 10:
result = 7 * n
print('{} * {} = {}'.format(7, n, result))
n += 1
★코드 설명★
- n = 1로 시작, n < 10 조건이 참이면 반복
- result = 7 * n을 계산 후 출력
- n을 1 증가 → 언젠가 n이 10에 도달하면 n < 10이 거짓이 되어 반복 중단
# pass
while n > 10:
pass
★코드 설명★
- 아까 위에서도 설명했듯이 나중에 코드를 작성한다는 의미로 사용
# 들여쓰기(코드 블록)
n = 1
while n < 10:
print('Hi', end='')
print(' loop statement!')
n += 1
★코드 설명★
- 콜론( : ) 다음 줄에서 들여쓰기된 부분이 while문에 속하는 코드 블록
- 들여쓰기가 끝나면 while문 블록도 끝남
- 파이썬은 들여쓰기로 코드 블록을 구분하므로 주의해야 함
[for문과 while문 비교]
▶ for문이 적합한 경우
# for문 사용(적합)
sum = 0
for i in range(1, 11):
sum += i
print('sum : {}'.format(sum))
# while문 사용(부적합)
sum = 0
n = 1
while n < 11:
sum += n
n += 1
print('sum : {}'.format(sum))
★코드 설명★
- 1부터 10까지의 합을 구할 때
- 반복 횟수가 명확함 → for문 사용이 간결함
▶ while문이 적합한 경우
# for문 사용(부적합)
sum = 0
maxInt = 0
for i in range(1, 101):
if i % 7 == 0 and sum <= 50:
sum += i
maxInt = i
print('i : {}'.format(i))
print('7의 배수의 합이 50이상인 최초의 정수 : {}'.format(maxInt))
# while문 사용(적합)
sum = 0
maxInt = 0
n = 1
while n <= 100 and sum <= 50:
if n % 7 == 0:
sum += n
maxInt = n
print('n : {}'.format(n))
n += 1
print('7의 배수의 합이 50이상인 최초의 정수 : {}'.format(maxInt))
★코드 설명★
- 7의 배수가의 합이 50 이상이 되는 최초의 정수 구하기
- 조건 충족이 목표 → while문 사용이 적합
[나의 생각 정리]
- 경우에 따라 잘 판단해서 for문과 while문을 나눠서 사용하는 법을 배웠다
- 어떤 기준에 따라 사용하는지 정리할 수 있었다
[적용점]
- 반복문도 코딩할 때 많이 사용하므로 적용 범위는 무척 넓다.
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”