제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.22]

[강의 요약]

[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일반 강의 자료 일부를 발췌하여 작성되었습니다.”