파이썬 인덱스 오류
조회수 1979회
import sys
class Calc :
def __init__(self,a,b):
self.a = a
self.b = b
def sum(self):
return (self.a + self.b)
def sub(self):
return (self.a - self.b)
a = sys.argv[1:3]
a1 = a[1]
a2 = a[2]
calc = Calc(a1,a2)
q = int(input("연산자를 고르시오\n1. 덧셈 2. 뺄셈 : "))
if q is 1 :
print(calc.sum())
elif q is 2 :
print(calc.sub())
else :
print("Error")
에서
a = sys.argv[1:3]
a1 = a[1]
a2 = a[2]
calc = Calc(a1,a2)
a2 = a[2] 부분에
이런 오류가 났습니다. 제대로 된 부분 같은데 왜 이런지 이해가 안가요
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
간단하게 디버깅하는 방법을 알려드립니다.
a = sys.argv[1:3] import pdb; pdb.set_trace() # 추가 a1 = a[1] a2 = a[2] calc = Calc(a1,a2)
위와 같이 수행하고 인자값을 넣고 엔터치면 디버거가 수행되면서 a1 = a[1] 에서 브레이크 포인트가 설정되어 멈추는 상황이 됩니다.
(pdb) p a
위와 같이 하면 a1 = a[1] 에 멈춰진 상태에서 a 변수값을 볼 수 있습니다.
a의 변수값이 올바르게 들어있는지 확인을 합니다.
그후 n은 한줄씩 실행 c는 계속실행이므로 c을 눌러 프로그램을 끝까지 수행시킵니다.
-
리스트의 인덱스는 1부터가 아니라 0부터 시작입니다.
a1 = a[0] #a1 = a[1] a2 = a[1] #a2 = a[2]
위와같이 변경하세요.
- 하지만 sys.argv로 입력 받으면 0에는 파일 이름이 들어가고 1부터 인자값이 들어가더군요 알 수 없는 사용자 2018.1.12 21:02
- 실행시 입력값을 어떻해 입력하셨는지요? 오류의 원인은 간단합니다. 저장되어 있는 리스트는 1개인데 있지도 않는 두번째 리스트를 요청해서 발생하는 겁니다. 정영훈 2018.1.13 18:38
댓글 입력