
💻 keep going
몇몇 문제들은 이해를 못 해서 그냥 넘어가기도 했다.
def add(n1, n2) :
return n1 + n2
def sub(n1, n2) :
return n1 - n2
def mul(n1, n2) :
return n1 * n2
def div(n1, n2) :
return n1 / n2
def mod(n1, n2) :
return n1 % n2
def flo(n1, n2) :
return n1 // n2
def exp(n1, n2) :
return n1 ** n2
while True :
print("-" * 80)
selectNum = int(input("1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료"))
if selectNum < 1 or selectNum > 8 :
print("다시 입력하세요")
break
if selectNum == 8 :
print("Bye~")
break
num1 = float(input("첫 번째 숫자 입력 : "))
num2 = float(input("두 번째 숫자 입력 : "))
if selectNum == 1:
print(f"{num1} + {num2} : {add(num1, num2)}")
print("-" * 80)
elif selectNum == 2:
print(f"{num1} - {num2} : {sub(num1, num2)}")
print("-" * 80)
elif selectNum == 3:
print(f"{num1} * {num2} : {mul(num1, num2)}")
print("-" * 80)
elif selectNum == 4:
try :
print(f"{num1} / {num2} : {div(num1, num2)}")
except :
print("다시 입력해 주세요")
print("-" * 80)
elif selectNum == 5:
print(f"{num1} % {num2} : {mod(num1, num2)}")
print("-" * 80)
elif selectNum == 6:
print(f"{num1} // {num2} : {flo(num1, num2)}")
print("-" * 80)
elif selectNum == 7:
print(f"{num1} ** {num2} : {exp(num1, num2)}")
print("-" * 80)
else :
print("잘못 입력하셨습니다. 다시 입력하세요.")
--------------------------------------------------------------------------------
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료1
첫 번째 숫자 입력 : 30
두 번째 숫자 입력 : 50
30.0 + 50.0 : 80.0
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료2
첫 번째 숫자 입력 : 80
두 번째 숫자 입력 : 30
80.0 - 30.0 : 50.0
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료5
첫 번째 숫자 입력 : 5
두 번째 숫자 입력 : 3
5.0 % 3.0 : 2.0
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료8
Bye~
# 이동한거리 : 거리(km) = 속도(km/h) * 시간(h)
def getDistance(speed, hour, minute) :
distance = speed * (hour + minute / 60)
return distance
# 걸린 시간 : 시간 = 거리 / 속도
# 분 : 100:75 = 60:x --> x = 75 * 60 / 100
# 컴퓨터에서는 100:75로 연산하니까 바꿔줘야함
def getTime(speed, distance) :
time = distance / speed
h = int(time)
m = int((time - h) * 100 * 60 / 100)
return [h, m] # 값이 2개이기 때문에 리스트형(자로구조형)으로 묶어야함
print("-" * 50)
s = float(input("속도(km/h) 입력 : "))
h = float(input("시간(h) 입력 : "))
m = float(input("시간(m) 입력 : "))
d = getDistance(s, h, m)
print(f"{s}(km/h)속도로 {h}(h)시간 {m}(m)분 동안 이동한 거리 : {d}(km)")
print("-" * 50)
--------------------------------------------------
속도(km/h) 입력 : 90
시간(h) 입력 : 2
시간(m) 입력 : 45
90.0(km/h)속도로 2.0(h)시간 45.0(m)분 동안 이동한 거리 : 247.5(km)
--------------------------------------------------
childPrice = 18000
infanPrice = 25000
adultPrice = 50000
specialDc = 50
def formattedNumber(n): # 1000단위로 ,찍는 함수
return format(n, ",") # 여러번 쓰기 때문에 함수로 만들어줌
def printAirPlaneReceipt(c1, c2, i1, i2, a1, a2):
cp = c1 * childPrice
cp_dc = int(c2 * childPrice * 0.5)
print(f"유아 {c1}명 요금 : {formattedNumber(cp)}원") # 함수에서 format 함수를 호출 할때 -> format(cp, ',')
print(f"유아 할인 대상 {c2}명 요금 : {formattedNumber(cp_dc)}원")
ip = i1 * infanPrice
ip_dc = int(i2 * infanPrice * 0.5)
print(f"소아 {i1}명 요금 : {formattedNumber(ip)}원")
print(f"유아 할인 대상 {i2}명 요금 : {formattedNumber(ip_dc)}원")
ap = a1 * adultPrice
ap_dc = int(a2 * adultPrice * 0.5)
print(f"성인 {a1}명 요금 : {formattedNumber(ap)}원")
print(f"유아 할인 대상 {a2}명 요금 : {formattedNumber(ap_dc)}원")
print("=" * 50)
print(f"Total : {c1 + c2 + i1 + i2 + a1 + a2}명")
print(f"TotalPrice : {formattedNumber(cp + ip+ ap+ cp_dc + ip_dc + ap_dc)}원")
print("=" * 50)
childCnt = int(input("유아 입력 : "))
dcChildCnt = int(input("할인대상 유아 입력 : "))
infanCnt = int(input("소아 입력 : "))
dcInfanCnt = int(input("할인대상 소아 입력 : "))
adultCnt = int(input("성인 입력 : "))
dcAdultCnt = int(input("할인대상 성인 입력 : "))
print("=" * 50)
printAirPlaneReceipt(childCnt, dcChildCnt, infanCnt, dcInfanCnt,
adultCnt, dcAdultCnt)
유아 입력 : 1
할인대상 유아 입력 : 1
소아 입력 : 2
할인대상 소아 입력 : 1
성인 입력 : 2
할인대상 성인 입력 : 0
==================================================
유아 1명 요금 : 18,000원
유아 할인 대상 1명 요금 : 9,000원
소아 2명 요금 : 50,000원
유아 할인 대상 1명 요금 : 12,500원
성인 2명 요금 : 100,000원
유아 할인 대상 0명 요금 : 0원
==================================================
Total : 7명
TotalPrice : 189,500원
==================================================
def formatedNumber(n): # 1000단위씩 , 적용하는 함수
return format(n, ",") # format 쓰는거 까먹지 말자
def recursionFuntion(n):
if n == 1 : # 함수 끝남
return n
return n * recursionFuntion(n-1)
inputNumber = int(input("input number : "))
# print(format(recursionFuntion(inputNumber), ','))
print(formatedNumber(recursionFuntion(inputNumber)))
input number : 5
120
# 단리
def singRateCalculator(m, t, r):
totalMoney = 0
totalRateMoney = 0
for i in range(t): # t(기간 : 년)을 받음
totalRateMoney += m * (r * 0.01)
totalMoney = m + totalRateMoney # m : 원금
return int(totalMoney) # 0.01 때문에 소숫점이 나올 수 있어서 in
# 월복리
def multiRateCalculator(m, t, r):
t = 12 * t # 월
rpm = (r / 12) * 0.01 # 월금리
totalMoney = m
for i in range(t):
totalMoney += totalMoney * rpm # totalMoney = totalMoney + (totalMoney * rpm)
return int(totalMoney)
money = int(input("예치금(원) : "))
term = int(input("기간(년) : "))
rate = int(input("연 이율(%) : "))
print()
print("[단리 계산기]")
print("=" * 30)
print(f"예치금\t : {formatedNumber(money)}원")
print(f"예치기간\t : {term}년")
print(f"연 이율\t : {rate}%")
print("-" * 30)
amount = formatedNumber(singRateCalculator(money, term, rate))
print(f"{term}년 후 총 수령액 : {amount}원")
print("=" * 30)
print()
print("[월복리 계산기]")
print("=" * 30)
print(f"예치금\t : {formatedNumber(money)}원")
print(f"예치기간\t : {term}년")
print(f"연 이율\t : {rate}%")
print("-" * 30)
amount = formatedNumber(multiRateCalculator(money, term, rate))
print(f"{term}년 후 총 수령액 : {amount}원")
print("=" * 30)
예치금(원) : 10000000
기간(년) : 3
연 이율(%) : 3
[단리 계산기]
==============================
예치금 : 10,000,000원
예치기간 : 3년
연 이율 : 3%
------------------------------
3년 후 총 수령액 : 10,900,000원
==============================
[월복리 계산기]
==============================
예치금 : 10,000,000원
예치기간 : 3년
연 이율 : 3%
------------------------------
3년 후 총 수령액 : 10,940,514원
==============================
# 등차 수열 공식 : an = a1 + (n-1) * d
# 등차 수열 합 공식 : sn = n*(a1 + an) /2
# while 문 = 조건이 참일 경우 계속해서 반복
def sequenceCal(n1, d, n):
# 변수 초기화
valueN = 0 # N항의 값
sumN = 0 # N항까지의 값
i = 1 # while 문 안에서 반복횟수를 계산하는 변수로 초기 값을 1로 설정
# 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 입력 : "))
sequenceCal(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
# 등비 수열(일반항) 공식 : an = a1 * r^(n-1)
# 등비 수열(합) 공식 : sn = a1 * (1-r^n) / (1-r)
def sequenceCal(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 # i 가 1이 아니라면
sumN += valueN
print(f"{i}번째 항의값 : {valueN}")
print(f"{i}번째 항까지의값 : {sumN}")
i += 1
inputN1 = int(input("a1 입력 : "))
inputR = int(input("공비 입력 : "))
inputN = int(input("n 입력 : "))
sequenceCal(inputN1, inputR, inputN)
a1 입력 : 2
공비 입력 : 3
n 입력 : 5
1번째 항의값 : 2
1번째 항까지의값 : 2
2번째 항의값 : 6
2번째 항까지의값 : 8
3번째 항의값 : 18
3번째 항까지의값 : 26
4번째 항의값 : 54
4번째 항까지의값 : 80
5번째 항의값 : 162
5번째 항까지의값 : 242
def exampleResult(s1, s2, s3, s4, s5):
passAvgScore = 60; limitScore = 40
def getTotal():
totalScore = s1 + s2 + s3 + s4 + s5
print(f"총점 : {totalScore}")
return totalScore
def getAverage():
avg = getTotal() / 5
print(f"평균 : {avg}")
return avg
def printPassOrFail():
print(f"{s1} : 합격") if s1 >= limitScore else print(f"{s1} : 불합격")
print(f"{s2} : 합격") if s2 >= limitScore else print(f"{s2} : 불합격")
print(f"{s3} : 합격") if s3 >= limitScore else print(f"{s3} : 불합격")
print(f"{s4} : 합격") if s4 >= limitScore else print(f"{s4} : 불합격")
print(f"{s5} : 합격") if s5 >= limitScore else print(f"{s5} : 불합격")
def printFinalPassOrFail(): # printFinalPassOrFail() 함수가 반환하는 값이 없기 때문에, 이 함수를 호출할 때
# getAverage() 함수가 출력하는 총점 값과 평균 값이 함께 출력됩니다.
if getAverage() >= passAvgScore:
if s1 >= limitScore and s2 >= limitScore and s3 >= limitScore and s4 >= limitScore and s5 >= limitScore :
print("Final Pass!!")
else :
print("Final Fail!!")
getAverage() # 이 값을 빼는게 결과를 볼 때 더 깔끔할듯
printPassOrFail()
printFinalPassOrFail()
(평균 60점 이상 합격, 과락 40점으로 한다.)
import passOrFail as pf
if __name__ == "__main__" :
sub1 = int(input("과목1 점수 입력 : "))
sub2 = int(input("과목2 점수 입력 : "))
sub3 = int(input("과목3 점수 입력 : "))
sub4 = int(input("과목4 점수 입력 : "))
sub5 = int(input("과목5 점수 입력 : "))
pf.exampleResult(sub1, sub2, sub3, sub4, sub5)
과목1 점수 입력 : 100
과목2 점수 입력 : 35
과목3 점수 입력 : 85
과목4 점수 입력 : 45
과목5 점수 입력 : 90
100 : 합격
35 : 불합격
85 : 합격
45 : 합격
90 : 합격
총점 : 355
평균 : 71.0
Final Fail!!
def calculatorTotalPrice(gs):
if len(gs) <= 0 : # 데이터가 잘 못 들어온 경우
print("구매 상품이 없습니다.")
return # 끝내기
rate = 25
totalPrice = 0
rates = {1:5, 2:10, 3:15, 4:20}
if len(gs) in rates:
rate = rates[len(gs)]
for g in gs:
totalPrice += g * (1 - rate * 0.01)
return [rate, int(totalPrice)]
def formattedNumber(n):
return format(n, ",")
import product as pd
if __name__ == "__main__":
flag = True #flag = False와 같은 코드로 flag 값을 변경하면 반복문이 종료
gs = []
while flag :
selectNumber = int(input("1.구매, 2.종료"))
if selectNumber == 1 :
goodsPrice = int(input("상품 가격 입력 : "))
gs.append(goodsPrice)
elif selectNumber == 2 :
result = pd.calculatorTotalPrice(gs)
flag = False
print(f"할인율 : {result[0]}%")
print(f"합계 : {pd.formattedNumber(result[1])}원")
1.구매, 2.종료1
상품 가격 입력 : 500
1.구매, 2.종료1
상품 가격 입력 : 1500
1.구매, 2.종료1
상품 가격 입력 : 2000
1.구매, 2.종료1
상품 가격 입력 : 1500
1.구매, 2.종료1
상품 가격 입력 : 2500
1.구매, 2.종료2
할인율 : 25%
합계 : 6,000원
import random
userNums = []
randNums = []
collNums = [] # 숫자가 몇개가 일치하는지
randBonusNum = 0
# 사용자
def setUserNums(ns): # userNums 에다가 값을 넣어주는 함수
global userNums
userNums = ns
def getUserNums(): # 사용자가 입력한 것을 빼오는 함수
return userNums
# 기계
def setRandNums():
global randNums
randNums = random.sample(range(1, 46), 6) # 여기서 빼오면 된다.
def getRandNums():
return randNums
# 보너스
def setBounsNums():
global randBonusNum
while True : # 위에 setRandNums 와 번호가 겹치면 안되기 때문에 겹치지 않을때까지 돌려야함
randBonusNum = random.randint(1, 45)
if randBonusNum not in randNums :
break
def getBounsNum():
return randBonusNum
# 로또 결과 반환
def lottoResult():
global userNums # global = 전역변수 참조
global randNums
global collNums
collNums = [] # 과거의 데이터가 있으면 안되니까 초기화
for un in userNums :
if un in randNums : # 숫자가 일치하면
collNums.append(un)
if len(collNums) == 6 : # 맞네! 일치한 번호만 들어오니까 6개면 당첨
print("1등 당첨!")
print(f"번호 : {collNums}")
elif (len(collNums) == 5) and (randNums in userNums) :
print("2등 당첨!")
print(f"번호 : {collNums}, 보너스 번호 : {randBonusNum}")
elif len(collNums) == 5 :
print("3등 당첨!")
print(f"번호 : {collNums}")
elif len(collNums) == 4 :
print("4등 당첨!")
print(f"번호 : {collNums}")
elif len(collNums) == 3 :
print("5등 당첨!")
print(f"번호 : {collNums}")
else :
print("당첨되지 않았습니다.")
print(f"당첨 번호 : {randNums}\t보너스 번호 : {randBonusNum}")
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)
setRandNums()
setBounsNums()
lottoResult()
import lotto as lt
lt.startLotto()
번호(1~45)를 입력하세요 : 7
번호(1~45)를 입력하세요 : 28
번호(1~45)를 입력하세요 : 4
번호(1~45)를 입력하세요 : 15
번호(1~45)를 입력하세요 : 3
번호(1~45)를 입력하세요 : 21
5등 당첨!
번호 : [7, 28, 3]
번호(1~45)를 입력하세요 : 7
번호(1~45)를 입력하세요 : 28
번호(1~45)를 입력하세요 : 4
번호(1~45)를 입력하세요 : 15
번호(1~45)를 입력하세요 : 03
번호(1~45)를 입력하세요 : 21
당첨되지 않았습니다.
당첨 번호 : [21, 16, 24, 25, 30, 1] 보너스 번호 : 18
내 번호 : [7, 28, 4, 15, 3, 21]
일치 번호 : [21]
def getPermutationCnt(n, r):
result =1
for n in range(n, (n-r), -1):
print("n:{}".format(n))
result = result * n
return result
# 순열을 계산해 주는 모듈
from itertools import permutations
def getPermutations(ns, r):
pList = list(permutations(ns, r))
print(f"{len(ns)}P{r} 개수 : {len(pList)}")
for n in permutations(ns, r) :
print(n, end="")
# 7P5 -> 7까지 경우중 5개를 순서에 맞게 뽑아냄
import permutation as pt
numN = int(input("numN 입력 : "))
numR = int(input("numR 입력 : "))
print(f"{numN}P{numR} : {pt.getPermutationCnt(numN, numR)}")
# 경우의 수를 나열해서 보여줌
listVar = [1, 2, 3, 4, 5, 6, 7, 8]
rVar = 3
pt. getPermutations(listVar, rVar)
numN 입력 : 7
numR 입력 : 5
n:7
n:6
n:5
n:4
n:3
7P5 : 2520
8P3 개수 : 336
(1, 2, 3)(1, 2, 4)(1, 2, 5)(1, 2, 6)(1, 2, 7)(1, 2, 8)(1, 3, 2)(1, 3, 4) ···
income = 0
waterPrice = 0
gasPrice = 0
electPrice = 0
def setIncome(ic): # 설정하는 함수
global income
income = ic
def getIncome(): # 데이터를 가져오는 함수
return income
def setWaterPrice(wc):
global waterPrice
waterPrice = wc
def getWaterPrice():
return waterPrice
def setGasPrice(gc):
global gasPrice
gasPrice = gc
def getGasPrice():
return gasPrice
def setElectPrice(ec):
global electPrice
electPrice = ec
def getElectPrice():
return electPrice
def getUtilityBill():
result = waterPrice + gasPrice + electPrice
return result
def getUtilityBillrate():
result = getUtilityBill() / getIncome() * 100
return result
import utilily
income = int(input("수입 입력 : "))
utilily.setIncome(income)
waterPrice = int(input("수도요금 입력 : "))
utilily.setWaterPrice(waterPrice)
electPrice = int(input("전기요금 입력 : "))
utilily.setElectPrice(electPrice)
gasPrice = int(input("가스요금 입력 : "))
utilily.setGasPrice(gasPrice)
print(f"공과금 : {utilily.getUtilityBill():,.0f}원")
print(f"공과금 비율 : {utilily.getUtilityBillrate()}%")
수입 입력 : 3000000
수도요금 입력 : 15000
전기요금 입력 : 17500
가스요금 입력 : 125000
공과금 : 157,500원
공과금 비율 : 5.25%