1. 문제를 이해하려고 하기.

버그를 찾기 위해서는 결국에는 머릿속에서 이해가 되야하므로, 실타래가 꼬인것을 풀어내려고 노력해야한다.

버그 찾기 예시 1) range함수

# 버그 예시def my_function():
  for i in range(1, 20):
    if i == 20:
      print("You got it")
my_function()

# 해결def my_function():
  for i in range(1, 20+1):
    if i == 20:
      print("You got it")
my_function()
  1. 버그를 다시 구현해보기

버그를 직접 실행해보는것이 중요하다.

버그 찾기 예시 2) 인덱스 오류

# 버그 예시 2from random import randint
dice_imgs = ["❶", "❷", "❸", "❹", "❺", "❻"]
dice_num = randint(1, 6)
print(dice_imgs[dice_num])

# 해결from random import randint
dice_imgs = ["❶", "❷", "❸", "❹", "❺", "❻"]
dice_num = randint(0,5)
print(dice_imgs[dice_num])

위 코드를 해결하기 위해서 아래 코드의 인덱스를 수정해가면서 코드를 실행.

print(dice_imgs[인덱스])
  1. 컴퓨터의 입장에서 생각해보기

컴퓨터가 코드를 한줄 한줄 실행할때 무슨일이 일어나는지 생각해보기.

아래 코드에서 1994년도는 컴퓨터 입장에서 어떠한 조건문에도 포함되지 않았다.

# 버그 예시 3
year = int(input("What's your year of birth?"))
if year > 1980 and year < 1994:
  print("You are a millenial.")
elif year > 1994:
  print("You are a Gen Z.")

# 해결elif year >= 1994:
  print("You are a Gen Z.")
  1. 오류 구문을 검색해보기

콘솔에서 발생한 오류 구문을 검색해본다.

# Fix the Errors
age = input("How old are you?")
if age > 18:
print("You can drive at age {age}.")

# 오류 구문
IndentationError
TypeError

# 해결# Fix the Errors
age = int(input("How old are you?"))
if age > 18:
    print(f"You can drive at age {age}.")
  1. print()함수 사용하기.

print()함수를 사용하여 중간중간 확인하는것도 좋은 방법이다.

#버그
pages = 0
word_per_page = 0
pages = int(input("Number of pages: "))
word_per_page == int(input("Number of words per page: "))
total_words = pages * word_per_page
print(total_words)

#해결
pages = 0
word_per_page = 0
pages = int(input("Number of pages: "))
word_per_page = int(input("Number of words per page: "))
total_words = pages * word_per_page
print(f"pages = {pages}")
print(f"word_per_page = {word_per_page}")
print(total_words)