본문으로 건너뛰기
실습하기

파이썬 코드 디버깅을 위한 프롬프트 작성법

프로그래밍을 하다 보면 예상치 못한 오류가 발생하는 경우가 많습니다.

이러한 오류를 해결하려면 효율적인 디버깅(Debugging)이 필요합니다.

디버깅은 코드에서 발생한 오류를 찾아내고, 그 원인을 분석하여 수정하는 과정을 뜻합니다.

프로그램의 오류를 뜻하는 버그(Bug)를 제거하는 것이 디버깅의 목적입니다.

이번 수업에서는 AI를 활용한 파이썬 코드 디버깅을 위한 효과적인 프롬프트 작성법을 소개합니다.


디버깅을 효율적으로 하는 방법

디버깅의 핵심은 오류가 발생하는 상황을 재현하고, 문제의 원인을 단계별로 좁혀가는 것입니다.

이를 위해 프린트 문(print statements)으로 주요 변수 및 중간 결과값을 출력하며 오류를 찾거나, 디버깅 도구를 활용해 코드를 한 줄씩 실행하면서 변수의 상태를 확인하는 것이 일반적입니다.

하지만 코드가 매우 복잡한 경우에는 이러한 방식의 디버깅이 다소 비효율적일 수 있습니다.

코드를 한줄씩 디버깅 하는 것 보다는, AI에게 코드를 분석하고 오류를 수정하도록 요청하는 것이 더 효율적입니다.


AI에게 도움받는 프롬프트 작성법

AI를 활용해 파이썬 코드를 디버깅할 때는 코드의 의도와 파이썬 실행 환경에서 제공하는 에러 메시지를 전달하는 것이 좋습니다.


코드 오류 디버깅하기

단순 코드 오류 디버깅
아래는 두 숫자를 더하는 파이썬 함수이며, 실행 시 에러가 발생합니다.
에러 메시지를 확인하고, 오류를 수정해 주세요.

### 파이썬 코드
def add_numbers(a, b):
return a + b

result = add_numbers(5, '10')
print("Result:", result)

### 에러 메시지
TypeError: unsupported operand type(s) for +: 'int' and 'str'

위와 같이 코드의 의도(두 숫자를 더하는 함수)와 에러 메시지(TypeError: unsupported operand type(s) for +: 'int' and 'str')를 함께 전달하면 AI가 더 빠르게 오류를 찾아 수정할 수 있습니다.


오류는 없지만 원하는 결과를 얻지 못할 때

이외에도 AI와 코드를 디버깅할 때는 재현 가능한 예시를 함께 제공하는 것이 좋습니다.

상황에 따라 프로그램 실행 환경(예: Windows, MacOS, Python 버전 등)을 명시하는 것도 도움이 됩니다.

디버깅을 위한 프롬프트 작성법
### 지시문
아래는 주어진 리스트를 내림차순으로 정렬하는 파이썬 코드입니다.
코드 실행 결과, Result의 값으로 None이 출력됩니다.
이를 수정하여 리스트를 내림차순으로 정렬한 결과를 반환하는 함수를 작성해 주세요.

def sort_numbers(numbers):
return numbers.sort(reverse=True)

### 프로그램 실행 환경
Windows, Python 3.8.5 버전

### 재현 가능한 예시
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

def sort_numbers(numbers):
return numbers.sort(reverse=True)

result = sort_numbers(numbers)
print("Result:", result)

위와 같이 프롬프트에 코드의 의도, 에러 메시지, 프로그램의 실행 환경, 재현 가능한 예시를 함께 제공하면 AI가 더 정확하게 코드를 수정할 수 있습니다.


sort_numbers 함수의 반환값이 None인 이유

sort() 메서드는 인자로 전달된 리스트 자체를 정렬하고, 반환값이 없습니다.

numbers.sort(reverse=True) 코드를 실행하면 numbers 리스트 자체가 내림차순으로 정렬되며, return으로 반환되는 값은 None 입니다.

이와 같이 리스트를 내림차순으로 정렬한 후 그 결과를 반환하려면 sorted() 함수를 사용해야 합니다.

sorted() 함수는 원본 리스트를 변경하지 않고, 정렬된 새로운 리스트를 반환합니다.

수정된 코드는 다음과 같습니다.

수정된 코드
def sort_numbers(numbers):
return sorted(numbers, reverse=True)

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

result = sort_numbers(numbers)

# 정렬된 리스트 출력
print("Result:", result)

위와 같이 수정된 코드는 numbers 리스트를 내림차순으로 정렬한 새로운 리스트를 반환하며, result 변수에 그 결과가 저장됩니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!