💬 오늘의 공부시간 PM 11:30 ~ 2:00

오늘은 꼭 목표까지 공부하자!!
아자 아자!!

🔥 1주차 todo 리스트 (5/3~5/7)

파이썬 기초1
파이썬 기초2~3
파이썬 기초4
파이썬 기초5
파이썬 기초6
파이썬 기초7
파이썬 기초8
파이썬 기초9~10
반복문
횟수에 의한 반복문(for문)
반복 범위 설정(range()함수)
조건에 의한 반복(while문)
for문과 while문 비교
무한루프
반복문 제어(continue)
반복문 제어(break)
중첩반복문

파이썬 기초문풀1

파이썬 기초문풀2
파이썬 기초문풀3

📝 weekly 데이터 사이언스 스쿨 퀴즈

💻 핵심 내용 정리

📝 반복문

  • 특정 실행을 반복하는것.
  • 반목문을 사용하면 프로그래밍이 간결하고 유지 보수가 쉽다.
  • 간단하게 손쉽게 만들어 효율적이다.

📝 반복문의 종류

  • 횟수에 의한 반복
    횟수 지정 → 횟수만틈 반복 실행
  • 조건에 의한 반복
    조건 지정 → 조건에 만족할때까지 반복실행

📝 횟수에 의한 반복문(for문)

  • 정해놓은 반복 횟수에 따라 반복 실행한다.
    (대량메일또는 문자발송, 인사말 반복, mp3반복재생)
  • 횟수의 의한 반복은 for문이 주로 사용된다.
    for문 : 쉽고 직관적이다.
    while문 : 조건에 의한 반복문을 사용할때 사용한다.

📝 for문 사용 방법

for i in range(n): 조건문
[들여쓰기] print( ) : 실행문

구구단 출력해보기

for i in range(10):    # 변수_i / 실행횟수_n
    print('{} * {} = {}'.format(7, i, (7 * i)))

pass : 아직 실행문이 정해지지않음, 반복하되 실행하지 않겠다.(실행문 대신에 사용)
:(코드블록), 들여쓰기 : 동일하게 들여쓰기를 하자.

실습_01

'Hello python'문자열을 5번 출력하는 코드를 작성하자

for num in range(5):
    print('Hello python')

📝 반복 범위 설정(range()함수)

range()함수 : 반복이 가능한 개체만 넣어준다.
for i in range (시작, 끝, 단계)

  • 매개변수의 단계가 1인 경우에만 생략이 가능하다.
  • 매개변수의 시작이 0인 경우에만 생략이 가능하다.

실습_02

사용자가 반복의 시작과 끝으 ㄹ입력하면 1씩 증가하는 반복문을 만들어 보자.

startNum = int(input('반복의 시작 입력 : '))
endNum = int(input('반복의 끝 입력 : '))

for i in range(startNum, (endNum+1)):
    print(i)
    
위에서 작성한 반복문을 이용해서 2씩 증가하는 반복문을 만들어 보자.

for i in range(startNum, (endNum+1), 2):
    print(i)

실습_03

1에서 100까지의 정수중 3의 배수에 해당하는 정수만 출력하는 코드를 작성하자.

for i in range(1, 101):
    if i % 3 == 0:
        print(i)

📝 조건에 의한 반복(while문)

  • 조건에 만족하면 반복실행한다. 그렇지 않으면 반복을 중단한다.
    (매일아침기상알람, 게임반복실행, 타이머)
  • 조건에 의한 반복은 while문이 주로 사용된다.

📝 while문 사용 방법

while 조건식 : 조건문
[들여쓰기] print( ) : 실행문
[들여쓰기] n += 1 / 무한루프를 방지

pass : 아직 실행문이 정해지지않음, 반복하되 실행하지 않겠다.(실행문 대신에 사용)
:(코드블록), 들여쓰기 : 동일하게 들여쓰기를 하자.

실습_04

1에서 100까지의 정수중 2의 배수와 3의 배수를 구분해서 출력하자.

n = 1
while n < 101 :
    if n % 2 == 0:
        print('{}은 2의 배수이다.'.format(n))
    if n % 3 == 0:
        print('{}은 3의 배수이다.'.format(n))
    n += 1

실습_05

while문을 이용해서 사용자가 입력한 구구단을 출력하자.

gugudanNum = int(input('희망구구단을 입력하세요 : '))

n = 1

while n < 10 :
    result = gugudanNum * n
    print('{} * {} = {}'.format(gugudanNum, n, result))
    n += 1

📝 for문과 while문 비교

  • for문이 적합한 경우
    횟수의 의한 반복이라면 for문이 while문보다 적합하다.

  • while문이 적합한 경우
    조건의 의한 반복이라면 while문이 for문이 보다 적합하다.

실습_05

자동차 바퀴가 한번 구를때마다 0.5mm씩 마모 된다고 한다.
현재의 바퀴두께가 30mm이고 최소 운행 가능 바퀴 두께가 20mm라고 할 때
앞으로 구를수 잇는 횟수를 구해보자.
- 휫수를 알수 없으니, 조건문에 적합한 whlie문을 이용한다.

currentThickness = 30
rotationCount = 0
removeThickness = 0.15

while currentThickness >= 20:
    rotationCount += 1
    currentThickness -= removeThickness

safeRotationCount = rotationCount - 1  # 20이하로 내려가지 않게 올림 해줌
print('운행가능 횟수 : {}'.format(safeRotationCount))

📝 무한루프

  • 반복문을 빠져나올수 없는 경우를 무한 루프라고 한다.
    while문에서 조건식의 결과가 항상 True인 경우
  • 조건식에 논리형 데이터를 사용해서 무한 반복 실행할 수 있다.
    if문을 사용하여 무한루프를 빠져나올수 있다.

실습_06

하루에 독감으로 병원에 내방하는 환자수가 50명에서 100명사이일 때,
누적 독감 환자수가 최초 10,000명을 넘는 날짜를 구해보자.

import random

sum = 0
date = 1
flag = True

while flag:
    patienCount = random.randint(50,100)
    sum += patienCount
    print('날짜: {}, \t 오늘 환자수: {}, \t 누적 환자수: {}'.format(date, patienCount, sum))
    if sum >= 10000:
        flag = False

📝 continue 키워드

반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어간다.

예시

for i in range(100):
    if i % 7 != 0:
        continue

print('{}는 7의 배수입니다.'.format(i))

📝 else 키워드

else의 실행문은 for문의 반복문(반복작업)이 종료된 후 실행된다.

예시

cnt = 0
for i in range(100):  # 0~99까지 진행하면서 7의 배수만 실행
    if i % 7 != 0:
        continue

    print('{}는 7의 배수입니다.'.format(i))
    cnt += 1

else:
    print("99까지의 정수 중 7의 배수는 {}개입니다.". format(cnt))

실습_07

1부터 100까지의 정수 중 37의 공배수와 최소공배수를 출력하자.

minNum = 0
for i in range(1,101):
    if i % 3 != 0 or i % 7 != 0:
        continue

    print('공배수: {}'.format(i))

    if minNum == 0:
        minNum = i

else:
    print('최소 공배수: {}'. format(minNum))

📝 break 키워드

반복 실행 중 break를 만나면 반복문을 빠져 나온다.

실습_08

10의 팩토리얼(10!)을 계산하는 과장에서 결과값이 50을 넘을떄의 숫자를 구하자.

result = 1  # 결과값
num = 0

for i in range(1, 11):
    result *= i

    if result > 50:
        num = i
        break

print('num: {}, result: {}'.format(num, result))

실습_09

새끼 강아지의 체중이 2.2kg가 넘으면 이유식을 중단하려고 한다.
한번 이유식을 먹을떄ㅖ 체중이 70g 증가한다고 할때,
예상되는 이유식 날짜를 구하자.(현재 체중은 800g이다.)

limitWeight = 2200    # 결과값
currentWeight = 800   # 현재값
date = 1    # 변수

while True:
    if currentWeight >= 2200:
        break

    date += 1
    currentWeight += 70  # 한번 먹을때 70g증가 _조건식

print('이유식 중단 날짜 : {}일'.format(date))

📝 중첩반복문

  • 반복문 안에 또 다른 반복문을 선언한다.
  • 너무 많은 반복문은 복잡하고 계산하기 어렵다.

예시

for i in range(10, 0, -1):
    for j in range(i):
        print('*', end='')
    print()

실습_10

구구단 전체를 출력하자.

for i in range(1, 10):
    for j in range(2, 10):
        result = j * i
        print('{} * {} = {}\t'.format(j, i, result), end='')

    print()

🏅 기초 문제풀이 _ 01

주문확인서 템플릿 만들기

name = '홍길동'
product = '야구글러브'
orderNo = 2568956
payMethod = '신용카드'
productPrice = 110000
payPrice = 100000
usePoint = 10000
payDate = '2021/08/03 21:50:12'
payDiv = 6
payDivCategory = '무'
phone = '02-1234-5678'

print('-' * 50)
print(name, '고객님 안녕하세요.')
print(name, '고객님의 주문이 완료되었습니다.')
print('다음의 주문건에 대한 상세 내역입니다.')
print('-' * 50)
print('상품명 : {}'.format(product))
print('주문번호 : {}'.format(orderNo))
print('결재방법 : {}'.format(payMethod))
print('상품금액 : {}원'.format(productPrice))
print('결재금액 : {}원'.format(payPrice))
print('포인트 : {}'.format(usePoint))
print('결제일시 : {}'.format(payDate))
print('할부 : {}개월'.format(payDiv))
print('할부유형 : {}'.format(payDivCategory))
print('문의 : {}'.format(phone))
print('-' * 50)
print('저희 사이트를 이용해 주셔서 감사합니다.')

len() 함수 : 문자 길이 반환

사용자가 입력한 데이터의 길이를 출력하는 프로그램을 만들어보자.

userMsg = input('메세지 입력 : ')
print('메세지 문자열 길이 : {}'.format(len(userMsg)))

find() 함수 :

객체지향 문자열(0부터 특정문자의 위치를 찾는다.)을 찾아 보자.

article = '모든 함수가 일단 클래스 안에 있어야 하며, 전역 함수는 static 함수를 사용하는 형태로 짜야 한다. \
그나마 객체지향이라는 직관성은 C#이 Python보다 더 좋은 편이다. \
두 언어는 서로 다른 용도로 사용되는 경우가 많지만 OpenCV와 같은 곳에서는 둘 다 사용할 수 있기도 하다.'

strIdx = article.find('객체지향')
print('객체지향 문자열 위치 : {}'.format(strIdx))
사용자가 입력한 데이터를 모두 실수로 변경한후 사각현, 삼각형의 넓이를 출력해보자.

width = float(input('가로 길이 입력 : '))
height = float(input('세로 길이 입력 : '))

triangleArea = width * height /2
squareArea = width * height

print('-' * 13, 'Result', '-' * 13)
print('삼각형 넓이 : %f' % triangleArea)
print('사각형 넓이 : %f' % squareArea)
print('삼각형 넓이 : %.2f' % triangleArea)
print('사각형 넓이 : %.2f' % squareArea)
print('-' * 34)
원의 반지르을 입력하면 원의 넓이와 둘레 길이를 출력하되,
아래의 형식으로 출력해보자.

정수
소수점 한자리
소수점 셋째자리

r = int(input('반지름(cm) 입력 : '))
pi = 3.14

area = pi * r * r
cir = 2 * r * pi

print('원의 넓이 : %dcm' % area)
print('원의 둘레 : %dcm' % cir)
print('원의 넓이 : %.1fcm' % area)
print('원의 둘레 : %.1fcm' % cir)
print('원의 넓이 : %.3fcm' % area)
print('원의 둘레 : %.3fcm' % cir)
사용자로 부터 입력받은 개인정보를 포맷 문자열을 이용해서 다음과 같이 출력해보자.

name = input('이름 입력 : ')
mail = input('메일 입력 : ')
id = input('아이디 입력 : ')
pw = input('비밀번호 입력 : ')
privateNumber1 = input('주민번호 앞자리 입력 : ')
privateNumber2 = input('주민번호 뒷자리 입력 : ')
address = input('주소 입력 : ')

pwStar = '*' * len(pw)
privateNumberStar = privateNumber2[0] + ('*' * 6)

print('-' * 36)
print(f'이름 : {name}')
print(f'메일 : {mail}')
print(f'아이디 : {id}')
print(f'비밀번호 : {pwStar}')
print(f'주민번호 : {privateNumber1} - {privateNumberStar}')
print(f'주소 : {address}')
print('-' * 36)

srt() 함수 : str에 저장된 문자열에서 첫번째 문자를 반환함

💡 오늘을 마무리하면서 ...

컨디션이 안좋아졌다.
포항 다녀오면서 너무 무리를 했나 보다.
역시 시집살이 힘들어 ㅠ (동동이 이거 보지마!)
파이썬 코드 쓸때 '-' * 이거 귀여운것 같음

print('-' * 36)

역시 힘들때엔 귀여운거 보는게 힐링이 됨 ㅎㅎㅎ

😃 Busy Study _ 새벽반 PM 10:00 ~ AM 2:30

여러분 화이팅!! 우리 모두 다 잘 될거예요!

profile
늦깎이 DA/DS 취준생, 이곳은 스터디노트 겸 성장기록장(소통환영이요💜)

0개의 댓글