파이썬 프로그래밍에서 제어문은 프로그램의 흐름을 제어하는 데 필수적인 도구입니다. 제어문은 크게 조건문과 반복문으로 나뉘며, 각각 특정 조건에 따라 코드를 실행하거나 반복적으로 작업을 수행하는 데 사용됩니다. 이번 포스트에서는 조건문과 반복문의 기본 개념과 사용법을 예제와 함께 자세히 살펴보겠습니다. 또한, 더 복잡한 상황에서의 활용법과 실용적인 예제를 추가하여 이해를 돕겠습니다.
1. 조건문: 특정 조건에 따라 코드 실행하기
조건문은 프로그램이 특정 조건에 따라 다른 동작을 하도록 만드는 문법입니다. 파이썬에서는 if
, elif
, else
키워드를 사용하여 조건문을 구성합니다. 조건문은 프로그램의 논리적 흐름을 결정짓는 중요한 요소로, 다양한 상황에서 유연하게 대응할 수 있게 해줍니다.
1.1 조건문의 기본 구조
조건문의 기본 구조는 다음과 같습니다:
if condition:
# condition이 True일 때 실행될 코드
elif another_condition:
# another_condition이 True일 때 실행될 코드
else:
# 모든 조건이 False일 때 실행될 코드
- if: 주어진 조건이 참(True)일 경우에만 해당 블록의 코드를 실행합니다.
- elif: 이전의
if
또는elif
가 거짓(False)이고, 현재의 조건이 참이면 이 블록을 실행합니다. - else: 모든 이전 조건들이 거짓이라면 이 블록의 코드를 실행합니다.
1.2 조건문 예제: 성적 판단
조건문을 사용하여 학생의 성적에 따라 학점을 판단하는 예제를 살펴보겠습니다.
score = 85
if score >= 90:
print("A 학점")
elif score >= 80:
print("B 학점")
elif score >= 70:
print("C 학점")
else:
print("F 학점")
위 코드는 학생의 점수에 따라 학점을 출력합니다. 점수가 90 이상이면 "A 학점", 80 이상이면 "B 학점", 70 이상이면 "C 학점", 그 외에는 "F 학점"을 출력합니다. 이 예제는 조건문의 기본적인 사용법을 보여줍니다.
1.3 여러 조건 결합하기
조건문에서는 논리 연산자(and
, or
, not
)를 사용하여 여러 조건을 결합할 수 있습니다. 이를 통해 더 복잡한 조건을 표현할 수 있습니다.
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("입장 가능합니다.")
else:
print("입장이 불가능합니다.")
위 코드는 나이가 18세 이상이고 티켓이 있는 경우에만 "입장 가능합니다."를 출력합니다. and
연산자를 사용하여 두 조건이 모두 참일 때만 코드가 실행되도록 했습니다.
1.4 중첩된 조건문
조건문 안에 또 다른 조건문을 넣어 복잡한 로직을 구현할 수 있습니다. 이를 중첩된 조건문이라고 합니다.
temperature = -5
if temperature > 0:
print("날씨가 따뜻하다.")
else:
if temperature < -10:
print("매우 추운 날씨이다.")
else:
print("추운 날씨이다.")
이 예제는 온도에 따라 날씨 상태를 출력합니다. 외부 if
문은 온도가 양수인지 확인하고, 내부 if
문은 온도가 -10도 이하인지 추가로 체크합니다. 중첩된 조건문은 더 세부적인 조건을 처리할 때 유용합니다.
1.5 조건문의 활용: 로그인 시스템 예제
조건문을 활용하여 간단한 로그인 시스템을 구현해보겠습니다.
username = "user123"
password = "pass123"
input_username = input("사용자 이름을 입력하세요: ")
input_password = input("비밀번호를 입력하세요: ")
if input_username == username and input_password == password:
print("로그인 성공!")
else:
print("로그인 실패. 사용자 이름 또는 비밀번호가 잘못되었습니다.")
위 코드는 사용자로부터 입력받은 사용자 이름과 비밀번호가 미리 저장된 값과 일치하는지 확인합니다. 일치하면 "로그인 성공!"을 출력하고, 그렇지 않으면 "로그인 실패" 메시지를 출력합니다.
1.6 조건문의 활용: 할인 조건 적용
조건문을 사용하여 쇼핑몰에서 할인 조건을 적용하는 예제를 살펴보겠습니다.
total_price = 120000
is_member = True
if total_price >= 100000 and is_member:
discount = total_price * 0.1
final_price = total_price - discount
print(f"할인 적용된 최종 가격: {final_price}원")
else:
print(f"할인 적용되지 않은 가격: {total_price}원")
위 코드는 총 구매 금액이 10만 원 이상이고 회원인 경우 10% 할인을 적용합니다. 조건문을 통해 다양한 할인 정책을 구현할 수 있습니다.
2. 반복문: 코드를 반복적으로 실행하기
반복문은 특정 코드를 여러 번 실행해야 할 때 사용됩니다. 파이썬에서는 for
문과 while
문이 주로 사용됩니다. 반복문을 사용하면 코드의 재사용성을 높이고, 동일한 작업을 효율적으로 수행할 수 있습니다.
2.1 for 문
for
문은 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 순회하며 코드를 실행합니다.
fruits = ['사과', '바나나', '체리']
for fruit in fruits:
print(fruit)
위 코드는 fruits
리스트의 각 과일 이름을 하나씩 출력합니다. for
문을 사용하면 리스트 내 모든 항목에 쉽게 접근하고 처리할 수 있습니다.
2.2 while 문
while
문은 특정 조건이 참인 동안 코드를 반복 실행합니다. 주로 카운터 변수를 통해 종료 조건을 설정합니다.
count = 0
while count < 5:
print(count)
count += 1
이 예제는 count
변수가 5보다 작을 동안 현재 값을 출력하고, 매번 값을 증가시켜 루프가 종료되도록 합니다. while
문은 조건이 참인 동안 계속해서 코드를 실행하므로, 무한 루프에 빠지지 않도록 주의해야 합니다.
2.3 중첩된 반복문
반복문 안에 또 다른 반복문을 넣어 복잡한 데이터를 처리할 수 있습니다. 이를 중첩된 반복문이라고 합니다.
for i in range(2, 10):
for j in range(1, 10):
print(f"{i} x {j} = {i * j}")
이 코드는 2단부터 9단까지의 구구단을 출력합니다. 외부 루프는 단수를 정하고, 내부 루프는 해당 단수의 곱셈 결과를 계산합니다. 중첩된 반복문은 다차원 데이터를 처리할 때 유용합니다.
2.4 break와 continue
반복문의 흐름을 제어하기 위해 break
와 continue
키워드를 사용할 수 있습니다.
break: 현재 루프를 즉시 종료합니다.
for num in range(10): if num == 5: break print(num)
위 코드는
num
이 5가 되면 루프를 종료합니다. 따라서 0부터 4까지의 숫자만 출력됩니다.continue: 현재 루프에서 남은 코드를 건너뛰고 다음 순회로 넘어갑니다.
for num in range(6): if num % 2 == 0: continue print(num)
위 코드는 짝수일 때
continue
를 사용하여 코드를 건너뛰고, 홀수만 출력합니다.
2.5 반복문의 활용: 숫자 맞추기 게임
반복문을 활용하여 간단한 숫자 맞추기 게임을 구현해보겠습니다.
import random
target_number = random.randint(1, 100)
attempts = 0
while True:
guess = int(input("1부터 100 사이의 숫자를 추측해보세요: "))
attempts += 1
if guess < target_number:
print("더 큰 숫자입니다.")
elif guess > target_number:
print("더 작은 숫자입니다.")
else:
print(f"축하합니다! {attempts}번 만에 숫자를 맞췄습니다.")
break
위 코드는 1부터 100 사이의 랜덤한 숫자를 맞추는 게임입니다. 사용자가 숫자를 입력하면 프로그램은 그 숫자가 목표 숫자보다 큰지, 작은지, 또는 정확한지 알려줍니다. 숫자를 맞추면 게임이 종료됩니다.
2.6 반복문의 활용: 데이터 필터링
반복문을 사용하여 리스트에서 특정 조건을 만족하는 데이터만 필터링하는 예제를 살펴보겠습니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
print(f"짝수만 필터링된 리스트: {even_numbers}")
위 코드는 numbers
리스트에서 짝수만 필터링하여 새로운 리스트에 저장합니다. 반복문과 조건문을 함께 사용하여 데이터를 처리하는 방법을 보여줍니다.
3. 조건문과 반복문의 조합
조건문과 반복문을 함께 사용하면 더 복잡한 문제를 해결할 수 있습니다. 예를 들어, 특정 조건을 만족하는 데이터만 처리하거나, 조건에 따라 반복 횟수를 조정할 수 있습니다.
3.1 조건문과 반복문의 조합 예제
다음은 리스트에서 짝수만 찾아 출력하는 예제입니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
print(f"{num}은(는) 짝수입니다.")
위 코드는 numbers
리스트의 각 요소를 순회하며 짝수인지 확인합니다. 짝수라면 해당 숫자를 출력합니다.
3.2 실용적인 예제: 사용자 입력 검증
사용자로부터 입력을 받을 때, 조건문과 반복문을 함께 사용하여 유효한 입력을 받을 수 있습니다.
while True:
age = input("나이를 입력하세요: ")
if age.isdigit():
age = int(age)
if age >= 0:
break
else:
print("나이는 0 이상이어야 합니다.")
else:
print("숫자를 입력해주세요.")
print(f"입력된 나이는 {age}세입니다.")
위 코드는 사용자로부터 나이를 입력받을 때, 입력이 유효한지 검증합니다. 입력이 숫자가 아니거나 음수일 경우, 다시 입력을 요청합니다.
3.3 조건문과 반복문의 조합: 패스워드 생성기
조건문과 반복문을 함께 사용하여 간단한 패스워드 생성기를 구현해보겠습니다.
import random
import string
def generate_password(length):
password = []
while len(password) < length:
char = random.choice(string.ascii_letters + string.digits + string.punctuation)
if char not in password:
password.append(char)
return ''.join(password)
password_length = int(input("패스워드 길이를 입력하세요: "))
print(f"생성된 패스워드: {generate_password(password_length)}")
위 코드는 사용자로부터 패스워드 길이를 입력받아, 해당 길이의 랜덤 패스워드를 생성합니다. 반복문을 사용하여 패스워드 길이만큼 문자를 추가하고, 조건문을 사용하여 중복 문자를 방지합니다.
4. 결론
조건문과 반복문은 파이썬 프로그래밍에서 프로그램의 흐름을 제어하는 데 필수적인 도구입니다. 조건문은 특정 조건에 따라 코드를 실행하도록 하고, 반복문은 동일한 작업을 반복적으로 수행할 수 있게 해줍니다. 이를 통해 코드의 효율성과 가독성을 높일 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 데이터 구조: 리스트, 튜플, 딕셔너리, 집합의 이해와 활용 (0) | 2025.02.20 |
---|---|
파이썬 프로그래밍의 기초: 함수, 모듈, 패키지 이해하기 (0) | 2025.02.20 |
파이썬 프로그래밍의 기초: 변수, 자료형, 그리고 연산자 (0) | 2025.02.20 |
파이썬 설치부터 가상 환경 설정까지: 초보자를 위한 완벽 가이드 (0) | 2025.02.20 |
파이썬: 초보자부터 전문가까지 모두를 위한 프로그래밍 언어 (0) | 2025.02.20 |