0416 파이썬 중급 6일차(~6)

박영선·2023년 4월 16일
0

함수 연습문제 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)
    selectNum = int(input('1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료'))
    if selectNum == 8:
        print('연산을 종료합니다.')
        break

    num1 = float(input('첫번째 숫자 입력 : '))
    num2 = float(input('두번째 숫자 입력 : '))

    if selectNum == 1:
        print(f'{num1}+{num2} : {add(num1,num2)}')

    elif selectNum == 2:
        print(f'{num1}-{num2} : {sub(num1,num2)}')

    elif selectNum == 3:
        print(f'{num1}*{num2} : {mul(num1,num2)}')

    elif selectNum == 4:
        print(f'{num1}/{num2} : {div(num1,num2)}')

    elif selectNum == 5:
        print(f'{num1}%{num2} : {mod(num1,num2)}')

    elif selectNum == 6:
        print(f'{num1}//{num2} : {flo(num1,num2)}')

    elif selectNum == 7:
        print(f'{num1}**{num2} : {exp(num1,num2)}')

    else:
        print('잘못입력했습니다. 다시 입력하세요')

    print('*' * 60)

함수 연습문제2

def getDistance(speed, hour, minute):
    distance = speed * (hour + minute/60) #분을 60으로 나눠야 시간과 합쳤을때 문제가 안생김
    return distance

def getTime(speed,distance):
    time = distance / speed
    h= int(time)
    m= int((time - h) * 100 * 60 /100)  #1시간은 60분이므로
    return[h,m]  #자료가 두개니까 [] 리스트로 묶어서 반환


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

print('*'*60)
s = float(input('속도 (km/h) 입력 : '))
d = float(input('거리 (km/h) 입력 :'))
t = getTime(s,d)
print(f'{s}(km/h)속도로 {d}(km) 이동한 시간 : {t[0]}(h)시간 {t[1]}(m)분') #리스트 해둔 순서
print('*'*60)

함수 연습문제3

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

def printAirplaneReceipt(c1,c2,i1,i2,a1,a2):  #

    cp = c1 * childPrice
    cp_dc = int(c2*childPrice * 0.5)
    print(f'유아 {c1}명 요금 : {cp}원')
    print(f'유아 할인 대상 {c2}명 요금 : {cp_dc}원')

    ip = i1 * infantPrice
    ip_dc = int(i2*infantPrice*0.5)
    print(f'소아 {i1}명 요금 : {ip}원')
    print(f'소아 할인 대상 {i2}명 요금 : {ip_dc}원')

    ap = a1 * adultPrice
    ap_dc = int(a2*adultPrice*0.5)
    print(f'성인 {a1}명 요금 : {ap}원')
    print(f'성인 할인 대상 {a2}명 요금 : {ap_dc}원')

childCnt = int(input('유아 입력 : '))
specialDCChildCnt = int(input('할인 대상 유아 입력 : '))

infantCnt = int(input('소아 입력 : '))
specialDCInfantCnt = int(input('할인 대상 소아 입력 : '))

adultCnt = int(input('성인 입력 : '))
specialDCadultCnt = int(input('할인 대상 성인 입력 : '))

printAirplaneReceipt(childCnt,specialDCChildCnt,infantCnt,specialDCInfantCnt,\
                     adultCnt,specialDCadultCnt)

함수연습문제 4

팩토리얼 구하기
def recursionFun(n): #재귀함수

    if n == 1:
        return n

    return n * recursionFun(n-1)

inputNum = int(input('input number : '))
print(format(recursionFun(inputNum),','))
#단리
def singleRateCal(m,t,r):  #돈, 기간, 이율
    totalMoney = 0
    totalRateMoney = 0

    for i in range(t):
        totalRateMoney += m * (r*0.01) #3프로라고 해서 3을 넣는게 아니고 0.03을 곱해줘야함

    totalMoney = m + totalRateMoney
    return int(totalMoney)

#월복리
def multiRateCal(m,t,r):
    t = t*12 #월복리 이기 때문에 연을 월로 환산
    rpm= (r/12)*0.01 #연이자율이기 때문에 월로 환산

    totalMoney = m

    for i in range(t):
        totalMoney += totalMoney * rpm

    return int(totalMoney)

def formatedNumber(n):
    return format(n,',') #3자리마다 쉼표찍기

money = int(input('예치금 입력 : '))
time = int(input('기간(년) 입력 : '))
rate = float(input('연이율 입력 : '))

print(f'{time}년 후 총 수령액 : {formatedNumber(singleRateCal(money,time,rate))}')
print(f'{time}년 후 총 수령액 : {formatedNumber(multiRateCal(money,time,rate))}')

함수 연습문제5

#등차수열

def sequenceCal(n1,d,n): #초항, 공차, 마지막번째 항
    valueN = 0 #n항의 값
    sumN = 0 #n항까지의 합의 값

    i =1
    while i <= n:

        if i == 1:
            valueN = n1
            sumN += valueN
            print(f'{i}번째 항의 값 : {valueN}')
            print(f'{i}번째 항 까지의 합 : {sumN}')

            i += 1
            continue

        else:
            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)

함수 연습문제06

#등비수열

def sequenceCal(n1,d,n): #초항, 공차, 마지막번째 항
    valueN = 0 #n항의 값
    sumN = 0 #n항까지의 합의 값

    i =1
    while i <= n:

        if i == 1:
            valueN = n1
            sumN += valueN
            print(f'{i}번째 항의 값 : {valueN}')
            print(f'{i}번째 항 까지의 합 : {sumN}')

            i += 1 #무한루프 빠지지않게
            continue

        else:
            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)
profile
데이터분석 공부 시작했습니다

0개의 댓글