def add(a,b):
return a + b
def sub(a,b):
return a - b
def mul(a,b):
return a * b
def div(a,b):
return a / b
def mod(a,b):
return a % b
def flo(a,b):
return a // b
def exp(a,b):
return a ** b
while True:
inputNum = int(input('1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈,'
' 5.나머지, 6.몫, 7.제곱승, 8. 종료' ))
if inputNum == 8 :
print('Bye~')
break
a = float(input('첫번째 숫자 입력: '))
b = float(input('두번째 숫자 입력: '))
if inputNum == 1 :
print('{} + {} = {}'.format(a, b, add(a,b)))
elif inputNum == 2 :
print('{} - {} = {}'.format(a, b, sub(a,b)))
elif inputNum == 3 :
print('{} * {} = {}'.format(a, b, mul(a,b)))
elif inputNum == 4 :
print('{} / {} = {}'.format(a, b, div(a,b)))
elif inputNum == 5 :
print('{} % {} = {}'.format(a, b, mod(a,b)))
elif inputNum == 6 :
print('{} // {} = {}'.format(a, b, flo(a,b)))
elif inputNum == 7 :
print('{} ** {} = {}'.format(a, b, exp(a,b)))
else:
print('다시 입력하시오')
#출력값
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8. 종료 7
첫번째 숫자 입력: 5
두번째 숫자 입력: 3.1
5.0 ** 3.1 = 146.8273678860024
s = float(input('속도(km/h) 입력: '))
h = float(input('시간(h) 입력: '))
m = float(input('시간(m) 입력: '))
def distance(s, h, m):
result = s * (h + (m / 60))
return result
print('{}(km/h) 속도로 {}(h)시간 {}(m)분 동안 이동한거리 : {}'.format(s, h, m, distance(s,h,m)))
#출력값
속도(km/h) 입력: 120
시간(h) 입력: 2
시간(m) 입력: 45
120.0(km/h) 속도로 2.0(h)시간 45.0(m)분 동안 이동한거리 : 330.0
def add(a, b, c):
return a + b + c
def mul(a, b):
return a * b
childPrice = 18000
infantPrice = 25000
adultPrice = 50000
sale = 50
child = int(input('유아 입력: '))
childSale = int(input('할인대상 유아 입력: '))
infant = int(input('소아 입력: '))
infantSale = int(input('할인대상 소아 입력: '))
adult = int(input('성인 입력: '))
adultSale = int(input('할인대상 성인 입력: '))
print('유아 {}명 요금: {}'.format(child, mul(child,mul(child,childPrice))))
print('유아 할인 대상 {}명 요금: {}'.format(childSale,mul(childSale,childPrice/sale)))
print('소아 {}명 요금: {}'.format(infant, mul(infant,mul(infant,infantPrice))))
print('소아 할인 대상 {}명 요금: {}'.format(infantSale,mul(infantSale,childPrice/sale)))
print('성인 {}명 요금: {}'.format(adult, mul(adult,mul(adult,adultPrice))))
print('성인 할인 대상 {}명 요금: {}'.format(adultSale,mul(adultSale,adultPrice/sale)))
print('Total: {}명'.format(add(child, infant, adult)))
totalPrice = mul(child,childPrice)
print('TotalPrice : {}'.format((mul(child,mul(child,childPrice))-mul(childSale,childPrice/sale))
+(mul(infant,mul(infant,infantPrice))-mul(adult,mul(adult,adultPrice))
+(mul(adult,mul(adult,adultPrice))
-mul(adultSale,adultPrice/sale)))
단순히 연산함수로 하다가 복잡하게 해서 시간을 다 잡아먹었다.
함수를 만드는 의미를 생각도 못하고 생각없이 만든 것 같다.
다음부턴 함수의 존재 의미를 생각하고 더 간단하고 재사용 가능하게끔 만들어야겠다.
childPrice = 18000
infantPrice = 25000
adultPrice = 50000
saleNum = 50
def airpalneReceipt(c1, c2, i1, i2, a1, a2):
cp = c1 * childPrice
cpDc = int(c2 * childPrice * 0.5)
print('유아 {}명 요금: {}원 '.format(c1, cp))
print('유아 할인대상 {}명 요금: {}원'.format(c2, cpDc))
ip = i1 * infantPrice
ipDc = int(i2 * infantPrice * 0.5)
print('소아 {}명 요금: {}원 '.format(i1, ip))
print('소아 할인대상 {}명 요금: {}원'.format(i2, ipDc))
ap = a1 * adultPrice
apDc = int(a2 * adultPrice * 0.5)
print('성인 {}명 요금: {}원 '.format(a1, ap))
print('성인 할인대상 {}명 요금: {}원'.format(a2, apDc))
print('Total: {}명'.format(c1 + c2 + i1 + i2 + a1 + a2))
print('TotalPrice: {}원'.format(cp + cpDc + ip + ipDc + ap + apDc))
childCnt = int(input('유아 입력: '))
specialChildCnt = int(input('할인대상 유아 입력: '))
infantCnt = int(input('소아 입력: '))
specialInfantCnt = int(input('할인대상 소아 입력: '))
adultCnt = int(input('성인 입력: '))
specialAdultCnt = int(input('할인대상 성인 입력: '))
airpalneReceipt(childCnt, specialChildCnt, infantCnt, specialInfantCnt,
adultCnt, specialAdultCnt)
#출력값
유아 입력: 1
할인대상 유아 입력: 1
소아 입력: 2
할인대상 소아 입력: 1
성인 입력: 2
할인대상 성인 입력: 0
유아 1명 요금: 18000원
유아 할인대상 1명 요금: 9000원
소아 2명 요금: 50000원
소아 할인대상 1명 요금: 12500원
성인 2명 요금: 100000원
성인 할인대상 0명 요금: 0원
Total: 7명
TotalPrice: 189500원
def formated(n):
return format(n,',')
def basic_RateCalculator(m,y,r): #단리 계산기
rateMoney = 0
totalMoney = 0
for i in range(y):
rateMoney += m * (r * 0.01)
totalMoney = m + rateMoney
return totalMoney
def month_RateCalculator(m, y, r): #월복리 계산기
y = y * 12
month_rateMoney = (r / 12) * 0.01
totalMoney = m
for i in range(y):
totalMoney += totalMoney * month_rateMoney
return totalMoney
deposit = int(input(f'예치금(원):'))
year = int(input(f'기간(년):'))
rate = float(input(f'연 이율(%):'))
print(f'[단리 계산기]')
print('='*50)
print(f'예치금: {deposit}원 ')
print(f'예치기간 : {year}년')
print(f'연 이율: {rate}%')
print('-'*50)
print(f'{year}년 후 총 수령액:{formated(int(basic_RateCalculator(deposit,year,rate)))}원')
print('=' * 50)
print(f'[월복리 계산기]')
print('=' * 50)
print(f'예치금: {deposit}원 ')
print(f'예치기간 : {year}년')
print(f'연 이율: {rate}%')
print('-' * 50)
print(f'3년 후 총 수령액:{formated(int(month_RateCalculator(deposit,year,rate)))}원')
print('=' * 50)
#출력값
예치금(원): 10000000
기간(년): 3
연 이율(%): 3
[단리 계산기]
==================================================
예치금: 10000000원
예치기간 : 3년
연 이율: 3.0%
--------------------------------------------------
3년 후 총 수령액:10,900,000원
==================================================
[월복리 계산기]
==================================================
예치금: 10000000원
예치기간 : 3년
연 이율: 3.0%
--------------------------------------------------
3년 후 총 수령액:10,940,514원
==================================================
def sequence(n1, d, n):
valueN = 0; sumN = 0;
i = 1
while i <= n:
if i == 1:
valueN = n1
sumN += valueN
print(f'{i}번째 항의 값: {valueN}')
print(f'{i}번째 항까지의 합: {sumN}')
i += 1
continue
valueN += d
sumN += valueN
print(f'{i}번째 항의 값: {valueN}')
print(f'{i}번째 항까지의 합: {sumN}')
i += 1
inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))
sequence(inputN1, inputD, inputN)
#출력겂
a1 입력: 2
공차 입력: 3
n 입력: 7
1번째 항의 값: 2
1번째 항까지의 합: 2
2번째 항의 값: 5
2번째 항까지의 합: 7
3번째 항의 값: 8
3번째 항까지의 합: 15
4번째 항의 값: 11
4번째 항까지의 합: 26
5번째 항의 값: 14
5번째 항까지의 합: 40
6번째 항의 값: 17
6번째 항까지의 합: 57
7번째 항의 값: 20
7번째 항까지의 합: 77
def sequence(n1, r, n):
valueN = 0; sumN = 0
i = 1
while i <= n:
if i == 1:
valueN = n1
sumN = valueN
print(f'{i}번째 항의 값: {valueN}')
print(f'{i}번째 항까지의 값: {sumN}')
i += 1
continue
valueN *= r
sumN += valueN
print(f'{i}번째 항의 값: {valueN}')
print(f'{i}번째 항까지의 값: {sumN}')
i += 1
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))
과목별 점수를 입력하면 합격 여부를 출력하는 모듈을 만들어보자.
(평균 60이상 합격, 과락 40으로 한다.)
모듈 만들기(모듈명: test)
def examResult(s1,s2,s3,s4,s5):
avgScoreLimit = 60
limitScore = 40
def totalScore():
total = s1+s2+s3+s4+s5
print(f'총점: {total}')
return total
def avgScore():
avg = totalScore() / 5
print(f'평균: {avg}')
return avg
def sub_PassOrFail():
print(f'{s1} : Pass' if s1 >= limitScore else (f'{s1} : Fail'))
print(f'{s2} : Pass' if s2 >= limitScore else (f'{s2} : Fail'))
print(f'{s3} : Pass' if s3 >= limitScore else (f'{s3} : Fail'))
print(f'{s4} : Pass' if s4 >= limitScore else (f'{s4} : Fail'))
print(f'{s5} : Pass' if s5 >= limitScore else (f'{s5} : Fail'))
def final_PassOrFail():
if avgScore() >= avgScoreLimit:
if s1>=40 and s2>=40 and s3>=40 and s4>=40 and s5>=40:
print('Final Pass!')
else:
print('Final Fail!')
else:
print('Final Fail')
sub_PassOrFail()
final_PassOrFail()
모듈을 만들고 내용을 입력하면 함수부분에서 다뤘던것처럼 동일하게 함수부를 작성하고 맨아래 실행까지 완벽하게 작성한다.
import test as t
if __name__ == '__main__':
sub1 = int(input('과목1 점수 입력:'))
sub2 = int(input('과목2 점수 입력:'))
sub3 = int(input('과목3 점수 입력:'))
sub4 = int(input('과목4 점수 입력:'))
sub5 = int(input('과목5 점수 입력:'))
t.examResult(sub1,sub2,sub3,sub4,sub5)
#실행결과
과목1 점수 입력:100
과목2 점수 입력:100
과목3 점수 입력:80
과목4 점수 입력:90
과목5 점수 입력:70
100 : Pass
100 : Pass
80 : Pass
90 : Pass
70 : Pass
총점: 440
평균: 88.0
Final Pass!
def totalGoodsPrice(bags):
if len(bags) < 0: #장바구니에 담긴 상품이 하나도 없다면
print('구매상품이 없습니다') #구매 상품 없다고 출력
return #return 의 또다른 기능은 문장의 '종료' 기능
rate = 25 #최대 할인률은 25%
totalPrice = 0 #장바구니에 담긴 합계 가격을 우선 0 으로 기준 잡음
rates = {1:5,2:10,3:15,4:20}
if len(bags) in rates: #위 할인율 튜플에서 장바구니안 상품의 갯수가 있다면
rate = rates[len(bags)] # 할인율을 결정하자
for goods in bags: #장바구니안의 상품을 하나씩 꺼내어
totalPrice += goods * (1- rate * 0.01) #상품의 할인가를 구해 for문을 돌려 계속 더해주자.
return(rate, int(totalPrice)) #할인율과 상품합계가격을 반환함
import test as t
if __name__ == '__main__': #전역변수 실행
flag = True
bags = [] # 장바구니 비워두기
while flag:
selectNum = int(input('상품을 구매 하시겠어요? 1.구매 2.종료:'))
if selectNum == 1:
goodsPrice = int(input('상품 가격을 입력하세요:'))
bags.append(goodsPrice) # 입력한 상품 가격을 장바구니에 집어넣기
elif selectNum == 2:
result = t.totalGoodsPrice(bags)
flag = False
print(f'할인율:{result[0]}')
print(f'합계:{result[1]}')
로또 모듈을 만들고 다음과 같이 로또 결과가 출력될 수 있도록 프로그램을 만들어보자
모듈 만들기(모듈 이름은 test)
import random
userNums = []; randNums = []; collNums = []
bonusNum = 0
def setUserNums(ns):
global userNums
userNums = ns
def getUserNums():
return userNums
def setRandomNums():
global randNums
randNums = random.sample(range(1, 46),6)
def setBonusNum():
global bonusNum
while True:
bonusNum = random.randint(1,45)
if bonusNum not in randNums:
break
def getBonusNum():
return bonusNum
def lottoResult():
global userNums
global collNums
collNums = []
for i in userNums:
if i in randNums:
collNums.append(i)
if len(collNums) == 6:
print('1등 당첨!')
print(f'번호: {collNums}')
elif (len(collNums) == 5) and (bonusNum in userNums):
print('2등 당첨!')
print(f'번호: {collNums}, 보너스 번호: {bonusNum}')
elif len(collNums) == 4:
print('3등 당첨!')
print(f'번호: {collNums}, 보너스 번호: {bonusNum}')
elif len(collNums) == 3:
print('4등 당첨!')
print(f'번호: {collNums}, 보너스 번호: {bonusNum}')
else:
print('아쉽습니다. 다음 기회에~')
print(f'기계 번호: {randNums}')
print(f'보너스 번호: {bonusNum}')
print(f'선택 번호: {userNums}')
print(f'일치 번호: {collNums}')
def startLotto():
n1 = int(input('번호(1~45) 입력: '))
n2 = int(input('번호(1~45) 입력: '))
n3 = int(input('번호(1~45) 입력: '))
n4 = int(input('번호(1~45) 입력: '))
n5 = int(input('번호(1~45) 입력: '))
n6 = int(input('번호(1~45) 입력: '))
selectNums = [n1, n2, n3, n4, n5, n6]
setUserNums(selectNums)
setRandomNums()
setBonusNum()
lottoResult()
import test as lt
lt.startLotto()
#출력값
번호(1~45) 입력: 4
번호(1~45) 입력: 16
번호(1~45) 입력: 27
번호(1~45) 입력: 39
번호(1~45) 입력: 40
번호(1~45) 입력: 18
아쉽습니다. 다음 기회에~
기계 번호: [11, 1, 43, 10, 31, 12]
보너스 번호: 26
선택 번호: [4, 16, 27, 39, 40, 18]
일치 번호: []