파이썬 공부중/파이썬 기초

파이썬 기초 문풀 01

책다니엘 2024. 2. 10. 00:20
파이썬 기초를 다시 공부하면서 간단하게 푼 문제들을 총정리하여 정리해 둔다.

 

import datetime

# 다음은 온라인에서 상품 구매 후 메일로 발송되는 '주문확인서'이다.
# 템플릿을 만들고, 변경되는 정보만 입력하면 '주문확인서'가 완성될 수 있도록 프로그램을 만들어 보자.

name = '홍길동'
date = datetime.datetime.now()

print('{}\t고객님 안녕하세요.\n{}\t고객님 주문이 완료되었습니다.\n다음은 주문건에 대한 상세 내역입니다.'.format(name, name))
print('------------------------------')

print('결제일시 : {}'.format(date.strftime("%Y/%m/%d %H:%M:%S")))

# 출력 결과:
# 홍길동	고객님 안녕하세요.
# 홍길동	고객님 주문이 완료되었습니다.
# 다음은 주문건에 대한 상세 내역입니다.
# ------------------------------
# 결제일시 : 2024/02/04 07:12:32

 

# len()함수 사용 문제

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

str = input('메세지 입력: ')
print(f'메세지\t: {str}\n메세지 문자열 길이\t:{len(str)}')

# 출력 결과:
# 메세지	: 안녕하세요
# 메세지 문자열 길이	:5



# find()함수 사용 문제
# 다음 문장에서 '객체지향' 문자열을 찾아 보자.

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

# 출력 결과:
# '객체지향'의 위치는: 81



# 데이터와 변수 사용법

# 사용자가 입력한 데이터를 모두 실수로 변경 후 삼각형, 사각형의 넓이를 출력해 보자.

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

print('-' * 10, 'Result', '-' * 10)
print('삼각형 넓이 : %.4f' % (width * height / 2))
print('사각형 넓이 : %.4f' % (width * height))
print('삼각형 넓이 : %.2f' % (width * height / 2))
print('사각형 넓이 : %.2f' % (width * height))

# 출력 결과:
# 가로 길이 입력: 20
# 세로 길이 입력: 15
# ---------- Result ----------
# 삼각형 넓이 : 150.0000
# 사각형 넓이 : 300.0000
# 삼각형 넓이 : 150.00
# 사각형 넓이 : 300.00

 

# 원의 반지름을 받아서 원의 둘레와 넓이를 출력하는 프로그램을 만들어 보자.

r = float(input('반지름 입력: '))
pi = 3.14
area = r**2*pi
round = r*2*pi

print('원의 넓이\t: %.0fcm' % area)
print('원의 둘레\t: %.0fcm' % round)
print('원의 넓이\t: %.1fcm' % area)
print('원의 둘레\t: %.1fcm' % round)
print('원의 넓이\t: %.3fcm' % area)
print('원의 둘레\t: %.3fcm' % round)

# 출력 결과:
# 반지름 입력: 3
# 원의 넓이	: 28cm
# 원의 둘레	: 19cm
# 원의 넓이	: 28.3cm
# 원의 둘레	: 18.8cm
# 원의 넓이	: 28.260cm
# 원의 둘레	: 18.840cm




# 사용자로부터 입력받은 개인정보를 포맷 문자열을 이용해서 다음과 같이 출력해 보자.
# 단 비밀번호 전체와 주민번호 뒷자리는 별표로 표시하자

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

print('-'*40)
print(f'이름\t: {name}\n메일\t: {mail}\n아이디\t: {id}\n비밀번호\t: {'*'*len(pwd)}\n주민번호\t: {regiNumF} - {regiNumB[0]}{'*'*(int(len(regiNumB))-1)}\n주소\t: {address}')
print('-'*40)


# 출력 결과:
# 이름 입력: hong gil dong
# 메일 입력: hong@gmail.com
# 아이디 입력: hongID
# 비밀번호 입력: 12345678
# 주민번호 앞자리 입력: 840912
# 주민번호 뒷자리 입력: 1203232
# 주소 입력: seoul korea
# ----------------------------------------
# 이름	: hong gil dong
# 메일	: hong@gmail.com
# 아이디	: hongID
# 비밀번호	: ********
# 주민번호	: 840912 - 1******
# 주소	: seoul korea
# ----------------------------------------

 

# 체중(g)과 신장(cm)를 입력하면 BMI지수가 출력되는 프로그램을 만들어 보자.

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

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

print('체중: %.1fkg' % float(weight/10))
print('신장: %.2fm' % float(height/100))
print('BMI: %.2f' % float((weight/10)/((height/100)*(height/100))))

# 출력 결과:
# 체중 입력(g): 833
# 신장 입력(cm): 182
# 체중: 83.3kg
# 신장: 1.82m
# BMI: 25.15



# 다음 코드에서 num1과 num2의 위치를 바꾸고 출력해보자.

num1 = 10
num2 = 20
print('num1: {}, num2: {}'.format(num1, num2))
print('num1: {}, num2: {}'.format(num2, num1))

# 출력 결과:
# num1: 10, num2: 20
# num1: 20, num2: 10



# 중간, 기말 점수를 입력하면 총점과 평균이 출력되는 프로그램을 만들어보자.

midScore = input('중간고사 점수: ')
finScore = input('기말고사 점수: ')

if midScore.isdigit():
    midScore = int(midScore)
else:
    print('잘못 입력했습니다.')
if finScore.isdigit():
    finScore = int(finScore)
else:
    print('잘못 입력했습니다.')

if type(midScore) == int and type(finScore) == int:
    print(f'총점: {midScore + finScore}')
    print(f'평균: {(midScore + finScore) / 2}')

# 출력 결과
# 중간고사 점수: 97
# 기말고사 점수: 86
# 총점: 183
# 평균: 91.5
# 키오스크에서 사용하는 언어 선택 프로그램을 만들어 보자.

prefLan = input('언어 선택(Choose your language): 1. 한국어\t\t2. English')
if prefLan == '1':
    print('1.샌드위치\t\t2.햄버거\t\t3.쥬스\t\t4.커피\t\t5.아이스크림')
elif prefLan == '2':
    print('1.Sandwich\t\t2.Hamburger\t\t3.Juice\t\t4.Coffee\t\t5.Ice Cream')

# 출력 결과:
# 언어 선택(Choose your language): 1. 한국어		2. English1
# 1.샌드위치		2.햄버거		3.쥬스		4.커피		5.아이스크림


# 나의 나이가 100살 되는 해의 연도를 구하는 프로그램을 만들어 보자.

myAge = input('나이 입력: ')
if myAge.isdigit():
    print(f'{100-int(myAge)}년 후에 100살!!')
else: print('잘못 입력했습니다.')

# 출력 결과:
# 나이 입력: 35
# 65년 후에 100살!!

 

# 상품 가격과 지불 금액을 입력하면 거스름돈을 계산하는 프로그램을 만들어보자.
# 단, 거스름돈은 지폐와 동전의 개수를 최소로 하고, 1원단위 절사한다.

price = int(input('상품 가격 입력: '))
paidMoney = int(input('지불 금액: '))
change = int((paidMoney - price) / 10) * 10

print(f'거스름 돈: {change}(원단위 절사)')
print('-' * 25)
i = 0
while 50000 * i <= change:
    i += 1
i -= 1
print(f'50,000 {i}장')
change -= 50000 * i
i = 0

while 10000 * i <= change:
    i += 1
i -= 1
print(f'10,000 {i}장')
change -= 10000 * i
i = 0

while 5000 * i <= change:
    i += 1
i -= 1
print(f'5,000 {i}장')
change -= 5000 * i
i = 0

while 1000 * i <= change:
    i += 1
i -= 1
print(f'1,000 {i}장')
change -= 1000 * i
i = 0

while 500 * i <= change:
    i += 1
i -= 1
print(f'500 {i}개')
change -= 500 * i
i = 0

while 100 * i <= change:
    i += 1
i -= 1
print(f'100 {i}개')
change -= 100 * i
i = 0

while 10 * i <= change:
    i += 1
i -= 1
print(f'10 {i}개')
change -= 10 * i
i = 0
print('-' * 25)


# 출력 결과
# 상품 가격 입력: 38532
# 지불 금액: 100000
# 거스름 돈: 61460(원단위 절사)
# -------------------------
# 50,000 1장
# 10,000 1장
# 5,000 0장
# 1,000 1장
# 500 0개
# 100 4개
# 10 6개
# -------------------------

 

# 국어, 영어, 수학 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수 과목,
# 그리고 최고 점수와 최저 점수의 차이를 각각 출력해보자.

lanScore = {'score': int(input('국어 점수 입력: ')), 'name': '국어'}
engScore = {'score': int(input('영어 점수 입력: ')), 'name': '영어'}
matScore = {'score': int(input('수학 점수 입력: ')), 'name': '수학'}

arr = [lanScore['score'], engScore['score'], matScore['score']]
maxSub = {}
minSub = {}

if max(arr) == lanScore['score']:
    maxSub = lanScore
elif max(arr) == engScore['score']:
    maxSub = engScore
elif max(arr) == matScore['score']:
    maxSub = matScore

if min(arr) == lanScore['score']:
    minSub = lanScore
elif min(arr) == engScore['score']:
    minSub = engScore
elif min(arr) == matScore['score']:
    minSub = matScore

print(f'총점: {lanScore['score'] + engScore['score'] + matScore['score']}')
print('평균: %.2f' % float((lanScore['score'] + engScore['score'] + matScore['score']) / 3))
print('-' * 30)
print(f'최고 점수 과목(점수): {maxSub['name']}({maxSub['score']})')
print(f'최저 점수 과목(점수): {minSub['name']}({minSub['score']})')
print(f'최고, 최저 점수 차이: {maxSub['score'] - minSub['score']}')
print('-' * 30)


# 출력 결과
# 국어 점수 입력: 95
# 영어 점수 입력: 86
# 수학 점수 입력: 89
# 총점: 270
# 평균: 90.00
# ------------------------------
# 최고 점수 과목(점수): 국어(95)
# 최저 점수 과목(점수): 영어(86)
# 최고, 최저 점수 차이: 9
# ------------------------------

 

# 시, 분, 초를 입력하면 초로 환산하는 프로그램을 만들어 보자.

hou = int(input('시간 입력: '))
min = int(input('분 입력: '))
sec = int(input('초 입력: '))

totalSec = (hou * (60 ** 2)) + (min * 60) + sec
print('{:,}초'.format(totalSec))

# 출력 결과:
# 시간 입력: 2
# 분 입력: 34
# 초 입력: 56
# 9,296초



# 금액, 이율, 거치기간을 입력하면 복리계산하는 복리계산기 프로그램을 만들어보자.

mon = int(input('금액 입력: '))
interest = float(input('이율 입력: '))
period = int(input('기간 입력: '))

print('-' * 30)
print('이율: {}%'.format(interest))
print('원금: {:,}원'.format(mon))
print('5년 후 금액: {:,}원'.format(int(mon * (((100 + interest)/100) ** period))))
print('-' * 30)

# 출력 결과
# 금액 입력: 1500000
# 이율 입력: 4.3
# 기간 입력: 5
# ------------------------------
# 이율: 4.3%
# 원금: 1,500,000원
# 5년 후 금액: 1,851,453원
# ------------------------------
# 고도가 60m 올라갈 때마다 기온이 0.8도 내려간다고 할 때, 고도를 입력하면 기온이 출력되는 프로그램을 만들어보시오.
# 지면온도: 29도

baseTemp = 29
height = 60
tempPerHeight = 0.8

altitude = int(input('고도 입력: '))
temperature = baseTemp - ((altitude // 60) * tempPerHeight)

print('지면 온도 : 29도')
print('고도 {}m의 기온: {}'.format(altitude, temperature))

# 출력 결과
# 고도 입력: 720
# 지면 온도 : 29도
# 고도 720m의 기온: 19.4


# 197개의 빵과 152개의 우유를 17명의 학생에게 동일하게 나눠줄 때,
# 한 명의 학생이 갖게 되는 빵과 우유 개수를 구하고 남는 빵과 우유 개수를 출력하자.

print('학생 한 명이 갖게 되는 빵의 개수 : {}'.format(197 // 17))
print('학생 한 명이 갖게 되는 우유의 개수 : {}'.format(152 // 17))

print('남는 빵 개수 : {}'.format(197 - (17 * (197 // 17))))
print('남는 우유 개수 : {}'.format(152 - (17 * (152 // 17))))

# 출력 결과
# 학생 한 명이 갖게 되는 빵의 개수 : 11
# 학생 한 명이 갖게 되는 우유의 개수 : 8
# 남는 빵 개수 : 10
# 남는 우유 개수 : 16
# 다음 내용을 참고해서 백신 접종 대상자를 구분하기 위한 프로그램을 만들어 보자
# 의사코드: 19세 이하 또는 65세 이상이면 출생 연도 끝자리에 따른 접종
# 그렇지 않으면 하반기 일정 확인

age = int(input('나의 입력: '))

if age<=19 or age>=65:
    year = int(input('출생 연도 끝자리 입력: '))
    month = ''
    if year == 1 or year == 16:
        month = '월'
    elif year == 2 or year == 17:
        month = '화'
    elif year == 3 or year == 18:
        month = '수'
    elif year == 4 or year == 19:
        month = '목'
    elif year == 5 or year == 10:
        month = '금'
    print('{}요일 접종 가능!!!'.format(month))

else:
    print('하반기 일정 확인하세요.')

# 출력 결과
# 나의 입력: 69
# 출생 연도 끝자리 입력: 4
# 목요일 접종 가능!!!

# 나의 입력: 20
# 하반기 일정 확인하세요.



# 길이를 입력하면 인치로 환산하는 프로그램을 만들어보자.
# 1mm = 0.039inch

length = float(input('길이(mm) 입력: '))
convertedInch = 0.039 * length

print('{}mm -> {}inch'.format(length, convertedInch))

# 출력 결과
# 52.0mm -> 2.028inch
# 교통 과속 위반 프로그램을 만들어보자.
# 시속 50km 이하 -> 안전속도 준수!!
# 시속 50km 초과 -> 안전속도 위반!! 과태료 50,000원 부과 대상!!

speed = int(input('속도 입력: '))
if speed <= 50:
    print('안전속도 준수!!')
else:
    print('안전속도 위반!! 과태료 50,000원 부과 대상!!')

# 출력 결과
# 속도 입력: 67
# 안전속도 위반!! 과태료 50,000원 부과 대상!!


message = input('메시지 입력: ')
print('메세지 발송!!')
if len(message)<=50:
    print('SMS 발송(50원 부과)')
else: print('MMS 발송(100원 부과)')
# 문자 메세지 길이에 따라 문자 요금이 결정되는 프로그램을 만들어보자.
# 문자길이 50 이하 -> SMS발송(50원 부과)
# 문자길이 50 초과 -> MMS발송(100원 부과)

# 출력 결과
# 메시지 입력: 안녕하세요 저는 책다니엘입니다
# 메세지 발송!!
# SMS 발송(50원 부과)

 

'파이썬 공부중 > 파이썬 기초' 카테고리의 다른 글

파이썬 기초 문풀 02  (1) 2024.02.10
파이썬 기초 정리 03  (2) 2024.02.04
파이썬 기초 정리 02  (0) 2024.02.04
파이썬 기초 정리 01  (1) 2024.02.03
javascript와 python의 for문의 차이:  (0) 2024.02.03