8- 파이썬 에러읽기

파이썬 기초

자주 접하는 에러코드

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!")

© 2021. All rights reserved.

----------박상훈의 블로그----------

@sanghoonsc