8- 파이썬 에러읽기
카테고리 : Python
파이썬 기초
자주 접하는 에러코드
Syntax error
컴퓨터가 이해할 수 없는 코드 오류
def add_all(numbers):
result = 0
for number in numbers
result += number
return result
실행
File "main.py", line 3
for number in numbers
SyntaxError: invalid syntax # 컴퓨터가 이해할 수 없는 코드
Name error
정의한 적 없는 변수 오류
def add_all(numbers):
result = 0
for number in numbers:
result += numbre
return result
add_all([1, 2, 3])
실행
Traceback (most recent call last):
File "main.py", line 6, in <module>
add_all([1, 2, 3])
File "main.py", line 4, in add_all
result += numbre
NameError: name 'numbre' is not defined # 정의한 적 없는 변수
Type error
타입 오류
1.
def add_all(numbers):
result = 0
for number in numbers:
result += numbre
return result
add_all(['a', 'b', 'c'])
실행
Traceback (most recent call last):
File "main.py", line 6, in <module>
add_all(['a', 'b', 'c'])
File "main.py", line 4, in add_all
result += number
TypeError: unsupported operand type(s) for +=: # 0과 'a'를 더할 수 없음
'int' and 'str'
2.
def usd_to_krw(price):
price_in_krw = price * 1100
return price_in_krw + " won"
usd_to_krw(4.99)
실행
Traceback (most recent call last):
File "main.py", line 5, in <module>
usd_to_krw(4.99)
File "main.py", line 3, in usd_to_krw
return price_in_krw + " won"
TypeError: unsupported operand type(s) for +: # 숫자와 'won'을 더할 수 없음
'float' and 'str
Index error
인덱싱 및 슬라이싱과 같은 기능을 사용할 때 없는 값 출력 오류
def first_character(string):
return string[0]
first_character("")
실행
Traceback (most recent call last):
File "main.py", line 4, in <module>
first_character("")
File "main.py", line 2, in first_character
return string[0]
IndexError: string index out of range # 문자열의 0번째 글자가 존재하지않음
Zero division error
분모가 0이 될 수 없는 오류
def average(numbers):
return sum(numbers) / len(numbers)
average([]) # ?
실행
Traceback (most recent call last):
File "main.py", line 4, in <module>
average([])
File "main.py", line 2, in average
return sum(numbers) / len(numbers)
ZeroDivisionError: division by zero # 0으로 나눌 수 없음
Import error
정의 되지 않은 이름 사용 오류
from math import squareroot
print(squareroot(4)) # 2.0일까?
실행
Traceback (most recent call last):
File "main.py", line 1, in <module>
from math import squareroot
ImportError: cannot import name 'squareroot' # 그런 이름을 찾을 수 없음 (sqrt입니다.)
Recursion error
끝나지 않는 재귀 오류
def sum_to(n):
return n + sum_to(n - 1)
sum_to(4) # 10 일까?
실행
Traceback (most recent call last):
File "main.py", line 4, in <module>
sum_to(4)
File "main.py", line 2, in sum_to
return n + sum_to(n - 1)
[Previous line repeated 997 more times]
RecursionError: maximum recursion depth exceeded # 끝나지않는 재귀 오류
해결방법
def sum_to(n):
if n <= 0:
return 0
return n + sum_to(n - 1)
sum_to(-1) # 0 #끝낼 수 있는 코드를 넣어줘야한다.
try / except
def average(numbers):
if len(numbers) > 0:
return sum(numbers) / len(numbers)
print("No numbers!")
같은표현
def average(numbers):
try:
return sum(numbers) / len(numbers)
except ZeroDivisionError:
print("No numbers!")