안녕하세요!
오늘은 파이썬은 제어문에 대해서 공부해 보도록 하겠습니다.👻
하단에 문제 풀이 연습 내용도 포함했습니다.
◻️조건문
조건문은 코드의 실행 흐름을 제어하기 위해 사용한다.
참인지 거짓인지에 따라 다른 코드를 실행한다.
◽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 조건을 여러번 쓰면 된다!
◽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와 비슷. 값을 지정할 때 _는 변수를 안 받겠다는 뜻으로도 쓰인다.
◻️반복문
반복문은 동일한 작업을 여러 번 실행하기 위해 사용하는 제어 구문이다.
주로 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)를 병렬적으로 묶어주는 내장 함수.
여러 개의 리스트나 튜플을 병렬적으로 처리하고자 할 때 사용한다.
◽6. 중첩 반복문
파이썬에서 중첩된 반복문은 하나의 반복문 안에 다른 반복문이 포함된 구조를 의미.
다차원 데이터를 처리하거나 복잡한 작업을 수행할 수 있다.
for 외부_변수 in 외부_시퀀스:
for 내부_변수 in 내부_시퀀스:
# 내부 반복문 코드
# 외부 반복문 코드
예제: 별 찍기

중첩 반복문이 잘 이해가 안 돼서 주석으로 메모하면서 또 풀었다...
◽7. continue
반복문 안에 사용되며, 반복을 즉시 건너뛰고 싶을 때 넘어가도록 하는 제어문이다.
불필요한 코드를 피하고, 조건에 따라 반복 흐름을 세밀하게 제어가능하다.
◽break
반복을 즉시 종료시키는 제어문이다.
break가 실행되면 반복문을 즉시 종료하고 빠져나온다.
문제 풀이
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 |