Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 프로그램 오류 수정 방법: 들여쓰기 오류와 정의되지 않은 변수 해결하기

공유해 주신 파이썬 코드에서 발생하는 문제는 크게 두 가지입니다. 각각의 원인과 해결 방법을 살펴보겠습니다.

1. 들여쓰기(Indentation) 오류

첫 번째 문제는 if 문 바로 아래의 코드 블록이 들여쓰기 되어 있지 않아 발생합니다. 파이썬은 중괄호({}) 대신 들여쓰기로 코드 블록의 범위를 구분하는 언어입니다. 따라서 if, for, while 등의 문장 아래에 오는 실행 코드는 반드시 공백 4칸(또는 탭 1개)으로 들여쓰기를 해야 합니다.

들여쓰기가 없으면 IndentationError: expected an indented block 오류가 발생합니다.

2. 정의되지 않은 변수 오류 (NameError)

두 번째 문제는 name 변수가 선언되거나 값이 할당되기 전에 사용되었기 때문에 발생합니다. 파이썬에서 변수는 값을 먼저 할당한 후에만 사용할 수 있으며, 그렇지 않으면 NameError: name 'name' is not defined 오류가 나타납니다.

사용자의 이름을 입력받으려면 input() 함수를 통해 name 변수에 값을 저장해 주어야 합니다.

수정된 전체 코드

위의 두 가지 문제를 모두 해결하고, 조건문을 elif로 연결해 로직을 더 깔끔하게 정리했습니다.

print("Come-on in. Need help with any bags?")
bag = input('(1) Yes please  (2) Nah, thanks  (3) Ill get em later  TYPE THE NUMBER ONLY')

if bag == '1':
    print("Ok, ill be right there!")

elif bag == '2':
    print("Okee, see ya inside. Heh, how rude of me? I'm Daniel by the way, ya?")
    name = input("Daniel: Um, what's your name? ")
    print("Dan: K, nice to meet ya " + name)

elif bag == '3':
    print("Heh, ya remind me of someone I know... *cough* me *cough*")
    print("Oh... nearly forgot. Names Daniel, ya?")
    name = input("Daniel: Eh... and you are? ")
    print("Dan: Cool, nice to meet you " + name)

추가 팁

  • 괄호 제거: bag == ('1')처럼 비교 대상을 괄호로 감싸는 것은 불필요합니다. bag == '1'처럼 간결하게 작성하는 것이 좋습니다.
  • elif 활용: 여러 개의 독립된 if 문보다 if - elif - else 구조를 사용하면 조건이 하나만 실행되므로 논리가 더 명확해집니다.
  • 일관된 들여쓰기: 탭과 공백을 섞어 쓰면 TabError가 발생할 수 있으니, 공백 4칸으로 통일하는 것을 권장합니다.

이제 코드를 실행하면 사용자의 선택에 따라 대화가 자연스럽게 진행되고, 입력받은 이름이 정상적으로 출력될 것입니다.