본문 바로가기
Python 기초

[Python] 제어문 정리

by 내 코딩 2023. 3. 19.
반응형

조건이 하나일 때: if 문

if 조건:
    실행할 명령
weather = '비'
if weather == '비':  # 대입 연산자(=)가 아닌 비교 연산자(==) 사용
    print('우산을 챙기세요.')

>> 우산을 챙기세요.

조건이 여러 개일 때: elif 문

if 조건1:
    실행할 명령1
elif 조건2:
    실행할 명령2
elif 조건3:
    실행할 명령3
...
weather = '미세먼지'
if weather == '비':
    print('우산을 챙기세요.')
elif weather == '미세먼지':
    print('마스크를 챙기세요.')

>> 마스크를 챙기세요.

모든 조건에 맞지 않을 때: else 문

if 조건1:
    실행할 명령1
elif 조건2:
    실행할 명령2
elif 조건3:
    실행할 명령3
...
else:
    실행할 명령n  # 앞에 조건에 모두 해당하지 않을 때 실행
weather = '맑음'
if weather == '비':
    print('우산을 챙기세요.')
elif weather == '미세먼지':
    print('마스크를 챙기세요.')
else:
    print('준비물이 필요 없어요.')

>> 준비물이 필요 없어요.

input()으로 값 입력받아 비교하기

input() 함수는 프로그램을 실행했을 때 사용자로부터 어떤 값을 입력받는 용도로 사용한다.

weather = input('오늘 날씨는 어때요?')
print(weather)

>> 오늘 날씨는 어때요? 맑음

>> 맑음

 

weather = input('오늘 날씨는 어때요?')
if weather == '비':
    print('우산을 챙기세요.')
elif weather == '미세먼지':
    print('마스크를 챙기세요.')
else:
    print('준비물이 필요 없어요.')

or연산자를 통해 조건 중 하나라도 맞으면 print() 문을 실행한다.

weather = input('오늘 날씨는 어때요?')
if weather == '비' or weather == '눈':
    print('우산을 챙기세요.')
elif weather == '미세먼지':
    print('마스크를 챙기세요.')
else:
    print('준비물이 필요 없어요.')

>> 오늘 날씨는 어때요? 

>> 눈

 

and 연산자를 사용해서 조건이 둘 다 참일 때 실행한다.

temp = int(input('오늘 기온이 어때요?'))  # 입력값을 정수형으로 형변환

if 30 <= temp:  # 30도 이상이면
    print('너무 더워요. 외출을 자제하세요.')
elif 10 <= temp and temp < 30:  # 10도 이상 30도 미만이면
    print('활동하기 좋은 날씨예요.')
elif 0 <= temp and temp < 10:  # 0도 이상 10도 미만이면
    print('외투를 챙기세요.')
else:  # 그 외의 모든 경우(0도 미만이면)
    print('너무 추워요. 나가지 마세요.')

같은 일 반복하기: 반복문

for 변수 in 반복 대상:
    실행할 명령1
    실행할 명령2
    ...
for waiting_no in [1, 2, 3, 4, 5]:
    print('대기번호 : {0}'.format(waiting_no))  # {0} 위치에 waiting_no의 값이 들어감

>> 대기번호 : 1
>> 대기번호 : 2
>> 대기번호 : 3
>> 대기번호 : 4
>> 대기번호 : 5

 

range()

range() 함수를 통해 지정한 범위 안에서 연속한 정수를 반환한다.

range(숫자)
range(시작 숫자, 끝 숫자)
range(시작 숫자, 끝 숫자, 간격)
for waiting_no in range(5):  # 0부터 5직전까지(0~4)
    print('대기번호 : {0}'.format(waiting_no))  # {0} 위치에 waiting_no의 값이 들어감
for waiting_no in range(1, 6):  # 1부터 6직전까지(1~5)
    print('대기번호 : {0}'.format(waiting_no))  # {0} 위치에 waiting_no의 값이 들어감
for waiting_no in range(1, 6, 2):  # 1부터 6직전까지(1~5)에서 2씩 간격 추가
    print('대기번호 : {0}'.format(waiting_no))  # {0} 위치에 waiting_no의 값이 들어감

조건을 만족할 동안 반복하기: while 문

while 문은 조건을 만족할 때까지 끝없이 반복한다.

while 조건:
    실행할 명령1
    실행할 명령2
    ...

흐름 제어하기: continue와 break

continue : continue 이후 명령들을 실행하지 않고 다음 반복 대상으로 넘어간다.

break : 반복문을 즉시 탈출할 때 사용한다.

absent = [2, 5]  # 결석한 학생 출석번호
no_book = [7]

for student in range(1, 11):  # 출석번호 1~10번
    if student in absent:  # 결석한 학생이면
        continue  # 다음 학생으로 넘어가기
    elif student in no_book:  # 책을 가져오지 않으면 바로 수업 종료
        print('오늘 수업 여기까지. {0}번 학생은 교무실로 따라오세요.'.format(student))
        break
    print('{0}번 학생, 책을 읽어보세요.'.format(student))

>> 1번 학생, 책을 읽어보세요.
>> 3번 학생, 책을 읽어보세요.
>> 4번 학생, 책을 읽어보세요.
>> 6번 학생, 책을 읽어보세요.
>> 오늘 수업 여기까지. 7번 학생은 교무실로 따라오세요.

for 문 한 줄로 작성하기

[동작 for 변수 in 반복 대상]
students = [1, 2, 3, 4, 5]
print(students)

# 한 줄 for 문으로 각 항목에 100 더하기
students = [i + 100 for i in students]
print(students)

>> [1, 2, 3, 4, 5]
>> [101, 102, 103, 104, 105]

한 줄 for 문 작성시 주의할 점
'변수 위치'와 '변수로 어떤 동작을 하는 위치'에서 변수명이 동일해야 한다.

 

실습 문제: 택시 승객 수 구하기

문제 - 당신은 Cocoa 서비스를 이용하는 택시기사입니다. 손님이 총 50명일 때, 조건을 만족하는 총 탑승객 수를 구하는 프로그램을 작성하세요.

조건

1. 손님별 운행 소요시간은 5~50분에서 난수로 정한다.

2. 운행 소요시간 5~15분인 손님만 매칭한다.

3. 실행결과는 다음 형태로 출력하되, 매칭되면 [0], 매칭되지 않으면 []로 표시한다.

[0] 1번째 손님 (소요시간 : 15분)
[] 2번째 손님 (소요시간 : 50분)
[0] 3번째 손님 (소요시간 : 5분)
...
[] 50번째 손님 (소요시간 : 16분)
총 탑승객 : 2명
import random

cnt = 0
for i in range(1, 50):
    time = random.randint(1, 50)
    if 5 <= time <= 15:
        print(f'[0] {i}번째 손님 (소요시간 : {time}분)')
        cnt += 1
    else:
        print(f'[] {i}번째 손님 (소요시간 : {time}분)')
print(f'총 탑승객 : {cnt}명')

실습 문제2

문제 - 편의점에서 동일한 상품 2개를 구매하면 상품 1개를 무료로 제공하는 2+1 이벤트를 진행하고 있다. 구매 상품 수에 따라 가격을 계산하는 프로그램을 작성하세요.

조건

1. 상품 1개의 가격은 1,000원이다.

2. 고객은 3, 6, 9, ... 처럼 항상 3의 배수에 해당하는 상품을 구매한다고 가정한다.

3. 상품은 각각 스캔하며, 한 상품을 스캔할 때마다 '2+1 상품입니다.'를 출력한다.

# 구매 상품 수가 3개일 때
2+1 상품입니다.
2+1 상품입니다.
2+1 상품입니다.
총 가격은 2000원입니다.

# 구매 상품 수가 6개일 때
2+1 상품입니다.
2+1 상품입니다.
2+1 상품입니다.
2+1 상품입니다.
2+1 상품입니다.
2+1 상품입니다.
총 가격은 4000원입니다.
price = 1000  # 상품가격
goods = 3  # 구매 상품 수
total = 0  # 총 가격

for i in range(1, goods + 1):  # 구매 상품 수가 3인 경우 1~3 반복 수행
    print('2+1 상품입니다.')
    if i % 3 == 0:  # 3의 배수인 경우 가격을 더하지 않음
        continue
    total += price

print('총 가격은' + str(total) + '원입니다.')

'Python 기초' 카테고리의 다른 글

[Python] 입출력 정리  (0) 2023.03.25
[Python] 함수 정리  (0) 2023.03.22
[Python] 자료구조 정리  (0) 2023.03.19
[Python] 문자열 다루기  (0) 2023.03.18
[Python] 연산자 정리  (0) 2023.03.17

댓글