01.if
'''
제어문 = 조건문(if) + 반복문(while, for)
조건문
기본 형식1)
python 블럭
if 조건식 :
실행문
실행문
cf) c언어 블럭
if 조건식 {
실행문
}
'''
var = 10 # 초기화
if var >= 5 : # True
print('var=', var)
print('var는 5보다 크다.')
if var >= 20 : # False
print('var=', var)
print('var는 5보다 크다.')
print('항상 실행된다.')
'''
형식2)
if 조건식 :
실행문1 -> True
else :
실행문2 -> False
'''
var = 12
if var > 5 :
print('var는 5이상') # 12 : var는 5이상
else :
print('var는 5미만') # 2: var는 5미만
# 키보드 점수 입력 : 100~85: 우수, 84~70: 보통, 69미만 : 저조
score = int(input('점수 입력 : '))
if score >= 85 and score <= 100 :
print('우수')
else :
if score >= 70 and score <= 84 :
print('보통')
else :
print('저조')
# 시스템 날짜/시간 가져오기
import datetime # 패키지
today = datetime.datetime.now() # 패키지.모듈.함수()
print(today) # 2018-12-16 13:38:20.973000
day = today.weekday()
print('요일 : ', day) # 요일 : 6(일요일) - (0~6)
if day >= 5 :
print('오늘은 주말')
else :
print('오늘은 평일')
# 오늘은 주말
'''
형식3)
if 조건식1 :
실행문1
elif 조건식2 :
실행문2 -> 조건식 False
else :
실행문3 -> 조건식1 & 조건식2 False
'''
# 문) 키보드 점수 입력 : 100~85: 우수, 84~70: 보통, 69미만 : 저조
# 조건> 형식3 으로 적용
grade = '' # None
if score >= 85 and score <= 100 :
#print('우수')
grade = "우수"
elif score >= 70 and score <= 84 :
#print('보통')
grade = "보통"
else :
#print('저조')
grade = "저조"
print('점수는 %d 이고, 등급은 %s 이다.'%(score, grade))
'''
블럭 외부에서 선언한 변수는
블럭 내부와 외부에서 사용 가능함
'''
# 3항 연산자
num = 9
result = 0
if num >= 5 :
result = num * 2
else :
result = num + 2
print('result =', result) # result = 18
'''
3항 연산자
형식) 변수 = 참 if 조건식 else 거짓
'''
result = num * 2 if num >= 5 else num + 2
print('result =', result) # result = 18
02.while
'''
반복문(while)
형식)
while 조건식 :
실행문
실행문
조건식 : 산술,관계,논리 연산자
'''
# 카운터/누적 변수
cnt=tot=0
while cnt < 5 : #True(cnt=0~4), False(cnt=5~)
cnt += 1 # cnt = cnt + 1(카운터 변수)
tot += cnt # tot = tot + cnt(누적 변수)
print('cnt=',cnt, 'tot=', tot)
'''
cnt= 1 tot= 1 -> 1회 반복
cnt= 2 tot= 3
cnt= 3 tot= 6
cnt= 4 tot= 10
cnt= 5 tot= 15 -> 5회 반복
'''
# 문1) 1~100까지 누적 합을 출력하시오.
# 문2) 1~100사이 중 5의 배 합을 출력하시오.
# 문3) 1~100사이 중 3의 배수이면서(and) 2의 배수가 아닌 경우의 합 출력
i = tot = tot5 = tot32 = 0 # 카운터/누적 변수
dataset = [] # 여러 개 원소 저장 변수
dataset2 = []
while i < 100 : # 문1) i=100 : False, i=99 : True
i += 1 # 카운터(99+1=100)
tot = tot + i # 누적(1~100)
if i % 5 == 0 : # 문2)
tot5 += i # 누적(5배)
dataset.append(i) # 원소 추가
# 연산자 우선순위 : 산술 > 관계 > 논리
if (i % 3 == 0) and (i % 2 != 0) : # 문3)
tot32 += i
dataset2.append(i)
print('1~100까지 누적 합 = %d'%tot)
print('1~100까지 5의 배수의 합 = %d'%tot5)
print('1~100까지 3의 배수이면수 2의 배수가 아닌 합 = %d'%tot32)
'''
1~100까지 누적 합 = 5050
1~100까지 5의 배수의 합 = 1050
'''
print('5의 배수 원소 : ', dataset)
print('3의 배수이면수 2의 배수가 아닌 원소 : ', dataset2)
'''
scala : 한 개의 값(상수)을 갖는 변수(크기)
vector : 다수의 값을 갖는 변수(크기와 방향)
'''
vector = [] # 벡터 변수
cnt = 0 # 스칼라 변수
while cnt < 5 :
vector.append(cnt+5) # 0+5
cnt += 1
print('vector :', vector) # vector : [5, 6, 7, 8, 9]
print('vector 원소 찾기')
search = int(input(
i = 0 # index 역할
#print(vector[i]) # 5
'''
스위칭[on/off] 기법
'''
size = len(vector)
sw = False
while i < size :
if vector[i] == search : # True
sw = True
print(vector[i])
i += 1
if sw == False :
print('찾는 값이 없습니다.')
else :
print('찾는 값이 있습니다.')
'''
break, continue
- 반복문에서 사용되는 키워드
- break : 반복을 탈출(exit)
- continue : 반복을 지속(다음 문장 수행 안함)
'''
i = 0
while i < 10 :
i += 1 # 카운터 변수
if i == 3 :
continue # 지속
print('i=', i) # 1 ~ 6
if i == 6 :
break # exit
'''
i= 1
i= 2
i= 4
i= 5
i= 6
'''
# vector : [5, 6, 7, 8, 9]
size = len(vector)
# 찾는 데이터가 있으면 출력
idx = 0
while idx < size :
if vector[idx] == search : # True
print(vector[idx])
break
idx += 1
03.for
'''
반복문(for)
형식)
for 변수 in 열거형객체 :
실행문
실행문
열거형 객체 : list, tuple, set, dict
'''
# list 이용
dataset = [1,2,3,4,5]
for d in dataset :
print(d) # 실행문
print(d*2) # 실행문
# range() 함수 : 일련의 정수 생성
'''
range(n) : 0 ~ n-1 정수
range(n,m) : n ~ m-1 정수
'''
print('range')
r = list(range(10)) # 0 ~ 9
print(r)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in r : # 10회 반복
print(i, end = ' ')
# 0 1 2 3 4 5 6 7 8 9
print() # line skip
for i in range(1,6) : # 1~5
print(i, end = ' ')
# 1 2 3 4 5
print()
# list -> list
lst = list(range(1,101)) # 1 ~ 100
lst2 = [] # 빈 list -> 2의 배수
for i in lst : # 100반복
if i % 2 == 0 :
lst2.append(i)
print('lst2=', lst2)
# 문) lst3에 1~50을 저장하고, lst4에 5의 배수만 추가하기
lst3 = list(range(1, 51))
lst4 = [] # 빈 list
for i in lst3 :
if i % 5 == 0 :
lst4.append(i)
print('lst4=', lst4)
# lst4= [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
# 분류정확도 계산
Y = [1,2,3,1,2] # 관측치[정답]
y = [1,2,1,1,2] # 예측치[모델]
acc = 0 # 분률정확도
for i in range(len(Y)) : # [0~4]
fit = int(Y[i] == y[i]) # T/F -> 1/0
acc += fit * 20 # 분류정확도 계산
print('accuracy =', acc) # accuracy = 80
# 다중 for문
'''
형식)
for 변수 in 열거형객체 :
for 변수 in 열거형 객체 :
실행문
'''
# 구구단 : 2~9단
for i in range(2,10) : # outer(2~9단)
print('***',i,'단***')
for j in range(1,10) : # inner(곱수:1~9)
print('%d * %d = %d'%(i, j, i*j))
print() # 빈줄
lst1 = [3,4,5] # outer
lst2 = [0.5, 0.25, 0.125] # 1/2, 1/4, 1/8 - inner
for i in lst1 :
print('i=', i)
for j in lst2 :
calc = i * j
print(calc)
print()
# for + 문자열 처리
string = """나는 홍길동 입니다.
나이는 35세 입니다.
주소는 서울 입니다."""
# 문단 -> 문장 : 엔터키 기준
lines = string.split(sep="\n")
print(lines)
# ['나는 홍길동 입니다.', '나이는 35세 입니다.', '주소는 서울 입니다.']
print(len(lines)) # 3
for doc in lines :
print(doc)
'''
나는 홍길동 입니다.
나이는 35세 입니다.
주소는 서울 입니다.
'''
docs = [] # 문장
words = [] # 단어
# outer for : 문단 -> 문장 : 엔터키 기준
for doc in string.split(sep='\n') : # '나는 홍길동 입니다.'
docs.append(doc)
# inner for : 문장 -> 단어 : 공백 기준
for word in doc.split(sep=" ") : # sep=" " 생략
words.append(word)
print('전체 문장')
print(docs); print('문장 길이 : ', len(docs))
print('전체 단어')
print(words); print('단어 길이 :', len(words))
'''
전체 문장
['나는 홍길동 입니다.', '나이는 35세 입니다.', '주소는 서울 입니다.']
문장 길이 : 3
전체 단어
['나는', '홍길동', '입니다.', '나이는', '35세', '입니다.', '주소는', '서울', '입니다.']
단어 길이 : 9
'''