파이썬 13, 14, 15

윤선민·2023년 11월 25일

파이썬

목록 보기
5/14

38_반복문 제어(continue)

continue 키워드

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

else 키워드

  • else의 실행문은 반복문이 종료된 후 실행된다.
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))
=================================================
공배수 : 21
공배수 : 42
공배수 : 63
공배수 : 84
최소 공배수 : 21

39_반복문 제어(break)

break 키워드

  • 반복 실행 중 break를 만나면 반복문을 빠져나온다.
result = 1
num = 0
for i in range(1, 11):
    result *= i

    if result > 50:
        num = i
        break

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

이유식 중단 날짜 : 21

limitWeight = 2200
currentWeight = 800
date = 1

while True:
    if currentWeight >= 2200:
        break # 하루에 70g씩 증가하다가(반복) 현재 몸무게가 2200g이 넘으면 멈춰(break)

    date += 1 # 날짜는 1일씩 증가
    currentWeight += 70 # 몸무게는 70g씩 증가

print('이유식 중단 날짜 : {}'.format(date)) #2200g을 넘는 날짜는 언제야?
==========================================================================
이유식 중단 날짜 : 21

40_중첩 반복문

반복문 안에 또 다른 반복문을 선언한다.

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

❗ 일반적으로 두~세단계만 사용, 너무 많으면 수가 기하급수적으로 늘어날 수 있음

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

    print()
===============================================================
2 * 1 = 2	3 * 1 = 3	4 * 1 = 4	5 * 1 = 5	6 * 1 = 6	7 * 1 = 7	8 * 1 = 8	9 * 1 = 9	
2 * 2 = 4	3 * 2 = 6	4 * 2 = 8	5 * 2 = 10	6 * 2 = 12	7 * 2 = 14	8 * 2 = 16	9 * 2 = 18	
2 * 3 = 6	3 * 3 = 9	4 * 3 = 12	5 * 3 = 15	6 * 3 = 18	7 * 3 = 21	8 * 3 = 24	9 * 3 = 27	
2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	5 * 4 = 20	6 * 4 = 24	7 * 4 = 28	8 * 4 = 32	9 * 4 = 36	
2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	6 * 5 = 30	7 * 5 = 35	8 * 5 = 40	9 * 5 = 45	
2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	7 * 6 = 42	8 * 6 = 48	9 * 6 = 54	
2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	8 * 7 = 56	9 * 7 = 63	
2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	9 * 8 = 72	
2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81

연습문제(데이터와 변수)

- 오늘 날짜와 시간이 출력되는 프로그럄

import datetime

today = datetime.datetime.today()
print(today)

===================================
2023-11-25 16:49:50.617979

- 영수증 템플릿 출력

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

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

================================================

홍길동 고객님 안녕하세요.
홍길동 고객님의 주문번호가 완료되었습니다.
다음은 주문건에 대한 상세 내역입니다.
----------------------------------------
상품명	:  야구글러브
주문번호	:  2568956
결제방법	:  신용카드
상품금액	:  110000원
결제금액	:  100000원
포인트	:  10000 P
결제일시	:  2021/08/03 21:50:12
할부		:  6개월
할부유형	:  무
문의		:  02-1234-5678
----------------------------------------
저희 사이트를 이용해 주셔서 감사합니다.

- len() 함수 : 문자 길이 반환 (문자 수세기, 공백문자 포함)

userMsg = input('메시지 입력 : ')
print('메시지 문자열 길이 : {}'.format(len(userMsg)))
=======================================================
메시지 입력 : Hello python~
메시지 문자열 길이 : 13

- find() : 특정 문자열의 위치를 찾아 반환함.

객체지향이 몇번째?

article = '파이썬[2](영어: Python)은 1991년[3] 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬[4]이 발표한 고급 프로그래밍 언어로, 인터프리터를 사용하는 객체지향 언어이자 플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다. '

strIdx = article.find('객체지향')
print('객체지향 문자열 위치 : {}'.format(strIdx))
------------------------------------------------
객체지향 문자열 위치 : 89

삼각형, 사각형 구하기

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

triangle = width * height / 2
square = width * height

print('-'*10,'Result','-'*10)
print('삼각형 넓이 : %f' % triangle)
print('사각형 넓이 :  %f' % square)
print('삼각형 넓이 : %.2f' % triangle)
print('사각형 넓이 : %.2f' % square)
print('-'*30)
===========================================
가로 길이 입력 : 7
세로 길이 입력 : 5
---------- Result ----------
삼각형 넓이 : 17.500000
사각형 넓이 :  35.000000
삼각형 넓이 : 17.50
사각형 넓이 : 35.00
------------------------------
pi = 3.14
radius = float(input('반지름(cm) 입력 : '))
circleArea = pi * radius * radius
circleLenth = 2 * pi * radius

print('원의 넓이: %d' % circleArea)
print('원의 둘레 길이: %d' % circleLenth)
print('원의 넓이: %.1f' % circleArea)
print('원의 둘레 길이: %.1f' % circleLenth)
print('원의 넓이: %.3f' % circleArea)
print('원의 둘레 길이: %.3f' % circleLenth)
==============================================
반지름(cm) 입력 : 3
원의 넓이	: 28
원의 둘레 길이: 18
원의 넓이	: 28.3
원의 둘레 길이: 18.8
원의 넓이	: 28.260
원의 둘레 길이: 18.840

str[0] : str 에 저장된 문자열에서 첫 번째 문자를 반환함

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

print('-'*30)
print('이름 : ', name)
print('메일 : ', mail)
print('아이디 : ', id)
pwStar = '*' * len(pw)
print('비밀번호 : ', pwStar)
privateNumberStar = privateNumber2[0] + ('*' * 6)
print('주민번호 : ', privateNumber1, '-', privateNumberStar)
print('주소 : ', address)
print('-'*30)
-----------------------------------------------------------------
------------------------------
이름 :  hong gil dong
메일 :  hong@gmail.com
아이디 :  hongID
비밀번호 :  ********
주민번호 :  840921 - 2******
주소 :  korea seoul
------------------------------

BMI 구하기

isdigit () : 숫자인지 확인 숫자이면 True, 아니면 False)

weight = (input('체중 입력(g) : '))
height = input('신장 입력(cm) : ')

if weight.isdigit():
    weight = int(weight) / 10

if height.isdigit():
    height = int(height) / 100

print('체중 : {}kg'.format(weight))
print('신장 : {}cm'.format(height))

bmi = weight / (height * height)
print('BMI : %.f' % bmi)
--------------------------------
체중 입력(g) : 85
신장 입력(cm) : 187
체중 : 8.5kg
신장 : 1.87cm
BMI : 2
midTermExam = input('중간 고사 점수 : ')
finalExam = input('기말 고사 점수 : ')



if midTermExam.isdigit() and finalExam.isdigit():
    midTermExam = int(midTermExam)
    finalExam = int(finalExam)

    total = midTermExam + finalExam
    avg = total / 2

    print('총점 : %d, 평군 : %.1f'% (total, avg))

else:
    print('잘못 입력했습니다.')
========================================================
중간 고사 점수 : 85
기말 고사 점수 : 78
총점 : 163, 평군 : 81.5

키오스크 입력

userSelecLanguage = int(input('언어 선택(Choose your language) : 1.한국어\t 2.English\t 입력 : '))

if userSelecLanguage == 1:
    print('1.샌드위치\t 2.햄버거\t 3.쥬스\t 4.커피\t 5.아이스크림\t')
elif userSelecLanguage == 2:
    print('1.Sandwich\t 2.Hamburger\t 3.Juice\t 4.Coffee\t 5.Icecream\t')
else:
    print('잘못 입력되었습니다.')
-----------------------------------------------------------------------------
1.
언어 선택(Choose your language) : 1.한국어	 2.English	 입력 : 1
1.샌드위치	 2.햄버거	 3.쥬스	 4.커피	 5.아이스크림	
------------------------------------------------------------------------
2.
언어 선택(Choose your language) : 1.한국어	 2.English	 입력 : 2
1.Sandwich	 2.Hamburger	 3.Juice	 4.Coffee	 5.Icecream	
---------------------------------------------------------------------
3.
언어 선택(Choose your language) : 1.한국어	 2.English	 입력 : 3
잘못 입력되었습니다.

100살이 되는 해의 연도 구하기

import datetime  #날짜와 시간정보를 쓸수있는 모듈

today = datetime.datetime.today()
myAge = input('나이 입력 : ')
if myAge.isdigit():

    afterAge = 100 - int(myAge)
    myHundred = today.year + afterAge

    print('{}년 ({}년후)에 100살!!'.format(myHundred, afterAge))

else:
    print('잘못 입력했습니다.')
===================================================================
나이 입력 : 28
2095년 (72년후)에 100살!!

연습문제(연산자)

거스름돈 구하기

money50000 = 50000; money10000 = 10000; money5000 = 5000; money1000 = 1000
money500 = 500; money100 = 100; money50 = 50; money10 = 10

moneyCnt50000 = 0; moneyCnt10000 = 0; moneyCnt5000 = 0; moneyCnt1000 = 0
moneyCnt500 = 0; moneyCnt100 = 0; moneyCnt50 = 0; moneyCnt10 = 10

productPrice = int(input('상품 가격 입력: '))
paytPrice = int(input('지불 금액 입력: '))


if paytPrice > productPrice:
    changeMoney = paytPrice - productPrice
    changeMoney = (changeMoney // 10) * 10
    print('거스름 돈: {} (원 단위 절사)'.format(changeMoney))

if changeMoney > money50000:
    moneyCnt50000 = changeMoney // money50000
    changeMoney %= money50000

if changeMoney > money10000:
    moneyCnt10000 = changeMoney // money10000
    changeMoney %= money10000

if changeMoney > money5000:
    moneyCnt5000 = changeMoney // money5000
    changeMoney %= money5000

if changeMoney > money1000:
    moneyCnt1000 = changeMoney // money1000
    changeMoney %= money1000

if changeMoney > money500:
    moneyCnt500 = changeMoney // money500
    changeMoney %= money500

if changeMoney > money100:
    moneyCnt100 = changeMoney // money100
    changeMoney %= money100

if changeMoney > money50:
    moneyCnt50 = changeMoney // money50
    changeMoney %= money50

if changeMoney > money10:
    moneyCnt10 = changeMoney // money10
    changeMoney %= money10

print('-'*30)
print('50,000 {}장'.format(moneyCnt50000))
print('10,000 {}장'.format(moneyCnt10000))
print('5,000 {}장'.format(moneyCnt5000))
print('1,000 {}장'.format(moneyCnt1000))
print('500 {}장'.format(moneyCnt500))
print('100 {}장'.format(moneyCnt100))
print('50 {}장'.format(moneyCnt50))
print('10 {}장'.format(moneyCnt10))
print('-'*30)
==============================================
상품 가격 입력: 35862
지불 금액 입력: 100000
거스름 돈: 64130 (원 단위 절사)
------------------------------
50,000 1장
10,000 1장
5,000 0장
1,000 4장
500 0장
100 1장
50 0장
10 3장

과목의 최고, 최저점 구하기

kor =int(input('국어 점수 입력: '))
eng =int(input('양어 점수 입력: '))
mat =int(input('수학 점수 입력: '))

total = kor + eng + mat
avg = total / 3

maxScore = kor
maxSubject = '국어'
if eng > maxScore:
    maxScore = eng
    maxSubject = '영어'

if mat > maxScore:
    maxScore = mat
    maxSubject = '수학'

minScore = kor
minSubject = '국어'
if eng < minScore:
    minScore = eng
    minSubject = '영어'

if mat < minScore:
    minScore = mat
    minSubject = '수학'

difScore = maxScore - minScore

print('총점 : {}'.format(total))
print('평군 : %.2f' % avg)
print('-'*30)
print('최고 점수 과목(점수): {}({})'.format(maxSubject,maxScore))
print('최저 점수 과목(점수): {}({})'.format(minSubject,minScore))
print('최고, 최저 점수 차이: {}'.format(difScore))
print('-'*30)
===================================================================
국어 점수 입력: 84
양어 점수 입력: 90
수학 점수 입력: 79
총점 : 253
평군 : 84.33
------------------------------
최고 점수 과목(점수): 영어(90)
최저 점수 과목(점수): 수학(79)
최고, 최저 점수 차이: 11
------------------------------

이 글은 제로베이스 데이터 분석 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

0개의 댓글