20차시. Edge 이해
퀴즈 1 — 상한을 먼저 보는 재시도 분기
retries가 상한 이상이면 stop, 아니면 retry를 반환하세요. State는 수정하지 않습니다.
빈칸 코드에서 시작합니다.
def route(state, limit):
pass결과 보기 (예시 풀이)
def route(state, limit):
# 분기 함수는 State를 읽기만 하고 경로 이름만 돌려줍니다.
# 상한 검사를 맨 위에 두어야 재시도 분기가 먼저 먹지 않습니다.
if state.get("retries", 0) >= limit:
return "stop"
# 상한 아래면 한 번 더 시도합니다.
return "retry"
def bump(state):
# 카운터를 올리는 일은 분기 함수가 아니라 노드가 맡습니다.
return {"retries": state.get("retries", 0) + 1}
# 그래프 대신 while로 루프를 흉내 냅니다. 상한은 2입니다.
state = {"retries": 0}
while True:
path = route(state, 2)
# 확인 1: retries가 0, 1일 때는 retry, 2가 되면 stop이 나와야 합니다.
print("retries =", state["retries"], "→", path)
if path == "stop":
break
state.update(bump(state))
# 확인 2: retries 키가 없는 State도 get 기본값 0 덕분에 retry로 갑니다.
print("빈 State →", route({}, 2))
실행 결과
retries = 0 → retry
retries = 1 → retry
retries = 2 → stop
빈 State → retry채점 기준: 상한 검사가 먼저다. state[...] = 대입이 있으면 오답이다.