광주 인공지능 사관학교 pre-course로 제공받은 elice 의 디버깅 강의 정리입니다.
def greeting(your_name):
print('Hello, ' + yourname + '!')
greeting('Trump')
위 소스 코드는 아래와 같은 에러메시지를 출력한다.
Traceback (most recent call last):
File "C:/Users/SOULFEVER/Desktop/1.py", line 3, in <module>
greeting('Trump')
File "C:/Users/SOULFEVER/Desktop/1.py", line 2, in greeting
print('Hello, ' + yourname + '!')
NameError: name 'yourname' is not defined
Traceback (most recent call last)
File "C:/Users/SOULFEVER/Desktop/1.py", line 3, in <module> greeting('Trump')
greeting
함수는 1 ~ 2번째 줄에서 생기는데, 이처럼 자신의 줄이 아닌 다른 줄에서 실행된 경우를 <module>
이라 한다.File "C:/Users/SOULFEVER/Desktop/1.py", line 2, in greeting print('Hello, ' + yourname + '!')
NameError: name 'yourname' is not defined
def average(numbers):
return sum(numbers) / len(numbers)
average([])
위 소스 코드는 아래와 같은 에러메시지를 출력한다.
Traceback (most recent call last):
File "C:/Users/SOULFEVER/Desktop/1.py", line 3, in <module>
average([])
File "C:/Users/SOULFEVER/Desktop/1.py", line 2, in average
return sum(numbers) / len(numbers)
ZeroDivisionError: division by zero
Trackback ...
: 지금부터 어느 경로로 에러가 발생했는지 알려줄게File ... (첫번째)
: average([])을 실행한 3번째 줄의 바깥( <module>
)에서 뭔가 문제가 생긴 것 같아File ... (두번째)
: 2번째 줄, average함수가 있는 곳 안에서 return 부분에 문제가 생겼어ZeroDivisionError: division by zero
: 0으로 나눈게 문제같은걸?:
)이 빠졌다.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
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 "C:/Users/SOULFEVER/Desktop/1.py", line 6, in <module>
add_all([1,2,3])
File "C:/Users/SOULFEVER/Desktop/1.py", line 4, in add_all
result += numbre
NameError: name 'numbre' is not defined
NameError: name 'numbre' is not defined
: 정의한 적 없는 numbre
라는 변수가 나왔어요! 라는 뜻def add_all(numbers):
result = 0
for number in numbers:
result += number
return result
add_all(['a','a','b'])
Traceback (most recent call last):
File "C:/Users/SOULFEVER/Desktop/1.py", line 6, in <module>
add_all(['a','a','b'])
File "C:/Users/SOULFEVER/Desktop/1.py", line 4, in add_all
result += number
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
def usd_to_krw(price):
price_in_krw = price * 100
return price_in_krw + ' won'
usd_to_krw(4.99)
Traceback (most recent call last):
File "C:/Users/SOULFEVER/Desktop/1.py", line 4, in <module>
usd_to_krw(4.99)
File "C:/Users/SOULFEVER/Desktop/1.py", line 3, in usd_to_krw
return price_in_krw + ' won'
TypeError: unsupported operand type(s) for +: 'float' and 'str'
def first_character(string):
return string[0]
first_character("")
Traceback (most recent call last):
File "/Users/soulfever/Documents/solved/1.py", line 3, in <module>
first_character("")
File "/Users/soulfever/Documents/solved/1.py", line 2, in first_character
return string[0]
IndexError: string index out of range
IndexError: string index out of range
: 인덱스 범위를 넘어갔어! 라는 의미def average(numbers):
return sum(numbers) / len(numbers)
average([])
Traceback (most recent call last):
File "/Users/soulfever/Documents/solved/1.py", line 3, in <module>
average([])
File "/Users/soulfever/Documents/solved/1.py", line 2, in average
return sum(numbers) / len(numbers)
ZeroDivisionError: division by zero
ZeroDivisionError: division by zero
: 0으로는 나눌 수 없어! 라는 뜻from math import squareroot
print(squareroot(4)) # 2.0 ??
Traceback (most recent call last):
File "/Users/soulfever/Documents/solved/1.py", line 1, in <module>
from math import squareroot
ImportError: cannot import name 'squareroot' from 'math' (/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/math.cpython-310-darwin.so)
ImportError: cannot import name 'squareroot' from 'math'
: math
에서 squareroot
를 찾을 수 없어! 라는 뜻.sqrt
.def sum_to(n):
return n + sum_to(n-1)
sum_to(4)
Traceback (most recent call last):
File "/Users/soulfever/Documents/solved/1.py", line 3, in <module>
sum_to(4)
File "/Users/soulfever/Documents/solved/1.py", line 2, in sum_to
return n + sum_to(n-1)
File "/Users/soulfever/Documents/solved/1.py", line 2, in sum_to
return n + sum_to(n-1)
File "/Users/soulfever/Documents/solved/1.py", line 2, in sum_to
return n + sum_to(n-1)
[Previous line repeated 1022 more times]
RecursionError: maximum recursion depth exceeded
[Previous line repeated 1022 more times]
: 저 라인을 난 1022번 반복했어. (왜 재귀가 안끝나니?) 라는 뜻RecursionError: maximum recursion depth exceeded
: 최대 재귀 깊이(안고 있을 수 있는 재귀함수의 양)를 넘겼어. 라는 뜻