04. 제어문

조남웅·2025년 9월 26일

제어문

가. 조건문
	- if 문
나. 반복문
	- while 문
    - for in 문 #자료구조에서 원소를 뽑아낼 때
    

조건문

가. 구문
if 조건 :
	명령문 1
    명령문 2
print("숫자를 입력받습니다.") #1
num = int(input("숫자:")) #2
# 만약 num이 0이면 영입니다. 0이 아니면 아무것도 안한다.

if num == 0:
    print("영입니다.")

print(num)
나. 조건이 True일 때 False일 때 실행 구문이 분기되는 조건문
if 조건 :
	명령문 1_1
    명령문 2_2
else :
	명령문 2_1
num = 0 #1
#2 - 입력받은 숫자가 0이면 0입니다. 아니면 0이 아닙니다.를 출력

if num == 0:
    print("0입니다.")
else:
    print("0이 아닙니다.")
print("종료") #3
다. 조건이 여러개인 조건문
if 조건 :
	명령문 1_1
    명령문 2_2
elif 조건2 :
	명령문 2_1
    명령문 2_2
elif 조건3 :
	명령문 3_1
    명령문 3_2
else : # 위의 모든 조건이 False일 때 실행하는 블럭, 생략 가능.
	명령문 4
num = 10 #1
#2 - num이 0 초과면 양수, 0이면 0, 0 미만이면 음수를 출력

if num > 0:
    print(f"{num}은 양수")
elif num < 0:
    print(f"{num}은 음수")
elif num == 0:
    print("0")

print("종료")
#1 - 월을 입력 받는다.
month = int(input("월:"))

#2 - 1,3,5,7,8,10,12 월이면 31일까지 있습니다.
# 2월이면 28일 또는 29일까지 있습니다.
# 4,6,9,11월 이면 30일까지 있습니다
if month in [1,3,5,7,8,10,12]:
    print(f"{month}월은 31일까지 있습니다.")
elif month == 2:
    print(f"{month}월은 28일 또는 29일까지 있습니다.")
elif month in [4,6,9,11]:
    print(f"{month}월은 30일까지 있습니다.")
else:
    print(f"{month}월은 잘못 입력하였습니다.")

#3 - 종료 출력
print("종료")

#1 - 월을 입력 받는다.
month_str = input("월:")
if month_str.isdigit():
    month = int(input("월:"))

#2 - 1,3,5,7,8,10,12 월이면 31일까지 있습니다.
# 2월이면 28일 또는 29일까지 있습니다.
# 4,6,9,11월 이면 30일까지 있습니다
    if month in [1,3,5,7,8,10,12]:
        print(f"{month}월은 31일까지 있습니다.")
    elif month == 2:
        print(f"{month}월은 28일 또는 29일까지 있습니다.")
    elif month in [4,6,9,11]:
        print(f"{month}월은 30일까지 있습니다.")
    else:
        print(f"{month}월은 잘못 입력하였습니다.")
else:
    print("월은 1 ~ 12 사이의 정수만 입력하세요")
    
#3 - 종료 출력
print("종료")

반복문

가. 구문
	1. while 문
    	- 단순 반복 처리
        - 조건이 True 동안 구문을 반복한다
while 조건:
	반복할 구문 1
    반복할 구문 2
# "안녕하세요"을 10번 출력
cnt = 1

# cnt <= 10 동안 코드를 반복
while cnt <= 10:
    print("안녕하세요") #f"({cnt}. 안녕하세요")
    cnt = cnt +1 #cnt += 1

print("종료")
	2. for in 문
    	- iterable객체가 제공하는 값들을 반복 조회
        - iterable객체가 가지고 있는 값들을 하나씩 처리하는 구문을 작성 할 때 사용
        
for 변수 in iterable:
	반복구문
    반복구문
l = [1,2,3,4,5]
for a in l: # a = 적당한 변수 선언
    print(l)
    
#짝수만 출력
for a in l:
    if a % 2 == 0:
        print(a)
        
# l의 모든 원소들의 값을 일괄적으로 10씩 더하기
result = [] #처리한 결과들을 저장할 빈 list
for a in l:
    result.append(a+10)print(l)
print(result)

a = [[1,2], [10,20], [100,200]]
for v1, v2 in a:
    print(v1, v2)

continue와 break를 이용한 반복문 제어

가. continue
	1. 현재 반복을 중단하고 다음 반복을 진행한다
    2. 특정 조건에서 처리를 멈추고 다음 처리를 반복할 때 사용
l = [1,2,3,4,5,6,7,8,9]
#3의 배수만

for a in l:
    if a % 3 != 0:
       continue
    print(a)
    
print("종료하려면 quit을 입력")
v = input("숫자")
l = [] # 입력된 숫자 저장
while v != "quit": # quit이면 종료
    # 입력 받은 숫자에 대해 l의 저장
    if not v.isdigit():
        v = input("숫자: ")
        continue
    l.append(v)
    v = input("숫자: ")
나. break
	- 반복문 실행을 중단한다.
    - 특정 조건에서 반복문을 중간에 중지할 때 사용
while True:
    print('a')
    break
    
for i in [1,2,3,4,5]:
    print(i)
    break
pos_values = [] #양수
neg_values = [] #음수
while True:
    v = random.randint(-100, 100)
    if v > 10:
        pos_values.append(v)
    elif v < 10:
        neg_values.append(v)
    else: #0이면
        break
print("종료")

print(len(pos_values), len(neg_values)) #139 166

print(pos_values[:10])

for in 문 연관 내장 함수

가. range()
	1. 일정한 간격의 연속된 정수를 제공하는 반복
    2. 구문
    	- range([시작값], 멈춤값, [증감값])

for v in range(5): #전달값 1개
    print(v, end=", ")

for v in range(1, 10): #전달값 2개
    print(v, end=", ")
    
for v in range(100, 200, 10): #전달값 3개
    print(v, end=", ")
    
for v in range(200, -200, -50): #리버스
    print(v, end=", ")
나. enumerate()
	1. enumerate(iterable, [, start=정수])
    2. start: 정수
    	- index 시작 값. 생략하면 0부터 시작
        
l = list(range(20, 31))
for index, value in enumerate(l): #(순번, 값)
    print(index, value)
    
for index, value in enumerate(l, start=100): #(순번, 값)
    print(index, value)
다. zip()
	1. 여러개의 객체를 받아 반복 시 index 값끼리 튜플로 묶는다.
    2. 구문
    	- zip(iterable1, 2, 3 [, ......])
names = ["홍길동", "이순신", "유관순", "강감찬"]
ages = [20,30,40,50]
addresses = ["서울", "부산", "광주", "인천"]

for names, ages, addresses in zip(names, ages, addresses):
    print(names, ages, addresses)
-------
info_list = []
for name, age, address in zip(names, ages, addresses):
    info = {"name": name, "age": age, "address": address}
    info_list.append(info)

print(info_list)

컴프리헨션

가. 이해
l = list(range(1,11))
l2 = [] #1의 원소들을 10배한 값들을 저장

for v in l:				# [for v in l]
    l2.append(v*10)		# v*10을 for 앞에 넣는다.
l3 = [v *10 for v in l]
#짝수만 저장
l4 = []
for v in l:
    if v % 2 == 0:
        l4.append(v)
        
l5 = [v for v in l if v %2 == 0] #컴프리헨션
profile
파이팅...

0개의 댓글