< 공부한 내용 >
제어문 : 조건문(if) + 반복문(for, while)
1. 조건문(if)
2. 반복문(while)
3. 반복문(for)
1. 조건문(if)
'''
if문 형식1)
if 조건식 :
실행문
실행문
'''
var = 10 # 변수 초기화
if var >=50 :
print('var =', var)
print('var는 5보다 크거나 같다.')
print("항상 실행")
'''
형식2)
if 조건식 :
실행문
else :
실행문
'''
score = int(input("점수 입력 : "))
if score >= 60 :
print("합격!!")
else :
print("불합격..")
# 100~85 : '우수', 84~70 : '보통', 69 이하 : '저조'
if score >= 85 and score <= 100 :
print('우수')
else : #보통, 저조
if score >= 70 and score <= 84:
print('보통')
else :
print('저조')
'''
형식3)
if 조건식1 :
실행문
elif 조건식2 :
실행문
else :
실행문
'''
# grade = ""
# 파이썬에서는 블록 바깥에 별도로 변수 선언 안해도 블록 끝난 후 사용 가능하다. (자바와 차이점)
if score >= 85 and score <= 100 :
#print('우수')
grade = "우수"
elif score >= 70 and score <= 84: # else if
#print('보통')
grade = "보통"
else :
#print('저조')
grade = "저조"
print("당신의 점수는 %d점이고, 등급은 %s 이다."%(score, grade))
'''
블록에서 사용되는 변수는 전역변수이다.
'''
# 3항 연산자 : 조건식, 참, 거짓 -> 한 줄 표현
# 형식) 변수 = 참 if (조건식) else 거짓
# 3번째 <-2번째 1번째 (2번째) : 수행 순서
# 일반 if문
num = 9
if num >= 5 :
result = num * 2
else :
result = num + 2
print(result)
# 3항 연산자
result = num * 2 if (num >= 5) else num + 2
2. 반복문(while)
'''
형식)
while 조건식 :
실행문1
실행문2
'''
# 1. 카운터변수 / 누적변수
cnt = tot = 0 # cnt = 0, tot = 0
while cnt < 5 : # True -> Loop(실행문 집합) 실행
cnt += 1 # 카운터
tot += cnt # 누적
print(cnt, tot)
print() # line skip
# 1~100까지 합, 5의 배수의 합 출력하기
# 문) 3의 배수이면서 5의 배수가 아닌 합 출력하기
cnt = tot = tot2 = tot3 = 0
while cnt < 100 :
cnt += 1
tot += cnt
# 5의 배수인 경우
if cnt % 5 == 0 :
tot2 += cnt
# 문) 3의 배수이면서 5의 배수가 아닌 합
if cnt % 3 == 0 and cnt % 5 != 0 :
tot3 += cnt
print("1~100까지 합 = %d" %(tot)) # 1~100까지 합 = 5050
print("1~100까지 5의 배수의 합 = %d" %(tot2))
# 1~100까지 5의 배수의 합 = 1050
print("1~100까지 3의 배수이면서 5의 배수가 아닌 합 = %d" %(tot3))
# 1~100까지 5의 배수이면서 3의 배수가 아닌 합 = 1368
# 2. 무한 루프 -> 종료(exit) 조건 필요
while True :
#pass # 실행문 자리를 비워두면 오류가 발생하니까, 실행문 대신 사용하는 명령어
num = int(input("숫자 입력 : "))
# exit 조건
if num == 0 :
print("반복 탈출")
break # 반복 탈출 (exit)
else :
print("입력한 숫자 %d"%(num))
# 컴퓨터 난수 생성 모듈 추가
import random
# 난수 실수
r = random.random() # 0 ~ 1 사이 난수 실수
print('r=', r)
# 난수 정수
r2 = random.randint(0,2) # min=0, max=2
print('r2=', r2)
'''
숫자 범위 : 1 ~ 10
1. 내가 입력한 숫자 == 컴숫자 : 성공(exit)
2. 내가 입력한 숫자 > 컴숫자 : 더 작은 수 입력
3. 내가 입력한 숫자 < 컴숫자 : 더 큰 수 입력
'''
print(">> 숫자 맞추기 게임 <<")
randNum = random.randint(1, 10)
while True :
myNum = int(input("예상 숫자를 입력하시오 : ")) # 1 ~ 10 사이 정수
if myNum == randNum :
print("성공!")
break
elif myNum > randNum :
print("더 작은 수 입력")
else :
print("더 큰 수 입력")
# 3. continue, break
'''
break : 반복문에서 사용되는 명령어, 현재 반복문 탈출(exit)
continue : 반복문에서 사용되는 명령어, 계속 반복(다음 문장 skip)
'''
cnt = 0 # 카운터변수
while cnt < 10 :
cnt += 1
if cnt == 3 :
continue # 계속반복
if cnt == 6 :
break # exit
print(cnt, end=' ') # 1 2 4 5
3. 반복문(for)
'''
형식)
for 변수 in 열거형객체 :
실행문
실행문
* 열거형객체(iterable) : string, list, range, tuple, set, dict
'''
# 1. 문자열(string)
string = "나는 홍길동 입니다."
print(len(string)) # 11
# 1문자 -> 변수 넘김
for s in string :
print(s, end=" ") # end는 같은 줄에 출력되도록 #결과 : 나 는 홍 길 동 입 니 다 .
print()
# 단어 -> 변수 넘김
for w in string.split(sep=' ') :
print(w, end=", ") # 나는, 홍길동, 입니다.,
# 2. list 열거형객체
# 형식) 변수 = [값1, 값2, 값3, ..., 값n]
# R의 vector와 동일함
help(list) # Help on class list in module builtins: # 빌트인! import없이 바로 사용가능
lst = [1, 2, 3, 4, 5]
print(lst) # [1, 2, 3, 4, 5]
print(lst[0]) # 1
print(lst[4]) # 5
print(lst[-1]) # 5 - 오른쪽 끝
lst2 = [] # 빈 list
for l in lst :
print(l, end=' ') # 1 2 3 4 5
if l % 2 != 0 : # 홀수
lst2.append(l) # list에 원소 추가
print(lst2) # [1, 3, 5]
print(type(lst2)) # <class 'list'> # type()= R에서의 mode()
# 3. range 열거형객체
help(range) # Help on class list in module builtins:
# range(stop) -> range object
# range(start, stop[, step]) -> range object
num1 = range(10) # 0 ~ 9
num2 = range(1, 10) # 1 ~ 9
print(num1) # range(0, 10)
print(num2) # range(1, 10)
for n in num1 : # 10회 반복
print(n, end=' ') # 0 1 2 3 4 5 6 7 8 9
print()
for n in num2 : # 9회 반복
print(n, end=' ') # 1 2 3 4 5 6 7 8 9
# 4. list + range
num = range(1, 6)
print(num)
# range -> list
num_list = list(num)
print(num_list) # [1, 2, 3, 4, 5]
num = range(1, 101, 2) # 1~100(2씩 증가)
print(num) # range(1, 101, 2)
# range -> list
num_lst = list(num)
print(num_lst) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, ..., 97, 99]
tot = 0
for i in num_lst :
tot += i
print('tot =', tot) # tot = 2500
# 문) num_lst 변수를 대상으로 3의 배수만 lst3 변수에 추가하기
lst3 = []
for i in num_lst :
if i % 3 == 0 :
lst3.append(i)
print(lst3) # [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
print(len(lst3)) # 17
# [실습] 분류정확도
y = [1, 0, 2, 1, 0] # 정답
y_pred = [1, 0, 2, 0, 0] # 예측치
size = len(y) # 5
# range(5) : 0 ~ 4
acc = 0
for i in range(size) : # 5회 반복
fit = y[i] == y_pred[i] # True / False
# bool -> int
acc += int(fit) * 20 # T->1, F->0
print("분류정확도 =", acc) # 분류정확도 = 80
# [실습] 난수(random)
import random
# 1) 난수 실수
r1 = random.random() # 0 ~ 1 사이 난수 실수
print('r1=',r1)
# 2) 난수 정수
r2 = random.randint(1,10) # 난수 정수
print('r2=',r2)
# 3) data sampling
dataset = list(range(1,1001)) # 1000개의 데이터를 가진 dataset
print(dataset)
# 모집단 dataset에서 k개 데이터 샘플링
train = random.choices(dataset, k=10)
print(train) # [680, 427, 842, 282, 875, 169, 521, 543, 860, 98]
# 5. 중첩 for
'''
for i in 열거형객체 :
for j in 열거형객체 :
실행문
'''
# 1) 구구단 출력
for i in range(2, 10) :
print("======{}단======".format(i))
for j in range(1, 10) :
print("%d * %d = %d"%(i,j,i*j))
# 2) 문자열 처리
string = """나는 홍길동 입니다.
주소는 서울시 입니다.
나이는 35세 입니다."""
sentences = [] # 문장들 저장
words = [] # 단어들 저장
for s in string.split(sep="\n") :
sentences.append(s) # 문장 추가
for w in s.split() : # s = 나는 홍길동 입니다. (문장)
words.append(w) # 단어 추가
print('문장 : ', sentences, len(sentences)) # 3
print('단어 : ', words, len(words)) # 9
-------------------------------------------------- example --------------------------------------------------
'Python 과 머신러닝 > I. 기초 문법' 카테고리의 다른 글
Python 기초 5장. 함수 (2) (0) | 2019.09.30 |
---|---|
Python 기초 5장. 함수 (1) (0) | 2019.09.30 |
Python 기초 4장. 정규표현식 (0) | 2019.09.30 |
Python 기초 3장. 자료구조 (0) | 2019.09.30 |
Python 기초 1장. 변수와 연산자, print, 문자열처리 (0) | 2019.09.30 |
댓글