본문 바로가기
코딩 연습/파이썬 기초(예제)

파이썬 제어문 종류 - 조건문과 반복문, 연습문제

by good4me 2023. 12. 4.

goodthings4me.tistory.com

파이썬 제어문 종류 - 조건문과 반복문

 

파이썬 제어문 (조건문 if, 반복문 while, for)에 대해 정리를 하고, 연습문제도 풀어보는 포스팅입니다.

 

if문의 구조, 중첩 if문, 반복문(while, for)의 구조와 break, continue 사용하는 방법, range 함수, for문과 range 함수 사용, for문에서 리스트와 딕셔너리 요소(element)를 사용하는 방법 등을 정리했습니다. 

 

파이썬 제어문 중 조건문(if 문)

 

 

파이썬 제어문 중 조건문인 if 문에 대한 구조 및 사용법

'''
형식1) if (조건식이 참이면 A 실행)
if 조건식: 
    A코드
 
형식2) if 조건식 else (조건식이 참이면 A 실행 아니면 B 실행)
if 조건식:
    A코드
else:
    B코드

형식3) if 조건식1 elif 조건식2 else (조건식1이 참이면 A 실행 아니면 조건식2가 참이면 B 실행 아니면 C 실행)
    
if 조건식1:
    A코드
elif 조건식2:
    B코드
else:
    C코드

'''

 

 

▶ if 문 사용 예시

# 점수가 60점 이상인 경우 '합격' 출력
score = 60
if score >= 60:
    print('합격')

# 점수가 60점 이상인 경우 '합격' 출력, 아니면 '불합격' 출력
score = 59
if score >= 60:
    print('합격')
else:
    print('불합격')

# 점수가 70점 이상인 경우 '합격', 69~50점이면 '재시험', 아니면 '불합격'
score = 60
if score >= 70:
    print('합격')
elif score >= 50:
    print('재시험')
else:
    print('불합격')
    
### 실행 결과 ###
합격
불합격
재시험

 

 

IT, 전자제품 선물

 

 

▶ if 문과 논리 연산자 사용 예시

## 논리 연산자 사용하여
flag = True
if flag:
    print('인터넷 검색 가능')

age = 17
has_ticket = True

if age >= 18 and has_ticket:
    print('19금 영화 가능')

age = 30
idcard = False
if age >= 18 or idcard:
    print('술 구매 가능')


## in, not in 연산자
text = 'python'
print('th' in text)
print('P' in text)

items = [1, 2, 3, 4, 5]
print(1 in items)

dict1 = { 'a' : 1, 'b' : 2, 'c' : 3 }
print('d' not in dict1)

### 실행결과 ###
인터넷 검색 가능
술 구매 가능
True
False
True
True

 

 

중첩 if 문

## 중첩 if 문
age = 20
hasIDCard = True

if age >= 20:
    if hasIDCard:
        print('술 구매 가능')
    else:
        print('신분증 미참으로 술 구매 불가')
else:
    print('미성년자 술 구매 불가')

### 실행결과 ###
술 구매 가능

 

 

  if 문과 in 연산자

## if 문과 in 연산자
items = ['사과', '바나나', '포도', '수박']
# 사과가 itmes안에 있으면 '귤'을 items에 추가하고, 아니면 items에 '오렌지'를 추가하라
if '사과' in items:
    items.append('귤')
else:
    items.append('오렌지')
print(items)

### 실행결과 ###
['사과', '바나나', '포도', '수박', '귤']

 

 

  if 문의 조건부 표현식

## 조건부 표현식
# 1) [조건이 참인 경우] if [조건식] else [조건이 거짓인 경우]
score = 40
if score >= 60:
    print('합격')
else:
    print('불합격')

# 위 조건문을 조건부 표현식으로 표현
score = 40
print('합격') if score >= 60 else print('불합격')

score = 60
if score >= 70:
    print('합격')
elif score >= 50:
    print('재시험')
else:
    print('불합격')

# 2) [조건식1이 참인 경우] if [조건식1] else [조건식2] if [조건식2] else [조건식1, 조건식2이 모두 거짓인 경우]
score = 60
result = '합격' if score >= 70 else '재시험' if score>= 50 else '불합격'
print(result)

### 실행결과 ###
불합격
불합격
재시험
재시험

 

 

▣ if 문 연습 #1

# 주어진 숫자가 홀수인지 짝수인지 확인하는 조건문 만들기

num = 122

if num % 2 == 0:
    print('짝수')
else:
    print('홀수')
   
### 실행결과 ###
짝수

 

 

 if 문 연습 #2) 중첩 if 문, in 연산자 사용

# 딕셔너리 자료 중 '자료구조' 과목이 있는지 확인하여 점수가 60점 이상이면 '이수 완료'를 출력, 조건이 맞지 않으면 '재수강'을 출력하는 조건문 만들기

subject = {'자료구조': 80, '알고리즘': 60, '네트워크': 90}

find_sub = '자료구조'

if find_sub in subject:
    if subject[find_sub] >= 60:
        print(f'{find_sub} 점수는 {subject[find_sub]}점으로 "이수완료" 입니다!')
    else:
        print(f'{find_sub} 점수는 {subject[find_sub]}점으로 "재수강" 해야 합니다!')
else:
    print(f'이수 과목에 "{find_sub}"" 과목이 없습니다.')

### 실행결과 ###
자료구조 점수는 80점으로 "이수완료" 입니다!

 

 

파이썬 반복문(while 문, for 문)

파이썬의 반복문(while, for)에 대해 알아보기

 

while 문

## while 문 - 초기식, 변화식이 같이 있어야 함

while 조건식:
    실행문
    
num = 1 # 초기식
while num <= 5:
    print(num)
    num = num + 1 # 변화식

### 실행결과 ###
1
2
3
4
5

count = 0
while count < 5:
    count += 1  # count = count + 1
    print(f'{count}번 반복')
print(f'{count}번 반복 후 종료')

### 실행결과 ###
1번 반복
2번 반복
3번 반복
4번 반복
5번 반복
5번 반복 후 종료

 

 

▶ while ~ break 또는 while ~ if ~ break

## break : 조건이 항상 참인 경우 무한 반복이 실행되는데, 이떄 실행을 중지시킴. 또는 특정 조건이 만족했을때 반복문을 빠져나가게 함.(강제 종료)

## while ~ break
while True:
    print(True)
    break
    
### 실행결과 ###
True


## while ~ if ~ break
count = 0
while True:
    count += 1  # count = count + 1
    if count == 3:
        print(f'{count}번 반복 후 종료')
        break
        
### 실행결과 ###
3번 반복 후 종료

 

IT관련서비스제품

 

 while ~ if ~ continue

## while ~ if ~ continue
# 조건을 만족하면 반복문 처음으로 보내서 다시 계속 실행하게 함 (특정 조건의 실행을 건너뛰기 할 때 사용)

count = 0
while count < 5:
    count = count + 1
    if count == 3:
        continue
    print(f'{count}번 반복')

### 실행결과 ###
1번 반복
2번 반복
4번 반복
5번 반복

 

for 문

## for 문 - iterator(문자, 리스트, 튜플 등의 자료형)의 요소가 없을 때까지 그 요소를 하나씩 가져와서 실행함.

for 변수 in [iterator 자료형]:
    실행문
    
items = [1, 2, 3]
for item in items:  # for item in [1, 2, 3] 처럼도 가능
    print(item)

### 실행결과 ###
1
2
3


## 문자열 반복
data = 'Python'
for s in data:
    print(s)

### 실행결과 ###
P
y
t
h
o
n

 

 

▶ for 문과 range 함수 사용하기

## for 문과 range 함수 사용
# range 함수는 주어진 특정 범위 안에 숫자를 생성하는 함수로 range(start, end, step)으로 표현하나 step은 생략 가능함
# start는 포함, end는 미포함(start 이상, end 미만임 즉, start <= x < end), step은 interval 개념임
# start의 default는 0이고, 변경 가능함

print(range(10))
# range(0, 10)

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list(range(1, 10)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list(range(1, 10, 2)))
# [1, 3, 5, 7, 9]

for i in range(10):
    print(f'{i + 1}번 반복')
    
### 실행결과 ###
1번 반복
2번 반복
3번 반복
4번 반복
5번 반복
6번 반복
7번 반복
8번 반복
9번 반복
10번 반복


_even = ''
for i in range(2, 20, 2):
    _even += str(i) + ' '
print(f'짝수: {_even}')
    
### 실행결과 ###
짝수: 2 4 6 8 10 12 14 16 18


score = [90, 88, 54, 70, 66, 99, 78, 96]
total = 0
count = 0
for s in score:
    total += s
    count += 1
print(f'합계: {total:,}점')
print(f'평균: {(total / count):.2f}점')

### 실행결과 ###
합계: 641점
평균: 80.12점

 

 

▶ for 문과 break, continue

## for ~ if ~ break
score = [90, 88, 54, 70, 66]
cnt = 0
for s in score:
    if s < 60:
        print(f'{cnt + 1}번째 과목이 60점 미만으로 반복문 종료')
        break
    cnt += 1

### 실행결과 ###
3번째 과목이 60점 미만으로 반복문 종료


## for ~ if ~ continue
total = 0
for s in score:
    if s < 60:
        continue
    total += s
print(f'60점 이상인 점수 총합: {total}점')

### 실행결과 ###
60점 이상인 점수 총합: 314점

 

 

▶ for 문으로 리스트와 딕셔너리 요소(element) 가져오기

## 중첩 리스트(list) 값 받아오기
data = [[1, 2], [3, 4], [5, 6]]
for lst in data:
    print(lst)

### 실행결과 ###
[1, 2]
[3, 4]
[5, 6]


for x, y in data:
    print(x, y)

### 실행결과 ###
1 2
3 4
5 6

 

## 딕셔너리 키와 값 받아오기
data = {'a': 10, 'b': 20, 'c': 30}
for key in data:  # 키 받아오기
    print(key)

### 실행결과 ###
a
b
c


for val in data:  # 값 받아오기
    print(data[val])

### 실행결과 ###
10
20
30


for k, v in data.items():  # 키와 값 받아오기
    print(k, v)

### 실행결과 ###
a 10
b 20
c 3

 

 

▣ for 문 연습 예시)

## 1부터 99까지 숫자의 합을 반복문을 사용해서 출력하기
tot = 0
for i in range(1, 100):
    tot += i
print(f'1 ~ 99까지의 합계: {tot:,}')

### 실행결과 ###
1 ~ 99까지의 합계: 4,950

 

## 구구단 2단을 반복문을 사용해서 출력하기
dan = 2
for i in range(1, 10):
    print(f'{dan} x {i} = {(dan * i):2d}')

### 실행결과 ###
2 x 1 =  2
2 x 2 =  4
2 x 3 =  6
2 x 4 =  8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

 

 

for 문과 리스트 컴프리헨션

## 리스트 컴프리헨션 - List Comprehension (리스트 내 for 문)
# for 반복문을 통해 list 생성
# [[표현식] for [변수] in [interator 자료형] if [조건]]
res1 = [x for x in range(10) if x % 2 == 0]
print(res1)
# [0, 2, 4, 6, 8]

# [[조건이 참인 경우] if [조건] else [조건이 거짓일 경우] for [변수] in [자료형]]]
res2 = ['짝수' if x % 2 == 0 else '홀수' for x in range(5)]
print(res2)
# ['짝수', '홀수', '짝수', '홀수', '짝수']

 

 

댓글