티스토리 뷰
[사칙연산]
- 두 숫자와 1개 연산자를 입력 받으면 계산의 결과를 리턴하는 함수를 작성한다.
- 길이 3의 리스트 cmd 를 매개변수로 받는다.
- 리스트의 요소는 모두 문자열이고, cmd[0], cmd[2] 숫자로 된 문자열로 되어있고, cmd[1] 는 연산자다.
예시)
입력> ["1", "+", "2"]
결과 > 3
입력> ["1", "-", "2"]
결과 > -1
입력> ["1", "*", "2"]
결과 > 2
입력> ["1", "/", "2"]
결과 > 0.5
추가로 0 으로 나눌때 경우, 예외처리와 계산 타이밍을 고민해 부자.
lambda
def operator1(ns: list, ops="+-*/")->str:
ns[0], ns[2] = float(ns[0]), float(ns[2])
fs = (lambda: ns[0] + ns[2],
lambda: ns[0] - ns[2],
lambda: ns[0] * ns[2],
lambda: ns[0] / ns[2])
return str(fs[ops.index(ns[1])]())
generator
def operator2(ns: list, ops="+-*/")->str:
ns[0], ns[2] = float(ns[0]), float(ns[2])
gs = ((ns[0]+ns[2] for _ in range(1)),
(ns[0]-ns[2] for _ in range(1)),
(ns[0]*ns[2] for _ in range(1)),
(ns[0]/ns[2] for _ in range(1)))
return str(next(gs[ops.index(ns[1])]))
dictionary + lambda
def operator3(ns: list)->str:
ns[0], ns[2] = float(ns[0]), float(ns[2])
func = {"+": lambda: ns[0] + ns[2],
"-": lambda: ns[0] - ns[2],
"*": lambda: ns[0] * ns[2],
"/": lambda: ns[0] / ns[2]}[ns[1]]
return str(func())
'python lecture > basic' 카테고리의 다른 글
[edu] 큐 (리스트, 클래스) (0) | 2019.01.22 |
---|---|
[edu] generator (제네레이터, itertools.tee) (0) | 2019.01.18 |
[edu] 슬라이싱 (slice, slicing) (0) | 2019.01.17 |
[edu] for, comprehension, function 예제 모음 (0) | 2019.01.17 |
[edu] 리스트 컴프리헨션 (list comprehensions) (0) | 2019.01.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문과 코딩
- Tistory
- Python
- 파이썬 프로그래밍
- wsgi
- 장고 카톡 자동응답
- 엑셀 비교
- django
- GIT
- 장고 플러스친구 자동응답
- admin.py
- 파이썬 독학
- pycrypto
- 면접정답
- 모바일 테마 적용
- gitignore
- virtualenv
- chatbot
- 파이썬 강좌
- 플러스친구 자동응답
- 면접답변
- 이미지 비교
- 파이썬
- 장고
- 모바일 스킨 적용
- 파이썬 입문
- 문서 비교
- PuTTYGen
- django chatbot
- gitlab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함