내일배움 본캠프

[내일배움 본캠프] 조건문과 반복문(if, For, While)

hyeon-ji 2026. 5. 20. 17:45

오늘은 파이썬에서 조건문과 반복문에 대해서 학습을 진행했다.


↓ ↓ ↓ 연산자 총정리↓ ↓ ↓

더보기

   < 비교 연산자 >

  • > : 초과
  • < : 미만
  • >= : 이상
  • <= : 이하
  • == : 같다
  • != : 같지 않다
  • + : 덧셈
  • - : 뺼셈
  • * : 곱셈
  • ** : 거듭제곱
  • / : 나눗셈
  • // : 몫(정수 나눗셈)
  • % : mod 나머지

   <논리 연산자>

  • and : 모두 참일 때 참
  • or : 하나 이상이 참일 때 참
  • not : 조건을 부정

  ↓ 데이터 조작의 기본 연산 ↓  

더보기
  • C(Creat) : 데이터를 추가하거나 새롭게 '생성'하는 작업
  • R(read) : 데이터를 '조회'하거나 '접근'하는 작업(읽기)
  • U(Update) : 기존 데이터를 변경하거나 업데이트하는 방법(수정)
  • D(Delete) : 데이터를 '삭제'하거나 제거하는 방법

▶ 조건문 if

→ 특정 조건이 참(True)인 경우에만 특정 코드 블록을 실행한다.

→ ' if ', ' elif(else if의 줄임말) ', ' else '를 사용하여 구성한다.

→ 띄어쓰기, 들여 쓰기 주의하기

→  ' : ' 콜론 꼭 붙이기

if 조건A:
    처리A
elif 조건B:
    처리B
else:
    처리C
처리D

 

● 조건문 if의 예시

x = 10
y = 5

if x > 5 and y < 10:
    print("x는 5보다 크고, y는 10보다 작습니다.")
elif x <= 5 or y > 10:
    print("x는 5보다 작거나 같거나, y는 10보다 큽니다.")
else:
    print("다른 조건")

 

결과는?

더보기

x는 5보다 크고, y는 10보다 작습니다.

tests = [13, (23, 14), {"a": 1, "b": 13}, 'happy', 5]

if tests[0] == 1:
  tests.pop()
elif tests[2] == len(tests):
  tests.append("balanced")
elif "happy" in tests:
  index = tests.index("happy")
  tests[index] = tests[index].replace("happy", "excited")
elif type(tests[3]) == dict:
  tests[-2] = sum(item.values())
else:
  pass

print("변경된 리스트:", tests[-3:])

 

결과는?

더보기

변경된 리스트: [{'a': 1, 'b': 13}, 'excited', 5]

 

 

▶ 반복문( for, while )

▶ For

for 변수 in 반복할_데이터:
    코드_블록

→  반복이 끝날 때까지 반복 수행

'''
range(stop)
range(start, stop)
range(start, stop, step)
'''

for i in range(5):
    print(i)

→  ' : ' 콜론 꼭 붙이기

→  'range()' 함수는 연속된 정수를 생성하는데 사용되는 내장 함수이다.

→ 직관적으로 코드를 짜고 싶을 때 5+1로 작성하는 방법도 있다!

'start' : 순차적인 정수 시퀀스의 시작 값. 생략 가능하며 기본값은 ' 0 '이다.

'stop' : 순차적인 정수 시퀀스의 끝 값. 필수로 지정해줘야 한다. 단, 실제로 생성되는 마지막 숫자는 이 값보다 작다.

'step' : 각 숫자 사이의 간격. 생략 가능하며 기본값은 ' 1 '이다.

# 1부터 시작하여 10 이전까지 2씩 증가하는 정수 시퀀스 생성
for i in range(1, 10, 2):
    print(i, end=' ')
    
'''
print(i, end=' ')에서 " end=' ' "를 작성하는 이유는?
print()함수는 기본적으로 줄바꿈(\n)이 내장되어 있다.
따라서 끝을 공백처리한다는 의미의 " end=' ' "를 작성하여 값을 한 줄로 출력한다.
'''

 

결과는?

더보기

1 3 5 7 9

size = 10

for i in range(1, size + 1):
    print("*" * i)


결과는?

더보기

10단으로 이루어진 직각삼각형 출력!

→  list의 슬라이싱이랑 비슷하지만 다름! list 슬라이싱은 내가 가지고 있는 데이터를 가지고 오는 것이고, 반복문에서의 range()데이터를 생성할 때 사용하는 것이다!

→ 같은 값을 출력하더라도 코드를 어떻게 짜는지에 따라 여러 개 코드형태가 나올 수 있다.

 

 

● if문과 For문 함께 사용하기

for i in range(1, 101):
  if i % 3 == 0:
    print(i, end=' ')

 

결과는?

더보기

3 6 9 12 ... 93 96 99

sentence = "Hello World"
result = ""
for char in sentence:
    if char != "o":
        result += char
print(result)

 

결과는?

더보기

Hell Wrld

 

● 이중 For문

for i in range(2, 10):
    print(i, "단:")
    for j in range(1, 10):
        print(i, "x", j, " = ", i * j)

 

결과는?

더보기

         ~ 9단까지 출력

size = 5
for i in range(size, 0, -1):
    for j in range(i):
        print("*", end="")
    print()

 

결과는?

 

● 실전에서 사용되는 반복문 예시

 

통계 계산↓

# 평균 계산
data = [10, 20, 30, 40, 50]
total = 0
for d in data:
    total += d
mean = total / len(data)
print("Mean:", mean)

 

결과는?

더보기

Mean: 30.0

   모델 평가   

true_values = [1, 0, 1, 0, 1]
predicted_values = [0, 0, 1, 0, 1]
correct_predictions = 0
for true, pred in zip(true_values, predicted_values):
    if true == pred:
        correct_predictions += 1
accuracy = correct_predictions / len(true_values)
print("Accuracy:", accuracy)

 

결과는?

더보기

Accuracy: 0.8

 

▶ While문

→ 조건을 만족하는 동안 코드 블록을 반복적으로 실행한다.

→ 특정 조건이 참(True)일 때만 실행되며, 거짓(False)이 될 때까지 반복한다.

→  무한반복을 조심해라!

while 조건:
    코드_블록

 

user_input = ''
while user_input != 'quit':
  user_input = input("Type 'quit' to exit: ")
  print("You typed:", user_input)

 

결과는?

무한 루프와 break문

while True:
    user_input = input("Type 'quit' to exit: ")
    if user_input == 'quit':
        break
    print("You typed:", user_input)


결과는?

이 코드는 무한 루프를 생성하고 사용자가 'quit'을 입력하면 루프를 종료한다.

→ 반복문에는 ' break ', ' pass ', ' continue '와 같이 특정 조건에 따라 반복 동작을 제어할 제어문을 함께 자주 사용한다.

 

  break

→ 현재 돌고 있는 루프를 꺠고나와서 종료한다.

total = 0
while True:
    num = input("숫자를 입력하세요 (종료하려면 'quit' 입력): ")
    if num == 'quit':
        break
    total += int(num)

print("합:", total)

 

결과는?

더보기

         → 사용자가 'quit'을 입력할 경우 반복문을 종료한다.

 

√  pass

→ 코드가 비어있는 것과 같다.

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
    else:
        print(num, "은 홀수입니다.")

 

결과는?

더보기

        → 아무런 동작을 하지 않고 다음 반복을 진행한다. 홀수를 출력하는 반복문에서 짝수일 경우 아무 작업도

            하지 않고 다음 반복을 진행한다.

 

√  continue

→ 코드를 무시하고 즉시 다음 루프를 실행한다.

num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        continue
    print(num, end=' ')

 

결과는?

더보기

         → 짝수일 경우에만 출력하고, 홀수일 경우 다음 반복을 진행한다.

 

● continue와 pass의 차이점

구분 continue pass
의미 현재 반복을 건너뛰고 다음 반복으로 이동 아무 동작도 하지 않고 넘어감
사용 위치 반복문(for, while) 안에서 주로 사용 어디서든 사용 가능
역할 반복 흐름 제어 문법적으로 비워둘 때 사용
실행 결과 아래 코드를 실행하지 않고 다음 반복 진행 그냥 지나감 (코드 흐름 변화 없음)
주 용도 특정 조건에서 반복 스킵 아직 구현 안 한 코드 자리 표시
반복문 영향 있음 없음

[Quiz]

Q. 1부터 100까지의 정수 중에서 3의 배수일 때 "Fizz", 5의 배수일 때 "Buzz"를 출력하세요.

더보기
for i in range(1, 101):
  if i % 3 == 0:
    print("Fizz")
  elif i % 5 == 0:
    print("Buzz")
  else:
    print(i)

 

         결과는?

         ~


☆ 데이터 리터러시 ☆

● 문제 정의란?

  • 데이터 분석 프로젝트 성공을 위한 초석
  • 분석하려는 특정 상황이나 현상에 대한 명확하고 구체적인 진술
  • 프로젝트의 목표를 설정하고 분석 방향을 결정

 

● 문제 정의를 하는 이유

  • 풀고자 하는 것을 명확하고 정의하고, 이를 해결하기 위한 데이터 분석의 방향성을 정하고 결과를 정리하고 해석하여 더 나아지기 위한 새로운 액션 플랜을 수립하기 위함이다.

 

● 문제정의의 핵심

  • So What?
    • 수집한 정보와 소재에서 '결국 어떻다는 것인지'를 알아내는 작업
    • 그래서, 따라서, 이렇듯 앞에 오는 정보나 소재에서 과제의 답변에 맞는 중요한 핵심을 추출하는 작업
    • 나타난 현상을 바탕으로 과제에 비추어 말할 수 있는 내용의 핵심을 추출하는 작업
  • Why So?
    • 왜 그렇게 말할 수 있는지
    • 구체적으로 무슨 뜻인지를 검증하고 확인하는 작업
    • So What?한 요소와 타당성을 자료 전체 혹은 그룹핑한 요소로 증명할 수 있다는 사실을 검증하는 작업

 

● 문제 정의를 해봅시다!

→ 상황 : 3개월 전부터 자사 제품의 사용자 수가 감소하고 있다. 사용자 수를 늘리기 위한 포인트 이벤트를 하고 있지만, 효과가 없어 보인다. 또한 자사 제품 내 서비스 중 A보다 B가 더 안 좋은 상황이다. 사용자가 줄었지 때문에, 수입도 감소하고 있다.

 

→ 문제 정의 예시

더보기

" 상황 A "

3개월 전부터 A, B제품 모두 사용자 수가 감소하고 있는 상황이다.

사용자 수를 늘리기 위해 포인트 이벤트를 하고 있지만 효과가 없다.

사용자도 줄고 이벤트를 진행했지만 효과를 보지 못해 수입이 줄어들고 있는 상황이다.

● 문제 정의 방법론

 

1. MECE

  • 문제 해결과 분석에서 널리 사용되는 접근 방식
  • 문제를 상호 베타적(mutually exclusive)이면서, 전체적으로 포괄적(collectively exhaustive)인 구성요소로 나누는 것
  • MECE를 통해 복잡한 문제를 체계적으로 분해하고, 구조화된 방식으로 분석할 수 있다.
더보기

   < 잘못된 예시 >

  • 사람 남성, 여성, 아저씨    →  남성과 아저씨가 중복
  • 영화 장르 액션, 스릴러, 공포      →   멜로, 코미디 등 누락 장르 존재
  • 자동차 SUV, 세단, 쿠페, 현기차    →   분류 기준이 다름. 자동차 종류 vs 브랜드
  • 3학년 3반 학습원 영어 우수 학생, 수학 우수 학생    →   분류 기준이 불명확, 서로 중복되고 누락된 정보 존재

2. 로직트리(Logic Tree)

  • MECE 원칙을 기반으로 복잡한 문제를 더 작고 관리하기 쉬운 하위 문제로 분해하는 데 사용
  • 상위 문제로부터 시작하여 하위 문제로 계층적 접근
  • 일반적으로 도표 형식으로 표현되어 쉽게 파악할 수 있음
더보기

위의 상황A 에 대한 'Logic Tree'

 

상황A 수익성 개선 방법에 대한 'Logic Tree'

문제 정의 Tips!

  • 결과를 공유하고자 하는 사람이 누구인지 정의하기
  • 결과를 통해 원하는 변화를 생각하기
  • 회사 소속이라면, 경영자의 입장에서 보려고 노력하기
  • 많은 사람들과 의견을 나눠보는 것도 방법이다
  • 반드시 혼자서 오래 고민해 보는 시간을 가질 것.

처음에 파이썬의 조건문과 반복문의 개념을 학습할 때는 이해가 되지 않고 무슨 의미인지 이해가 잘 되지 않았다. 하지만 라이브 세션 강의와 LMS강의를 통해 반복 학습을 하고, 직접 Colab에 코드를 입력해 보며 조건문과 반복문을 이해해 나갔다. 그 결과 LMS 강의 자료 마지막 부분에 있는 퀴즈를 막힘없이 모두 풀 수 있었다!

 

추가로 데이터 리터러시 강의를 수강하며 ‘문제 정의’를 올바르게 하는 방법에 대해 학습했다. 이전에는 문제 정의란 단순히 발생한 문제 상황과 그 원인을 파악하는 것이라고 생각했다. 그러나 이번 강의를 통해 문제를 구체적이고 명확하게 정의하는 과정이 더 좋은 결과를 도출하는 데 매우 중요하다는 점을 깨달았다. 문제를 명확히 정의해야 데이터 분석의 방향성을 올바르게 설정할 수 있고, 결과를 정리하고 해석하는 과정 또한 체계적으로 진행할 수 있기 때문이다. 이를 통해 문제 상황에 더욱 적합한 결과를 도출할 수 있다는 점을 배웠다.