본문 바로가기
Python 과 머신러닝/I. 기초 문법

Python 기초 2장. 제어문

by JoyfulS 2019. 9. 30.

< 공부한 내용 >

제어문 : 조건문(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 --------------------------------------------------

 

exam01.py
0.00MB
exam02.py
0.00MB
exam03.py
0.00MB

댓글