연습문제
1번 문제
회전초밥집에서 ‘어’가 나오는 초밥만을 먹어 비용을 계산하는 코드를 완성해주세요. 단, 제너레이터를 만들어야 합니다.
def gen(data):
pass
def solution(data):
sum(gen(data))
solution([['광어초밥', 1000], ['연어초밥', 2000], ['계란초밥', 3000], ['문어초밥', 4000], ['장어초밥', 5000]])
def gen(data):
pass
def solution(data):
sum(gen(data))
solution([['광어초밥', 1000], ['연어초밥', 2000], ['계란초밥', 3000], ['문어초밥', 4000], ['장어초밥', 5000]])
2번 문제
다음과 같이 동작하는 제너레이터 함수 fibonacci(n)를 완성하세요. 주어진 숫자 n까지의 피보나치 수열을 반환합니다.
def fibonacci(n):
pass
for i in fibonacci(5):
print(i)
'''
출력
1
1
2
3
5
'''
def fibonacci(n):
pass
for i in fibonacci(5):
print(i)
'''
출력
1
1
2
3
5
'''
3번 문제
주어진 함수의 실행 시간을 측정하여 출력하는 데코레이터 time_it를 작성하세요. (힌트: time 모듈의 time() 함수를 사용하세요.)
-
정답
-
code
def gen(data): for name, price in data: if '어' in name: yield price def solution(data): return sum(gen(data)) solution([['광어초밥', 1000], ['연어초밥', 2000], ['계란초밥', 3000], ['문어초밥', 4000], ['장어초밥', 5000]])
def gen(data): for name, price in data: if '어' in name: yield price def solution(data): return sum(gen(data)) solution([['광어초밥', 1000], ['연어초밥', 2000], ['계란초밥', 3000], ['문어초밥', 4000], ['장어초밥', 5000]])
-
code
def fib(n): pre = 1 next = 1 count = 0 while True: temp = pre + next yield pre pre, next = next, temp count += 1 if count == n: break for i in fib(5): print(i)
def fib(n): pre = 1 next = 1 count = 0 while True: temp = pre + next yield pre pre, next = next, temp count += 1 if count == n: break for i in fib(5): print(i)
-
code
import time def time_it(func): def wrapper(): start_time = time.time() func() end_time = time.time() print(f"{end_time - start_time:.4f}s") return wrapper @time_it def main(): def fib(n): pre = 1 next = 1 count = 0 while True: temp = pre + next yield pre pre, next = next, temp count += 1 if count == n: break for i in fib(20): print(i) main()
import time def time_it(func): def wrapper(): start_time = time.time() func() end_time = time.time() print(f"{end_time - start_time:.4f}s") return wrapper @time_it def main(): def fib(n): pre = 1 next = 1 count = 0 while True: temp = pre + next yield pre pre, next = next, temp count += 1 if count == n: break for i in fib(20): print(i) main()
-