2016-09-11 2 views
1

나는왜이 TypeError가 발생합니까?

오류가 책에 시도 문제

TypeError: range() integer end argument expected, got unicode. 

입니다 ....이 오류가 나는 그러나 내가 주위에 방법을보기 위해 고군분투 루프에서 변수를 포함 할 수 없음을 의미 믿는다 나에게 묻는다 :

프로그램을 준비하면 숫자를 묻는 메시지가 나타나고 올바른 시간 테이블 (최대 12)을 인쇄합니다.

def main(): 
    pass  
choice = raw_input("Which times table would you like")  
print ("This is the", choice , "'s times table to 12")  

var1 = choice*12 + 1 

for loopCounter in range (0,var1,choice): 
    print(loopCounter)  

if __name__ == '__main__': 
    main() 

어떤 제안 :

이 내 코드? 미리 감사드립니다.

+0

'raw_input()'을'int (raw_input())'로 변경하면 효과적 일 수 있습니다. 호기심에서 파이썬 3 대신 파이썬 2를 배우는 이유가 무엇입니까? – Kevin

답변

1

raw_input 함수는 문자열 인이 아닌 정수를 제공합니다. 당신은 정수 (예 : 당신이 열두하여 곱하거나 range 호출을 사용하려는 경우 등)로하려는 경우, 당신은 같은 뭔가가 필요 :

choice = int(raw_input("Which times table would you like")) 

이 단순한 솔루션 잠재적 인 문제는 (이 있습니다 예를 들어, 입력 한 내용이 이 아니고이 아닌 숫자 일 때 무슨 일이 발생합니까?)하지만 현재 문제를 해결하려면 충분해야합니다.

-1

프로그램이 약간 변경되어 실행됩니다.

def main(): 
    pass  
choice = input("Which times table would you like")  
print ("This is the " + choice + "'s times table to 12")  

var1 = int(choice)*12 + 1 

for loopCounter in range (0,var1,int(choice)): 
    print(loopCounter)  

if __name__ == '__main__': 
    main() 

이제 더 그래서 당신이 올바른 출력을 얻을 그것을 조정할 수 있습니다, 위에서 언급 한 컴파일하고 실행합니다.

0

이 오류는 정수를 가정 할 때 유니 코드 값을 가져 왔음을 의미합니다. choiceraw_input을 사용했기 때문에 이런 현상이 발생합니다.

편집 : raw_input 입력 내용을 해석하지 않습니다. input 않습니다.

관련 문제