Python(4) | 제어문(조건문, 반복문), 문제 풀이

2025. 10. 24. 02:07·개념 정리 step1/Python 기초

안녕하세요!
 
오늘은 파이썬은 제어문에 대해서 공부해 보도록 하겠습니다.👻
하단에 문제 풀이 연습 내용도 포함했습니다.


◻️조건문

조건문은 코드의 실행 흐름을 제어하기 위해 사용한다.
참인지 거짓인지에 따라 다른 코드를 실행한다.
 

◽1. if문

가장 기본적인 조건문.  특정 조건이 참(True)일 경우에만 블록 내의 코드가 실행된다.
조건은 True 또는 False로 평가될 수 있는 표현식이어야 한다.

if 조건:
  실행할 코드

 
if  '안녕하세요': print('결과는 참이다.')  # 한 문장이면 들여 쓰기 없이도 가능하다.
print('프로그램 종료')
 
age = int(input('나이를 입력하세요: '))  # int타입으로 바로 변환 가능


◽2. else 문

else문은 조건문에서 특정 조건이 충족되지 않은 때 실행할 코드 블록을 정의할 때 사용한다.

if 조건:
    코드 블록1
else:
    코드 블록2

 


◽3. elif 문

if - else 구조에서 추가적인 조건을 검사하기 위해 사용.
else if 의 줄임말이다. 주어진 조건 중 하나만 참일 때 실행한다.

if 조건1:
    코드 블록1
elif 조건2:
    코드 블록2
elif 조건3:
    코드 블록3
else:
    코드 블록4

▫️ 다중선택이 필요할 땐?

if 조건을 여러번 쓰면 된다!

if 조건1:
    코드 블록1
if 조건2:
    코드 블록2
if 조건3:
    코드 블록3
else:
    코드 블록4

# 아이디 길이 체크하기
# Walrus Operator(x := expression)
# expression을 계산한 값을 x에 할당하고, 동시에 그 값을 사용합니다.

text = input('아이디를 입력하세요')  # apple
if (length := len(text)) < 3:  # len(text)=> length변수에 담긴다. 예) 글자수가 5 이면 False로 판정해서 else로 내려감
  print(f'아이디가 너무 짧습니다. (입력한 글자 수 : {length})')
else:
  print(f'아이디 "{text}"는 사용 가능합니다.')

 


◽4. 조건부 표현식(Conditional Expression)

조건부 표현식은 파이썬에서 삼항연산자라고도 불린다. if-else 구문을 더 간결하게 사용가능하지만,
복잡한 조건이나 연산을 포함하면 가독성이 떨어져 적절한 상황에서만 사용해야 된다.

조건이 참인 경우 값 if condition else 조건이 거짓인 경우 값

 
num = int(input(' 숫자를 입력하세요: ')
print('짝수') if num % 2 == 0 else print('홀수')
 
 
 

◽5. 구조적 패턴 매칭

파이썬에서 if - else - elif 구문을 더 간결하고 읽기 쉽게 만든 분기문이다.
Java, C의 switch-case와 비슷하지만 훨씬 더 강력한 기능을 가진다.

match 값:
    case 패턴1:
        실행할 코드1
    case 패턴2:
        실행할 코드2
    case _:
        기본 실행 코드 (default)

 
☑️모든 경우가 아닐 때: _ 를 입력한다. else와 비슷. 값을 지정할 때 _는 변수를 안 받겠다는 뜻으로도 쓰인다.

scores = {"국어":95, "영어":88, "수학":76}

match scores:
  case [korean, english, math]:  # 리스트 => 튜플과 리스트는 같은 케이스로 본다. 리스트가 더 위에 있기 때문에 먼저 실행
    print(f'1. 국어: {korean}, 영어: {english}, 수학: {math}')
  case (korean, _, math):        # 튜플 => 값을 지정할때 _ 는 변수를 안 받겠다는 뜻이다.
    print(f"2. 국어: {korean}, 수학: {math}")
  case {"국어": korean, "영어": english, "수학": math}:
    print(f"3. 국어: {korean}, 영어: {english}, 수학: {math}")

 


◻️반복문

반복문은 동일한 작업을 여러 번 실행하기 위해 사용하는 제어 구문이다.
주로 for문, while문을 사용하며, 각각의 반복문은 상황에 따라 적합한 방식을 사용한다.
 

◽1. while문

특정 조건이 참인 동안 반복적으로 코드 블록을 실행하는 제어 구조.
주어진 조건이 참인 동안 실행하며, 조건이 거짓이 되면 반복을 멈춘다.

while 조건:
    # 조건이 참인 동안 실행될 코드

 
# 1부터 100까지 총합을 짜는 알고리즘
i = 0
sum = 0
 
while i <= 100:
   sum += 1  # i가 1씩 더해지면서 sum의 변수에 계속 더해서 저장된다.
   i += 1
 
print(f'부터 10까지의 합: {sum}')


◽2. for문

for문은 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 반복 작업을 수행하는 반복문.
for문은 주로 지정된 범위 내에서 반복할 때 사용한다. 반복할 요소가 미리 정해져 있는 경우에 유용하다.
 
시퀀스란? : 순서가 있는 데이터의 모음

# 요소: 반복할 시퀀스의 각 항목이 for 문의 실행 도중에 할당되는 변수
for 요소 in 시퀀스:
    # 요소에 대한 작업 수행

◽3. range() 함수

range() 함수는 순차적인 정수의 시퀀스를 생성하는 데 사용되는 내장 함수이다.
주로 for문과 사용, 일정한 범위 내를 반복할 때 유용.

range([start], stop, [step])

start (선택 사항): 순차적인 범위의 시작 값을 지정합니다. 기본값은 0입니다.
stop: 순차적인 범위의 끝 값을 지정합니다. 생성된 시퀀스는 stop 값 직전까지의 정수를 포함합니다.
step (선택 사항): 순차적인 값을 증가시키는 간격을 지정합니다. 기본값은 1입니다.

 

◽4. enumerate() 함수

반복문을 사용할 때 인덱스와 값을 함께 가져오기 위해 사용한다. 튜플을 반환하는 이터레이터를 생성한다.

enumerate(iterable, [start=0])

 


▫️iterable , lterator 이란?

literable(반복 가능한 객체): 리스트, 튜플, 딕셔너리, 문자열과 같은 컬렉션 자료형은 반복 가능하다. 이터레이터를 생성.
lterator(이터레이터): 이터러블 객체에서 iter() 함수를 호출해 얻을 수 있다. next() 함수를 사용해 요소를 하나씩 순차적으로 접근.
 


◽5. zip() 함수

zip() 함수는 여러 개의 반복 가능한 객체(iterable)를 병렬적으로 묶어주는 내장 함수.
여러 개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용한다.

li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']

for l1, l2 in zip(li1, li2):  # 데이터가 같이 늘어야한다.
    print(l1, l2)
 
출력:
10 apple
20 banana
30 orange

 
 

◽6. 중첩 반복문

파이썬에서 중첩된 반복문은 하나의 반복문 안에 다른 반복문이 포함된 구조를 의미.
다차원 데이터를 처리하거나 복잡한 작업을 수행할 수 있다.

for 외부_변수 in 외부_시퀀스:
    for 내부_변수 in 내부_시퀀스:
        # 내부 반복문 코드
    # 외부 반복문 코드

 
예제: 별 찍기
 

n = int(input())

for i in range(n):  # i가 0,1,2,3,4 일 때까지 총 5번 반
    for j in range(n - 1 - i):  # 처음: (n-1-i)은 (5-1-0)와 같다. 즉, range(4)로 바뀜.
        print(' ', end='')  # 처음: ' ' 공백이 4번 실행됨.
    for k in range(i+1):  # range(0 + 1)과 같음. 그러므로 '*' 한번 실행
        print('*', end='')
    print()  # 한번 돌아서 나왔으니 줄바꿈.
출력 결과

중첩 반복문이 잘 이해가 안 돼서 주석으로 메모하면서 또 풀었다...


◽7. continue

반복문 안에 사용되며, 반복을 즉시 건너뛰고 싶을 때 넘어가도록 하는 제어문이다.
불필요한 코드를 피하고, 조건에 따라 반복 흐름을 세밀하게 제어가능하다.

logs = [
    "INFO: 사용자 로그인 성공",
    "DEBUG: 세션 생성 중",
    "ERROR: 데이터베이스 연결 실패",
    "INFO: 요청 처리 완료",
    "ERROR: 파일 저장 실패",
    "DEBUG: 응답 전송"
]

error_logs = []

for log in logs:
    # "INFO: 사용자 로그인 성공"
    if not log.startswith("ERROR"):
        continue  # if문이 참이면 무조건 다시 반복문으로 올라감.
    error_logs.append(log)

print('오류 로그만 출력: ')
for e in error_logs:
    print(e)
 
출력:
오류 로그만 출력:
ERROR: 데이터베이스 연결 실패
ERROR: 파일 저장 실패

◽break

반복을 즉시 종료시키는 제어문이다.
break가 실행되면 반복문을 즉시 종료하고 빠져나온다.

orders = ['마우스', '키보드', '모니터', '그래픽카드', '프린터']
stock = {"마우스": 10, "키보드": 5, "모니터": 0, "그래픽카드": 2, "프린터": 3}

print("주문 처리 시작")
for item in orders:
    if stock[item] == 0:
        print(f'{item} 재고가 없습니다. 주문을 중단합니다.')
        break
    print(f'{item} 주문 완료')

print('주문 프로세스 종료')

 


문제 풀이

A, B = map(int, input().split())
li1 = []  # li1의 빈 리스트 생성

while (A != 0 and B != 0):  # 반복문에 들어갈 정수는 A, B 둘 다 0이 아니여야 참
    li1.append(A + B)  # append함수로 li1에 리스트로 값을 저장함
    A, B = map(int, input().split())  # 0, 0 이 나오기 전까지 계속 실행함.

for i in li1:  # 0, 0이 실행되면! li1에 저장되었던 숫자를 반복해서 출력
    print(i)
 


a, b, c = map(int, input().split())

if a == b == c:  # a, b, c 가 같으면 참
    print(f'{10000 + a * 1000}')  # 1개의 변숫값만 같으면 됨.
elif a == b or a == c:  # 2가지 공통 찾기 후 참판정
    print(f'{1000 + a * 100}')
elif b == c:  # 마지막 b, c 판별
    print(f'{1000 + b * 100}')
else:
    li = [a, b, c]  # else로 내려온 값들을 리스트에 담았음.
    li2 = sorted(li, reverse = True)  # li2에는 sorted() 함수로 li를 내림차순 정렬했다.
    print(li2[0] * 100)  # 마지막으로 li2의 첫 번째[0] 인덱스에는 제일 큰 숫자가 있을 것이다.
 
 
 # max() 함수를 사용하면 더 쉬웠겠지만 오늘 배운 내용으로만 문제를 풀어봤다.
 

'개념 정리 step1 > Python 기초' 카테고리의 다른 글

Python(6) | 상속, 스페셜 메서드, 예외처리  (0) 2025.10.27
Python(5) | def, callback, lambda, class  (1) 2025.10.25
Python(3) | 컬렉션 타입 (list, tuple, dict, set), input(), 연산자  (0) 2025.10.22
Python(2) | 변수, 문자열 다루기  (0) 2025.10.21
Python(1) | 개념 정리 및 기초 + 부동 소수점 오차  (0) 2025.10.20
'개념 정리 step1/Python 기초' 카테고리의 다른 글
  • Python(6) | 상속, 스페셜 메서드, 예외처리
  • Python(5) | def, callback, lambda, class
  • Python(3) | 컬렉션 타입 (list, tuple, dict, set), input(), 연산자
  • Python(2) | 변수, 문자열 다루기
고니3000원
고니3000원
프로젝트의 구현 과정과 기술적 노하우를 담았습니다. AI 모델 연구와 매일의 학습 기록을 차곡차곡 공유하고 있습니다. [ 매너 & 태도 ] * 항상 겸손해라.
늘 자신을 낮추고 겸손함을 잃지 마라.
 * 나이 불문 예의를 지켜라.
나이와 지위를 막론하고, 누구에게나 변함없는 예의를 갖추어라.
 * 행복하겠다는 생각을 버려야 행복하다.
행복에 대한 강박과 집착을 내려놓을 때, 비로소 진정한 행복이 찾아온다.
 [ 리더십 & 실행 ] * 통찰력, 결단력,
  • 고니3000원
    곤이의 공부 블로그
    고니3000원
  • 전체
    오늘
    어제
    • 분류 전체보기 (212) N
      • 1. AI 논문 + 모델 분석 (21)
        • AI 논문 분석 (13)
        • AI 모델 분석 (8)
      • 2. 자료구조와 알고리즘 (16)
        • 2-1 자료구조와 알고리즘 (13)
        • 2-2 강화학습 알고리즘 (3)
      • 3. 자습 & 메모(실전, 실습, 프로젝트) (27)
        • 3-1 문제 해석 (4)
        • 3-2 메모(실전, 프로젝트) (14)
        • 3-3 배포 실전 공부 (7)
        • 3-4 최신 기술 분석 (2)
      • 4. [팀] 프로젝트 및 공모전 (31)
        • 4-1 팀 프로젝트(메모, 공부) (1)
        • 4-2 Meat-A-Eye (6)
        • 4-3 RL-Tycoon-Agent (3)
        • 4-4 구조물 안정성 물리 추론 AI 경진대회(D.. (4)
        • 4-5 AgentShield(보안 플랫폼) (17)
      • 5. [개인] 프로젝트 및 공모전 (21) N
        • 4-1 귀멸의칼날디펜스(자바스크립트 활용) (5)
        • 4-2 바탕화면 AI 펫 프로그램 (4)
        • 4-3 개인 프로젝트(기타) (3)
        • 4-4 공모전 (5) N
        • 4-5 나만의 로컬 LLM 멀티 에이전트 구축 (4)
      • 개념 정리 step1 (32)
        • Python 기초 (7)
        • DBMS (1)
        • HTML | CSS (3)
        • Git | GitHub (1)
        • JavaScript (5)
        • Node.js (5)
        • React (1)
        • 데이터 분석 (6)
        • Python Engineering (3)
      • 개념 정리 step2 (60)
        • Machine | Deep Learning (15)
        • 멀티모달(Multi-modal) (23)
        • 강화 학습 (10)
        • AI Agent (9)
        • 메디컬 이미지 (3)
      • 개인 공부 - 내가 공부하고 싶은 모든 것 (2)
        • 1. 인프라 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Notion-포트폴리오
    • Github
  • 공지사항

    • ‘박영곤’ 나의 핵심 가치
  • 인기 글

  • 태그

    학습
    파이썬
    API
    Lora
    프로젝트
    전처리
    보안
    github
    Agent
    Ollama
    paddleocr
    pandas
    Ai
    파인튜닝
    구현
    자료구조
    Vision
    ViT
    Python
    llm
    transformer
    OCR
    공모전
    강화학습
    논문 리뷰
    자바스크립트
    알고리즘
    인공지능
    데이터분석
    RAG
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고니3000원
Python(4) | 제어문(조건문, 반복문), 문제 풀이
상단으로

티스토리툴바