try / except
try:
n = int(s)
except ValueError:
n = 0
연습 문제에서는 입력이 깨졌을 때 기본값 또는 early return이 흔합니다.
광범위 except:는 버그를 삼키니, 가능하면 ValueError, KeyError처럼 구체적으로 잡으세요.
else / finally
try:
x = int(s)
except ValueError:
return None
else:
return x * 2
else는 예외가 없을 때만 실행됩니다. finally는 정리 코드용입니다.
가드가 더 나을 때
if not s:
return 0
if not s.isdigit():
return 0
예외보다 조건이 읽기 쉬우면 가드를 택합니다.
문제 풀이
채점 입력은 보통 형식이 고정입니다.
그래도 로컬 실험에서 split 결과가 비는 경우를 대비하면 디버깅이 빨라집니다.
parts = line.split()
if len(parts) < 2:
return ""
체크리스트
- 잡은 예외 타입이 구체적인가?
- 실패 시 반환이 문제 계약과 맞는가?
except Exception으로 모든 버그를 숨기지 않았는가?
연습
연습장에서 문자열 리스트를 숫자로 바꾸되, 실패 항목은 건너뛰는 함수를 작성해 보세요.
한 줄
> 예외는 좁게 잡고, 입력은 먼저 가드한다.
raise
if n < 0:
raise ValueError("n must be >= 0")
라이브러리·헬퍼에서는 raise가 맞고, 문제 solve에서는 보통 문제 명세의 반환값을 지키는 편이 채점에 맞습니다.
더 깊게
읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.
관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.
막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.