[Python기초]function 연습

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!


파이썬 function 연습문제


문제1: 사칙연산 함수를 만들어라. 그리고 두 가지 변수를 사칙연산해서 출력하는 함수를 만들어라.


앞으로 프로그래밍을 하면서 내가 자주 사용하는 코드나 기능들이 있을 것이다. 그런 것들을 함수로 만들어서 사용하는 것이 생산성을 향상시킬 것이다.
사칙연산이란 덧셈,뺄셈,곱셈,나눗셈을 의미한다. 일상생활에서 계산에 자주 사용하는 사칙연산 함수를 만들어보고 그것들을 사용해 함수가 어떻게 만들어지는지 과정과 결과를 직접 경험하고 능력을 향상시켜보자.


  • 조건:

    add() : 두 수 더하기
    sub() : 두 수 뺴기
    mul() : 곱하기
    div() : 나누기
    mod() : 나머지


간단하게 함수에 대해 알아보자.

함수는 이렇게 구성되어 있다.

def 함수명(매개변수1, 매개변수2):
    수행 문장1
    수행 문장2
    반환값 (생략 가능)

함수명, 전달되는 값을 받는 매개변수, 수행문장, 반환값(return)으로 구성되어 있다.
함수명을 정할 때는 함수의 목적을 설명하는 동사를 보통 사용한다.
함수는 변수와 다르게 이름 옆에 괄호()가 붙는다.
함수를 실행하려면 만든 후에 호출해야한다.

함수 호출(call)
함수이름()
함수이름(인수1, 인수2, ...) # =>함수인수를 위치기반 전달
def add(num1, num2):
    return num1 + num2
def sub(num1, num2):
    return num1 - num2

def mul(num1, num2):
    return num1 * num2

def div(num1, num2):
    return num1 / num2

def mod(num1, num2):
    return num1 % num2

# 사칙연산에 나머지를 구하는 함수들을 정의해봤다.
# add는 +, sub는 -, mul는 *, div는 /, mod는 %로 함수명을 동작하는 행위에 맞춰 지었다.
# 매개변수에는 num1, num2를 적어 인자로 숫자가 들어가야 한다는 것을 표현했다.
# 그리고 return을 이용해 연산 결과를 돌려주는 것으로 함수를 만드는 과정을 마친다.
def printArithm(a,b):
    print(f'{a} + {b} = {add(a, b)}')
    print(f'{a} - {b} = {sub(a, b)}')
    print(f'{a} * {b} = {mul(a, b)}')
    print(f'{a} / {b} = {div(a, b):.2f}')
    print(f'{a} % {b} = {mod(a, b)}')

# 이전에 만든 함수를 출력하는 함수를 만들 때 이용할 수도 있다.
# 매개변수는 a, b
# print문에 f'string을 사용해 연산 과정과 함수를 적는다.
printArithm(3,5)

# 만들어진 함수 안에 인수 3과 5를 넣어서 출력해보자.

이렇게 출력될 것이다.

3 + 5 = 8
3 - 5 = -2
3 * 5 = 15
3 / 5 = 0.60
3 % 5 = 3







문제2: 상품 가격, 주문 수량을 계산하여 주문액을 반환하는 함수를 작성하라. 그리고 조건을 확인하여 할인을 적용시켜라.

  • 조건:
    1. 주문액이 10만원 이상이면 10% 할인
    2. 주문액이 5만원이상 10만원 미만이면 5% 할인
    3. 주문액인 5만원미만이면 할인 없음
  • 출력 예시:
    상품가격 입력: 10000
    주문수량 입력: 10
    주문액: 100000원
    할인액: 10000.0원
    지불할 금액: 90000.0원
    
def order(price, quantity):
    amount = price * quantity
    if amount >=  100000:
        discount = amount * 0.1
    elif amount >= 50000:
        discount = amount * 0.05
    else:
        discount = 0
    result = amount - discount
    return amount, discount, result

# order는 주문을 뜻하며 매개변수에 상품의 가격을 뜻하는 price와 수량을 뜻하는 quantity를 적어준다.
# 주문액은 상품가격과 주문 수량을 곱해준 값이다.
# if제어문으로 문제에 명시된 조건을 걸어준다.
# 주문액이 100000원 이상일 경우 할인율이 10%이므로, 주문액을 뜻하는 amount에 0.1을 곱해 할인금액을 뜻하는 discount에 저장해준다.
# 순서대로 5만원이상이면 5%, 그 미만이면 할인이 없다는 조건을 작성해준다.
# 실제 지불해야할 금액은 주문액에서 할인금액을 빼준 값으로 result에 저장해준다.
# 그리고 return을 사용해 주문액, 할인금액, 지불금액을 반환해준다.
# 이렇게 함수하나를 완성했다.
price = int(input('상품가격 입력: '))
quantity = int(input('주문수량 입력: '))
amount, discount, result = order(price, quantity)

# 이제 매개변수에 들어갈 인수를 input함수를 사용해 입력받는다.
# 실제 세상에서 금액을 지불할때는 소수점 아래 숫자는 사용하지 않으므로 입력받는 값도 정수형인 int 타입으로 전환해준다.
# 위의 함수는 return으로 총 3개의 값을 반환해준다. 따라서, order 함수를 사용해 계산을 하면 총 3개의 변수에 값을 저장할 수 있다. 각각 amount, discount, result에 저장해준다.
# 값을 반환받는 변수명이 함수를 만들 때 적은 변수명과 같지만, 함수를 만들 때 사용한 변수는 지역변수이므로 전역변수로 따로 값을 저장해주어야 한다. 
print(f'주문액: {amount}원')
print(f'할인액: {discount}원')
print(f'지불할 금액: {result}원')

# 구한 값을 print 함수를 사용해 출력해보자.
상품가격 입력: 20000
주문수량 입력: 12
주문액: 240000원
할인액: 24000.0원
지불할 금액: 216000.0원
print(f'주문액: {amount}원')
print(f'할인액: {int(discount)}원')
print(f'지불할 금액: {int(result)}원')

# 위의 결과를 보면 할인액과 지불할 금액이 소수점 아래자리까지 표현해버렸다.
# 그것을 해결하기 위해 int값으로 포매팅해서 다시 출력해보자.
  1. 주문액이 10만원 이상일 경우
    상품가격 입력: 10000
    주문수량 입력: 12
    주문액: 120000원
    할인액: 12000원
    지불할 금액: 108000원
    
  2. 주문액이 5만원이상 10만원 미만일 경우
    상품가격 입력: 2500
    주문수량 입력: 26
    주문액: 65000원
    할인액: 3250원
    지불할 금액: 61750원
    
  3. 주문액이 5만원 미만일 경우
    상품가격 입력: 1000
    주문수량 입력: 30
    주문액: 30000원
    할인액: 0원
    지불할 금액: 30000원
    

2022

[web]jQuery 복습 3

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

16 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

9 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑