Python 조건문, 반복문

배추·2025년 11월 9일

🐍 Python

목록 보기
8/19

Python의 제어문인 조건문과 반복문에 대해 알아봅니다.


▶︎조건문

🌟if문

  • 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓴다.
money = True
if money:
	print("택시를 타고 가라")
else:
	print("걸어 가라")

# 택시를 타고 가라

if 문의 기본 구조

if 조건문:
    수행할_문장1
    수행할_문장2
    ...
else:
    수행할_문장A
    수행할_문장B
    ...
  • 조건문을 테스트해서 참이면 if 문 바로 다음 문장(if 블록)들을 수행하고 조건문이 거짓이면 else 문 다음 문장(else 블록)들을 수행한다.
  • if 조건문 뒤에는 반드시 콜론(:)이 붙는다.
  • 수행할 문장이 한 줄일 때 콜론(:) 뒤에 바로 적기 가능. if 조건문: 수행할_문장1

비교 연산자

  • x < y
  • x > y
  • x == y
  • x != y
  • x >= y
  • x <= y

and, or, not 연산자

  • x or y
  • x and y
  • not x

📍in, not in

  • x in (리스트, 튜플, 문자열)
  • x not in (리스트, 튜플, 문자열)
1 in [1, 2, 3] # True
1 not in [1, 2, 3] # False
'a' in ('a', 'b', 'c') # True
'j' not in 'python' # True

📍pass

  • 조건문에서 아무 일도 하지 않게 설정.
pocket = ['paper', 'money', 'cellphone']

if 'money' in pocket:
	pass 
else:
	print("카드를 꺼내라")

📍elif

  • 다중 조건 판단.
  • elif는 이전 조건문이 거짓일 때 수행.
  • elif는 개수에 제한 없이 사용할 수 있다.
pocket = ['paper', 'cellphone']
card = True

# if문
if 'money' in pocket:
	print("택시를 타고가라")
else:
	if card:
		print("택시를 타고가라")
	else:
		print("걸어가라")
        
# elif 사용
if 'money' in pocket:
	print("택시를 타고가라")
elif card: 
	print("택시를 타고가라")
else:
	print("걸어가라")

조건부 표현식

  • 조건에 따라 변수에 서로 다른 값을 대입하고 싶을 때.
  • 조건부 표현식을 사용하면 한 줄로 표현할 수 있다.
  • 기본 형태: 변수 = 참일_때_값 if 조건 else 거짓일_때_값
score = 85
if score >= 60:
	result = "합격"
else:
	result = "불합격"

# 조건부 표현식 사용 시
result = "합격" if score >= 60 else "불합격"
  • 너무 복잡한 조건이나 긴 표현식에는 가독성이 떨어질 수 있다.

▶︎반복문

🌟while문

  • 조건문이 참인 동안 while 문에 속한 문장들이 반복해서 수행.

기본 구조

while 조건문:
    수행할_문장1
    수행할_문장2
    수행할_문장3
    ...
  • 여러 가지 선택지 중 하나를 선택해서 입력받는 예제

    prompt = """
    1. Add
    2. Del
    3. List
    4. Quit
    
    Enter number: """
    
    number = 0
    while number != 4:
        print(prompt)
        number = int(input()) # input 함수는 사용자에게 입력값을 받음
    • 사용자가 값 4를 입력하지 않으면 계속해서 prompt를 출력한다.

break

  • while 문 강제로 빠져나가기.
coffee = 10

while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break

📍continue

  • while 문을 빠져나가지 않고 while 문의 맨 처음(조건문)으로 다시 돌아가기.
  • 1부터 10까지의 숫자 중 홀수만 출력하는 예
    a = 0
    while a < 10:
        a = a + 1
        if a % 2 == 0: continue
        print(a)
    • a가 짝수이면 continue 문을 수행한다. 이 continue 문은 while 문의 맨 처음인 조건문(a < 10)으로 돌아가게 하는 명령어이기에 a가 짝수이면 print(a) 문장은 수행되지 않는다.

무한 루프

  • 무한히 반복한다.
while True: 
	수행할_문장1 
	수행할_문장2
	...

📍while-else 문

  • while 문이 정상적으로 종료되었을 때(break로 빠져나가지 않았을 때) else 절이 실행된다.
count = 0
while count < 3:
    print(f"카운트: {count}")
    count += 1
else:
    print("while 문이 정상 종료되었습니다.")

# 카운트: 0
# 카운트: 1
# 카운트: 2
# while 문이 정상 종료되었습니다.
  • break 문으로 while 문을 빠져나가면 else 절은 실행되지 않는다.
count = 0
while count < 5:
    if count == 2:
        break
    print(f"카운트: {count}")
    count += 1
else:
    print("while 문이 정상 종료되었습니다.")

# 카운트: 0
# 카운트: 1

중첩된 while 문

  • while 문 안에 또 다른 while 문.
  • 중첩된 while 문에서 break나 continue를 사용할 때는 가장 가까운 while 문에만 영향을 준다.
i = 1
while i <= 3:
    j = 1
    while j <= 3:
        print(f"i={i}, j={j}")
        j += 1
    i += 1

🌟for문

기본 구조

for 변수 in 리스트(또는 튜플, 문자열):
    수행할_문장1
    수행할_문장2
    ...
  • 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 ‘수행할문장1’, ‘수행할문장2’ 등이 수행된다.

전형적인 for 문

test_list = ['one', 'two', 'three'] 
for i in test_list: 
    print(i)

다양한 for 문의 사용

a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
    print(first + last)
    
# 3
# 7
# 11
  • a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.

for 문의 응용

marks = [90, 25, 67, 45, 80]   # 학생들의 시험 점수 리스트

number = 0   # 학생에게 붙여 줄 번호
for mark in marks:   # 90, 25, 67, 45, 80을 순서대로 mark에 대입
    number = number +1 
    if mark >= 60: 
        print("%d번 학생은 합격입니다." % number)
    else: 
        print("%d번 학생은 불합격입니다." % number)

📍for 문과 continue 문

  • for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아가게 된다.
marks = [90, 25, 67, 45, 80]

number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)
  • 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무런 메시지도 전하지 않는다.

📍for 문과 range 함수

  • range 함수

    a = range(10)
    a # range(0, 10)
    
    b = range(1, 11)
    b # range(1, 11)
    • range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.
    • range(시작숫자, 끝숫자): 시작 숫자와 끝 숫자를 지정. 이때 끝 숫자는 포함되지 않는다.
  • for와 range 함수를 사용

    add = 0 
    for i in range(1, 11): 
        add = add + i 
    
    print(add) # 55
    • range(1, 11)은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 가지는 객체로 i 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add = add + i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.

📍list comprehension

  • 문법

    [표현식 for 항목 in 반복_가능_객체 if 조건문]
    
    # for 문을 2개 이상 사용하는 것도 가능
    [표현식 for 항목1 in 반복_가능_객체1 if 조건문1
          for 항목2 in 반복_가능_객체2 if 조건문2
          ...
          for 항목n in 반복_가능_객체n if 조건문n]
  • a 리스트의 각 항목에 3을 곱한 결과를 result 리스트에 담기.

    a = [1,2,3,4]
    result = []
    
    for num in a:
        result.append(num*3)
    
    print(result) # [3, 6, 9, 12]

리스트 컴프리헨션을 사용

a = [1,2,3,4]
result = [num * 3 for num in a]
print(result) # [3, 6, 9, 12]

- 짝수에만 3을 곱하여 담기. -> 리스트 컴프리헨션 안에 ‘if 조건문’을 사용.
```python
a = [1,2,3,4]
result = [num * 3 for num in a if num % 2 == 0]
print(result) # [6, 12]

for 문과 break 문

  • for 문을 강제로 빠져나가고 싶을 때 사용.
for i in range(10):
    if i == 5: break
    print(i)

for-else 문

  • for 문이 정상적으로 종료되었을 때(break로 빠져나가지 않았을 때) else 절이 실행된다.

    for i in range(5):
        print(i)
    else:
        print("for 문이 정상 종료되었습니다.")
    
    # 0
    # 1
    # 2
    # 3
    # 4
    # for 문이 정상 종료되었습니다.
  • break 문으로 for 문을 빠져나가면 else 절은 실행되지 않는다.

    for i in range(5):
        if i == 3:
            break
        print(i)
    else:
        print("for 문이 정상 종료되었습니다.")
    
    # 0
    # 1
    # 2

📍enumerate 함수 활용

  • 리스트의 순서(인덱스)와 값을 함께 구하고 싶을 때는 enumerate 함수를 사용하면 편리하다.
  • enumerate(리스트): 0부터 시작하는 인덱스 번호를 자동으로 생성해준다.
  • enumerate(리스트, 시작번호): 시작 번호를 설정.
fruits = ['apple', 'banana', 'orange']
for i, fruit in enumerate(fruits, 1):  # 1부터 시작
    print(f"{i}: {fruit}")

# 1: apple
# 2: banana
# 3: orange

📍zip 함수로 여러 리스트 함께 순회

  • 두 개 이상의 리스트를 동시에 순회하고 싶을 때는 zip 함수를 사용.
names = ['홍길동', '김철수', '이영희']
korean = [85, 92, 78]
english = [90, 88, 95]

for name, kor, eng in zip(names, korean, english):
    print(f"{name}: 국어 {kor}점, 영어 {eng}점")

# 홍길동: 국어 85점, 영어 90점
# 김철수: 국어 92점, 영어 88점
# 이영희: 국어 78점, 영어 95점
profile
난 🥬

0개의 댓글