기본적으로 프로그램은 순차구조를 가지는데 그 실행흐름을 제어하는 구문을 만드는 문법이 제어문
logic - 순차적으로 적은 코드
알고리즘 - 해결해야하는 문제에 대한 문제풀이, logic에 따라 순차적으로 작성됨
제어문 : 알고리즘 안에서 실행됨. 순차적으로 작성되는 구조
#순차 구조 - 순차적으로 실행되어야만 함
n1 = input()
num1 = int(n1)
n2 = input()
num2 = int(n2)
oper = input("연산자")
result = num2 + num1
print("결과:",result)
1) 조건문(if문) : 연산자로 입력된 값이 무엇이냐에 따라 해야할 일이 달라지는 것
2) 반복문 : 하나의 코드로 여러번의 실행을 하는 것
- while문 : 조건이 True인 동안 반복하는 것, 목표를 달성하기 전까지 무한 반복
- for in 문 : 횟수가 정해진 만큼 반복하는 것, 자료구조와 관련이 있음
순서도에서 <조건> 에 따라서 다른 흐름이 발생
if 조건 : #조건은 bool표현식
명령문1 #조건이 True일 때 실행할 구문
명령문2
예)
# 1.정수를 입력받는다
num = int(input("정수:"))
# 2. 정수가 0이면 "Zero"를 출력한다.(아니면 아무것도 안한다.)
if num == 0 :
print("Zero")
print("영입니다.")
# 2개의 명령문이 하나로 묶음
# if문이 False일 경우, 실행되지 않음
# 3."종료"를 출력
print("종료")
if 조건:
명령문1_1 # 조건이 True일 경우 실행할 구문들
명령문1_2
...
else:
명령문2_1 # 조건이 False일 경우 실행할 구문들
명령문2_2
...
예)
#1. 정수를 입력받는다.
num = int(input("정수 :"))
#2. 2-1: 정수가 0이면 "Zero"를 출력
# 2-2: 정수가 0이 아니면 "Not Zero"를 출력
if num == 0 :
print("Zero")
print("영입니다.")
else :
print("Not Zero")
print("영이 아님")
# 3. 종료 출력
print("종료")
if 조건 :
명령문
elif 조건 : #조건2 - 조건1이 False일 때 실행
명령문
elif 조건 : #조건3 - 조건1,2가 모두 False일 때 실행
명령문
#조건이 중첩되는 경우
num = int(input("양수입력:"))
if num >= 10000 :
print("아주 큰수")
elif num >= 1000 :
print("큰수")
elif num >= 100 :
print("보통")
elif num >= 0 : #가장 큰 범위를 포함하는 조건 - 마지막
print("양수")
while 조건: # 조건은 bool 표현식
반복할 구문1 # 반복할 구문을 코드블록으로 작성한다.
반복할 구문2
예)
limit = int(input("반복횟수:")
count = 0 #몇 번째 반복일지 저장할 변수 초기화
while count < limit :
#True -> False로 바뀌는 구문 필요 ex. 증감식(없을 시, 무한 반복)
count = count +1
print(f"{count}번째 실행.")
for 변수 in Iterable:
반복구문
반복구문
예)
<while문으로 작성할 때>
l = [1, 2, 3, 4, 5] # 리스트 원소들의 값 +10 한 것을 출력
cnt = len(l) # 원소의 개수를 센다 -> 기준값을 원소의 개수로 설정
idx = 0 # index 역할 초기값 설정
while idx < cnt :
value = l[idx] #원소 한개 조회
print(value + 10) #조회한 원소를 처리(+10 값을 출력)
idx += 1 #index를 증가
<for in 문 이용>
#iterable 객체를 순차적으로 순환하면서 반복적으로 진행할 명령문을 작성한다.
#for 변수 in에서 변수를 설정하고 그 변수의 반복문을 작성하면 된다.
l = [1, 2, 3, 4, 5]
for v in l : #변수 v
print(v+10) #변수 v를 이용한 반복문 작성
#for value in list:
예)
# print(value)
l = [1, 2, 3, 4, 5]
for value in l:#for 변수 in 리스트 : => 변수 : 원소를 저장할 변수명
# list안의 원소를 전부 처리할 때 까지 반복
print(value)
참고)
#리스트를 도는 것이 아니라 리스트의 원소의 개수 -> while문의 조건에 들어감
l = [1, 2, 3, 4, 5] # 리스트 원소들의 값 +10 한 것을 출력
cnt = len(l) # 원소의 개수
idx = 0 # index 변수 초기화
while idx < cnt :
value - l[idx] #원소 한개 조회
print(value + 10) #조회한 원소를 처리(+10 값을 출력)
idx += 1 #index를 증가
예)
# l의 원소 중 2의 배수만 출력
l = [1,2,3,4,5,6,10,3,4,12,20,102,111]
for value in l:
if value % 2 == 0:
print(value)
# l의 원소 중 2의 배수만 모으기
l = [1,2,3,4,5,6,10,3,4,12,20,102,111]
result = [] #2의 배수만 모을 빈리스트 초기화 #result = list()
for value in l:
if value %2 == 0:
result.append(value)
l2 = [
[1,2,3],
[10,20,30],
["가","나","다"]
]
for l in l2 : #외부 리스트의 원소를 조회
# l => 리스트
for value in l: #내부 리스트의 원소를 조회
print(value)
print("-------------------")
>>
1
2
3
-------------------
10
20
30
-------------------
가
나
다
--------------
continue와 break를 이용한 반복문 제어
- if문에 작성(continue와 break는 특정 조건에서 실행)
break
반복을 중단
특정 조건에서 반복문을 중간에 중지할때 사용
continue
현재 반복을 중단하고 다음 반복을 진행
특정 조건에서 처리를 멈추고 다음 처리를 반복할 때 사용
예) break
#1
for v in [1,2,3,4,5,6,7]: #반복 조건
if v == 3 : #if 반복 중지 조건: break - 3에 도달하면 반복을 중지!
break
print(v)
print("종료")
#2
t = input("입력:")
while True :
print(f">>{t}")
if t == "종료":
break #반복을 멈춘다.
t = input("입력:")
예) continue
result = []
# -100, 100 에서 양수가 나오면 result 저장, 0이 나오면 종료
while True :
num = random.randint(-100,100)
if num == 0 :
break # 반복문 자체를 종료
elif num < 0:
continue #다음 반복으로 하러감. 아래 반복을 실행하지 x
# num<0를 만족하는 한, 아래 조건문으로 넘어가지 않고, num = random.randint(-100,100) 계속 진행
result.append(num) #num이 ==0도아니고, <0도 아닐 경우에만 , 즉 양수일 경우에 result 리스트에 num 추가
```
range([시작값], 멈춤값, [증감값])
: 일정한 간격의 연속된 정수를 제공하는 반복가능 객체
예) print(set(range(1,10,2)))
>> (1,3,5,7,9)
for i in range(1,10,2):
print(i)
>> 1 3 5 7 9
for i in range(10,-10,-1) : #10 ~ -10-(-1): 증감:-1
print(i, end = ",")
>> 10,9,8,7,...-7,-8,-9,
#번호. 안녕하세요 => 5번 출력(1.안녕하세요, 2.안녕하세요,...5.안녕하세요)
for i in range(5) : # N번 반복
print(f"{i+1},안녕하세요.")
for _ in range(5):
print("Hello world")
enumerate(Iterable, [, start=정수(index시작값, default = 0)])
names = ["유재석","박명수","홍길동","정준하"]
for name in enumerate(names):
print(name)
>>>
(0, '유재석')
(1, '박명수')
(2, '홍길동')
(3, '정준하')
for index,name in enumerate(names, start = 1): #start = 시작
print(f"{index}. {name}")
>>>
1. 유재석
2. 박명수
3. 홍길동
4. 정준하
zip(Iterable1, Iterable2, Iterable3)
예)
#네 명의 사람정보를 이름, 나이, 주소별로 따로 저장. 같은 index의 값이 한사람의 정보
names = ['유재석','박명수','홍길동','정준하']
ages = [20,30,40,50]
addresses = ["서울","인천","서울","대전"] #"부산","대구","광주"]
print(names[0],ages[0],address[0])
>>유재석 20 서울
예)
for index, value in enumerate(zip(names, ages, addresses)) :
print(index, value)
>>>
0 ('유재석', 20, '서울')
1 ('박명수', 30, '인천')
2 ('홍길동', 40, '서울')
3 ('정준하', 50, '대전')