딕셔너리는 키와 벨류 값으로 이루어져있다.
벨류값으로,
함수를 넣을 수 있을까?
오늘은
딕셔너리 안에 함수를 넣는 방법을 생각해보자.
혹시
딕셔너리에 대한 기본기가 필요하신 분은
아래의 게시글을 확인하면 된다.
https://olivia-blackcherry.tistory.com/75
오늘은 딕셔너리 심화로,
딕셔너리 안에 함수를 넣는 방법을 알고
이 개념을 응용하여 계산기를 만들 것이다.
우선,
아래의 코드를 실행해보자.
이 코드 역시 계산기를 만드는 코드이지만,
딕셔너리를 사용하지 않고
if, elif, else 구문을 반복해 코드를 작성했다.
실행 결과는 같지만,
코드가 왠지 복잡해보이고,
단순한 과정이 나열된 것처럼 보여
효율성이 떨어져 보인다.
아래의 재생버튼 ▶을 눌러서 실행해보세요
지금부터
딕셔너리 안에 함수를 넣는 것을 배워
위의 코드를 수정해보자.
먼저 딕셔너리 안에 넣을 함수를 정의해주자.
덧셈 add
뺄셈 subtract
곱셈 multiply
나눗셈 divide
네 개의 함수를 만들었다.
각 함수에는 return 값이 있다.
def add(n1, n2):
return n1 + n2
def subtract(n1, n2):
return n1 - n2
def multiply(n1, n2):
return n1 * n2
def divide(n1, n2):
return n1 / n2
이제 딕셔너리를 만들 것이다.
키 값으로는 +. -. *, / 을 두었고
벨류 값으로 위의 함수 이름을 적었다.
operations = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide
}
이제부터는
함수와 딕셔너리를 어떻게 활용할지를 보자.
먼저,
새로운 변수 3개를 만든다.
n1, n2 는 함수에 넣을 입력값이다.
n1= int(input("계산하고자 하는 숫자를 입력하세요"))
n2 = int(input("계산하고자 하는 숫자를 입력하세요"))
pick_operations는 위의 operations 딕셔너리에서 골라낼 key값이다.
pick_operations = input(" +,-,*, / 골라주세요")
위의 변수를 이용해서
for문을 만들어 결과를 확인해보자.
그 다음,
calculator(계산기)라는 새로운 함수를 정의했다.
def calculator(n1, n2, pick_operations):
function = operations[pick_operations]
answer = function(n1, n2)
return answer
operations["+"]의 value 값은 add함수가 된다.
function = operations[pick_operations] 이므로
function = add 가 된다.
answer = function(n1, n2)이므로
answer= add(n1, n2) 가 되고,
만약 사용자가 n1: 2, n2: 3를 입력한다면
add(1,3)는 4를 return하므로,
answer= 4가 되며
결과적으로 calculator는 4 값을 반환한다.
이제 위의 과정을 응용하여
계산기를 만들어보자.
만드는 규칙은 다음과 같다.
계산기 만들기
1. 계산하고자하는 숫자 입력 + (덧셈, 곱셈, 나눗셈, 뺄셈) 입력 + 두 번째 숫자 입력하기
2. 계산 계속 이어나갈지 묻기.
3. 계산 이어나가거나, 종료하기
아래의 재생버튼 ▶을 눌러서 실행해보세요
<응용>
아래 코드는 우의 함수와 미세한 차이가 있다.
위의 코드에서는 calculator 함수에 parameter를 두고,
단순히 계산하는 기능만 했다면,
이번에는
calculator 함수에 parameter는 없고,
모든 실행 코드를 이 안에 모두 넣으므로써
코드를 더욱 간결화했다.
아래의 재생버튼 ▶을 눌러서 실행해보세요
'파이썬 > 파이썬(python) 초급' 카테고리의 다른 글
[11-2 파이썬] 블랙잭 게임 만들기(순서도, 알고리즘) (0) | 2022.08.20 |
---|---|
[11-1 파이썬] 블랙잭 게임 만들기(블랙잭 게임 규칙 알기) (0) | 2022.08.19 |
[10-5 파이썬] print와 return 차이, print vs return, 출력 vs 반환, 출력 vs 리턴 (0) | 2022.08.18 |
[10-4 파이썬] 독스트링, Docstrings 하는 일 (0) | 2022.08.18 |
[10-3 파이썬] 윤년 파이썬 실전 예제, 함수 return (0) | 2022.08.18 |