함수 문제풀이 (4월 13일)

송영석·2023년 4월 13일
0

데이터스쿨 14기

목록 보기
3/18

문제 1

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("-" * 60)

    selectNumber = int(input("1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료 "))

    if selectNumber == 8:
        print("Bye~")
        break

    number1 = float(input("첫 번째 숫자 입력: "))
    number2 = float(input("두 번째 숫자 입력: "))

    if selectNumber == 1:
        print(f"{number1} + {number2} = {add(number1, number2)}")
    elif selectNumber == 2:
        print(f"{number1} - {number2} = {sub(number1, number2)}")
    elif selectNumber == 3:
        print(f"{number1} * {number2} = {mul(number1, number2)}")
    elif selectNumber == 4:
        print(f"{number1} / {number2} = {div(number1, number2)}")
    elif selectNumber == 5:
        print(f"{number1} % {number2} = {mod(number1, number2)}")
    elif selectNumber == 6:
        print(f"{number1} // {number2} = {flo(number1, number2)}")
    elif selectNumber == 7:
        print(f"{number1} ** {number2} = {exp(number1, number2)}")

    print("-" * 60)

문제 2

def getDistance(speed, hour, minute):

    distance = speed * (hour + minute / 60)

    return distance

print("-" * 60)
speed = float(input("속도(km/h) 입력: "))
hour = float(input("시간(h) 입력: "))
minute = float(input("시간(m) 입력: "))
distance = getDistance(speed, hour, minute)
print(f"{speed}(km/h)속도로 {hour}(h)시간 {minute}(m)분 동안 이동한 거리: {distance}(km)")
print("-" * 60)


def getTime(distance, speed):

    time = distance / speed
    print(f"time: {time}")
    hour = int(time)
    minute = int((time - hour) * 60)

    return (hour, minute)

print("-" * 60)
distance = float(input("거리(km) 입력: "))
speed = float(input("속도(km/h) 입력: "))
time = getTime(distance, speed)
print(f"{speed}(km/h)속도로 {distance}(km) 이동한 시간: {time[0]}(h)시간 {time[1]}(m)분")
print("-" * 60)

문제3

childPrice = 18000
infantPrice = 25000
adultPrice = 50000
discount = 50

def formatted(n):

    return format(n, ',')

def airplaneTicketReceipt(child1, child2, infant1, infant2, adult1, adult2):

    print("=" * 40)

    child_Ticket = child1 * childPrice
    child_DiscountTicket = int(child2 * childPrice * (discount / 100))
    infant_Ticket = infant1 * infantPrice
    infant_DiscountTicket = int(infant2 * infantPrice * (discount / 100))
    adult_Ticket = adult1 * adultPrice
    adult_DiscountTicket = int(adult2 * adultPrice * (discount / 100))

    print(f"유아 {child1}명 요금: {formatted(child_Ticket)}원")
    print(f"유아 할인 대상 {child2}명 요금: {formatted(child_DiscountTicket)}원")
    print(f"소아 {infant1}명 요금: {formatted(infant_Ticket)}원")
    print(f"소아 할인 대상 {infant2}명 요금: {formatted(infant_DiscountTicket)}원")
    print(f"성인 {adult1}명 요금: {formatted(adult_Ticket)}원")
    print(f"성인 할인 대상 {adult2}명 요금: {formatted(adult_DiscountTicket)}원")

    print("=" * 40)

    print(f"Total: {child1 + child2 + infant1 + infant2 + adult1 + adult2}명")
    print(f"TotalPrice: {formatted(child_Ticket + child_DiscountTicket + infant_Ticket + infant_DiscountTicket + adult_Ticket + adult_DiscountTicket)}원")

    print("=" * 40)

print(f"childPrice(24개월 미만)\t\t : {formatted(childPrice)}원")
print(f"infantPrice(만12세 미만)\t\t : {formatted(infantPrice)}원")
print(f"adultPrice(만12세 이후)\t\t : {formatted(adultPrice)}원")
print(f"국가 유공자 및 장애우 할인\t\t : {discount}%")

print()

child = int(input("유아 입력: "))
childDiscount = int(input("할인대상 유아 입력: "))
infant = int(input("소아 입력: "))
infantDiscount = int(input("할인대상 소아 입력: "))
adult = int(input("성인 입력: "))
adultDiscount = int(input("할인대상 성인 입력: "))

airplaneTicketReceipt(child, childDiscount, infant, infantDiscount, adult, adultDiscount)

문제4

<팩토리얼 함수>

def formatted(n):

    return format(n, ',')

def recursiveFunction(number):

    if number == 1:
        return number

    return number * recursiveFunction(number-1)

inputNumber = int(input("input number: "))
print(formatted(recursiveFunction(inputNumber)))


<단리>

def formatted(n):

    return format(n, ',')

def simpleInterest(money, term, rate):

    totalMoney = 0
    totalInterestMoney = 0

    for i in range(term):
        totalInterestMoney += money * (rate * 0.01)

    totalMoney = money + totalInterestMoney
    return int(totalMoney)

money = int(input("예치금(원): "))
term = int(input("기간(년): "))
rate = int(input("연 이율(%): "))

print()

print("[단리 계산기]")
print("=" * 30)
print(f"예치금\t: {formatted(money)}원")
print(f"예치기간\t: {term}년")
print(f"연 이율\t: {rate}%")
print("-" * 30)
print(f"3년 후 총 수령액: {formatted(simpleInterest(money, term, rate))}원")
print("=" * 30)


<복리>

def formatted(n):

    return format(n, ',')

def multiInterest(money, term, rate):

    term = term * 12
    monthRate = (rate / 12) * 0.01
    totalMoney = money

    for i in range(term):
        totalMoney = totalMoney + totalMoney * monthRate

    return int(totalMoney)

money = int(input('예치금(원) : '))
term = int(input('기간(년) : '))
rate = int(input('연 이율(%) : '))

print()

print('[복리 계산기]')
print('=' * 30)
print(f'예치금\t: {formatted(money)}원')
print(f'예치기간\t: {term}년')
print(f'연 이율\t: {rate}%')
print('-' * 30)
print(f'{term}년 후 총 수령액 : {formatted(multiInterest(money, term, rate))}원')
print('=' * 30)

문제5

<등차수열_방법1>

def sequence(a1, d, n):

    valueN = 0  # n항의 값
    sumN = 0    # n항까지의 합의 값

    i = 1
    while i <= n:

        if i == 1:
            valueN = a1
            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)


<등차수열_방법2>

inputN1 = int(input("a1 입력: "))
inputD = int(input("공차 입력: "))
inputN = int(input("n 입력: "))

valueN = 0
sumN = 0
n = 1

while n <= inputN:

    if n == 1:
        valueN = inputN1
        sumN = valueN
        print(f"{n}번째 항의 값: {valueN}")
        print(f"{n}번째 항까지의 합: {sumN}")
        n += 1
        continue

    valueN += inputD
    sumN += valueN
    print(f"{n}번째 항의 값: {valueN}")
    print(f"{n}번째 항까지의 합: {sumN}")
    n += 1

print(f"{inputN}번째 항의 값: {valueN}")
print(f"{inputN}번째 항까지의 합: {sumN}")


<등차수열_방법3>

def sequence(a1, d, n):

    valueN = a1 + (n - 1) * d
    print(f"{n}번째 항의 값 : {valueN}")

    sumN = n * (a1 + valueN) / 2
    print(f"{n}번째 항까지의 합: {int(sumN)}")

inputN1 = int(input("a1 입력: "))
inputD = int(input("공차 입력: "))
inputN = int(input("n 입력: "))

sequence(inputN1, inputD, inputN)


<등차수열_방법4>

inputN1 = int(input('a1 입력 : '))
inputD = int(input('공차 입력 : '))
inputN = int(input('n 입력 : '))

valueN = inputN1 + (inputN - 1) * inputD
print(f"{inputN}번째 항의 값 : {valueN}")

sumN = inputN * (inputN1 + valueN) / 2
print(f'{inputN}번째 항까지의 합 : {int(sumN)}')

문제6

<등비수열_방법1>

def geometric(a1, r, n):

    valueN = 0
    sumN = 0

    i = 1
    while i <= n:

        if i == 1:
            valueN = a1
            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("r: "))
inputN = int(input("n: "))

geometric(inputN1, inputR, inputN)


<등비수열_방법2>

inputN1 = int(input("a1: "))
inputR = int(input("r: "))
inputN = int(input("n: "))

valueN = 0
sumN = 0

n = 1
while n <= inputN:

    if n == 1:
        valueN = inputN1
        sumN = valueN
        print(f"{n}번째 항의 값 : {valueN}")
        print(f"{n}번째 항까지의 합 : {sumN}")
        n += 1
        continue

    valueN *= inputR
    sumN += valueN
    print(f"{n}번째 항의 값 : {valueN}")
    print(f"{n}번째 항까지의 합 : {sumN}")
    n += 1

print(f"{inputN}번째 항의 값 : {valueN}")
print(f"{inputN}번째 항까지의 합 : {sumN}")


<등비수열_방법3>

inputN1 = int(input("a1: "))
inputR = int(input("r: "))
inputN = int(input("n: "))

valueN = inputN1 * (inputR ** (inputN - 1))
print(f"{inputN}번째 항의 값 : {valueN}")

sumN = inputN1 * (1 - inputR ** inputN) / (1 - inputR)
print(f"{inputN}번째 항까지의 합 : {int(sumN)}")

자료출처: 제로베이스 데이터 스쿨

profile
매일매일 작성!!

0개의 댓글