📗 3일차 공부 내용 요약
[ 파이썬 ]
1. 반복문 : for~, while~ 등 반복문에 대해 배웠다.
2. 연습문제 풀이 : 그동안 학습한 '데이터와 변수'와 '연산자'에 대한 연습문제를 풀고, 해설을 학습했다.
📖 3일차 공부 내용 자세히
1. 반복문
■ 반복문?
- 반복문이란 특정 실행을 반복하는 것이다
- 반복문을 사용하면 프로그래밍이 간결하고 유지 보수가 쉽다
■ 반복문의 종류
- 횟수에 의한 반복 : 횟수 지정 → 횟수만큼 반복 실행 [ for문 ]
- 조건에 의한 반복 : 조건지정 → 조건을 만족할 때까지 반복 실행 [ while 문 ]
for ~ in range ( 시작, 끝, 단계 )
- 단계 매개 변수 생략 : 단계가 1인 경우에는 생략이 가능하다
- 시작 매개 변수 생략 : 시작이 0인 경우에는 생략이 가능하다
#1부터 10까지 1씩 증가하면서 반복
for i in range(1,11,1)
#1,2,3,4,5,6,7,8,9,10 총 10회 반복
#0부터 9까지 2씩 증가하면서 반복
for i in range(0,10,2)
#0,2,4,6,8 총 5회 반복
#5부터 9까지 1씩 증가하면서 반복
for i in range(5,10,1)
#5,6,7,8,9 총 5회 반복
while 조건식 :
실행문
- 들여쓰기를 꼭 유의해서 해야 한다.
endNum = 10
n = 0
while n <= endNum : #조건식
print(n) #실행문
n += 1 #실행문
■ 무한 루프
- 반복문을 빠져나올 수 없는 경우를 무한 루프라고 한다
- 조건식에 논리형 데이터를 사용해서 무한루프를 실행시키거나 중단시킬 수 있다.
#하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 때,
#누적 독감 환자 수가 최초 10,000명을 넘는 날짜를 구해보자
import random
day = 0
sumPatient = 0
flag = True
while flag :
dailyPatient = random.randint(50,100)
sumPatient += dailyPatient
day += 1
print('{}일 환자 수 : {}, 누적 환자수 : {}'.format(day, dailyPatient, sumPatient))
if sumPatient >= 10000 :
flag = False
■ 반복문 제어
continue
- 반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어간다
for i in range(100):
if i % 7 != 0
continue #이하 반복 실행 생략
print('{}는 7의 배수입니다.'.format(i))
else
- else의 실행문은 반복이 종료된 후 실행된다
cnt = 0
for i in range(100):
if i % 7 != 0
continue #이하 반복 실행 생략
print('{}는 7의 배수입니다.'.format(i))
cnt += 1
else:
print('99까지의 정수 중 7의 배수는 {}개입니다.'.format(cnt))
break
- 반복 실행 중 break를 만나면 반복문을 빠져나온다.
num = 0
while True :
print('Hello~')
num+=1
if (num>=5):
break
2. 연습문제 풀이
■ 새로 알게 된 함수
len ( ) | 문자의 길이 반환 |
변수명 . find( ) | 특정 문자열의 위치를 찾아 반환함 |
str[0] | str에 저장된 문자열에서 첫 번재 문자를 반환함 |
변수명.isdigit( ) | 숫자인지 확인(숫자이면 True, 아니면 False) |
■ 기억에 남는 문제
Q. 국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수 과목, 그리고 최고점수와 최저 점수의 차이를 각각 출력해보자.
kor = int(input('국어 점수 입력 : '))
ing = int(input('영어 점수 입력 : '))
mat = int(input('수학 점수 입력 : '))
total = kor + ing + mat
avg = total/3
maxSbj = '국어'
maxScore = kor
if maxScore < ing : #국어보다 영어가 더 클 경우
maxSbj = '영어'
maxScore = ing
if maxScore < mat :
maxSbj = '수학'
maxScore = mat
# 1)위에서 패스 했을 경우(국어보다 영어가 작을 경우), 국어보다 수학이 클 경우 조건에 걸리게 됨
# 2)위 조건을 수행 한 경우, 영어보다 수학이 더 클 경우, 영어보다 수학이 더 안크면 조건문을 패스하게 됨
minSbj = '국어'
minScore = kor
if minScore > ing :
minSbj = '영어'
minScore = ing
if minScore > mat :
minSbj = '수학'
minScore = mat
difScore = maxScore - minScore
print('*'*30)
print('총점 : ',total)
print('평균 : %.2f'%avg)
print('최고 점수 과목(점수) : {}({}))'.format(maxSbj, maxScore))
print('최저 점수 과목(점수) : {}({}))'.format(minSbj, minScore))
print('최고, 최저 점수 차이 : {}'.format(difScore))
Q. 상품 가격과 지불 금액을 입력하면 거스름 돈을 계산하는 프로그램을 만들어보자.
단, 거스름 돈은 지폐와 동전의 개수를 최소로 하고, 1원 단위 절사 한다.
- 지폐 : 50,000원 / 10,000원 / 5,000원 / 1,000원
- 동전 : 500원 / 100원 / 10원
money50000 = 50000 ; money10000 = 10000 ; money5000 = 5000 ; money1000 = 1000
money500 = 500 ; money100 = 100 ; money10 = 10
money50000cnt = 0 ; money10000cnt = 0 ; money5000cnt = 0 ; money1000cnt = 0
money500cnt = 0 ; money100cnt = 0 ; money10cnt = 0
productPrice = int(input('상품 가격 입력 : '))
payPrice = int(input('지불 금액 : '))
if payPrice > productPrice : ##지불금액이 더 높아야 거스름돈을 줄 수 있다
changeMoney = payPrice - productPrice
changeMoney = (changeMoney // 10 ) * 10
print('거스름 돈 : {}(원 단위 절사)'.format(changeMoney))
print('-'*30)
if changeMoney > money50000 : # 50000원보다 커야 50000원을 거슬러 줄 수 있다
money50000cnt = changeMoney // money50000
changeMoney %= money50000 # 50000원으로 나누면 나머지가 잔돈이 된다
if changeMoney > money10000 :
money10000cnt = changeMoney // money10000
changeMoney %= money10000
if changeMoney > money5000 :
money5000cnt = changeMoney // money5000
changeMoney %= money5000
if changeMoney > money1000 :
money1000cnt = changeMoney // money1000
changeMoney %= money1000
if changeMoney > money500 :
money500cnt = changeMoney // money500
changeMoney %= money500
if changeMoney > money100 :
money100cnt = changeMoney // money100
changeMoney %= money100
if changeMoney > money10 :
money10cnt = changeMoney // money10
changeMoney %= money10
print('50,000원 {}장'.format(money50000cnt))
print('10,000원 {}장'.format(money10000cnt))
print('5,000원 {}장'.format(money5000cnt))
print('1,000원 {}장'.format(money1000cnt))
print('500원 {}장'.format(money500cnt))
print('100원 {}장'.format(money100cnt))
print('10원 {}장'.format(money10cnt))
print('-'*30)
➰ 3일차 후기
3일차인데 벌써 기억해야 할 것 들이 많다, 쓱 한 번 보면 외워지면 좋으련만.. 반복만이 답인가 보다.
처음 연습문제를 많이 풀어본 날이 었는데 내가 작성한 코드와, 해설의 코드가 달랐던 문제들이 있었다. 해설의 코드들을 하나씩 꼽아보며 의미를 알아보고 이해하려다 보니 시간이 꽤 걸렸지만, 좀 더 효율적이고 논리적인 코드 작성을 위해서는 어쩔 수 없는 과정인 것 같다. 언젠가 손쉽게 코드 작성하는 날이 오길 빌며...
※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.
'제로베이스 데이터 스쿨 > 일일 스터디 노트' 카테고리의 다른 글
6일차 스터디노트/ 파이썬 객체 지향 프로그래밍, 클래스, 예외 / 제로베이스 데이터 취업스쿨 (0) | 2023.01.09 |
---|---|
5일차 스터디노트 / 파이썬 함수, 모듈, 패키지 / 제로베이스 데이터 취업스쿨 (0) | 2023.01.08 |
4일차 스터디노트 / 파이썬 연습 문제 풀이(조건문, 반복문) / 제로베이스 데이터 취업 스쿨 (0) | 2023.01.07 |
2일차 스터디노트 / 파이썬 데이터 입·출력, 연산자, 조건문 / 제로베이스 데이터 취업 스쿨 (0) | 2023.01.05 |
1일차 스터디노트 / 파이썬 설치, 변수, 자료형 / 제로베이스 데이터 취업 스쿨 (0) | 2023.01.03 |