파이썬 invalid literal for int

조회수 991회
import sys

n, k =map(int,sys.stdin.readline().split())
s = list(map(int,sys.stdin.readline().split()))

# 구간 수만큼 반복한다.
for i in range(k):
    a, b = list(map(int,sys.stdin.readline().split()))

    # 구간의 크기만큼 나눠준다.
    # sum함수를 통해 구간의 모든 수를 더한다.
    slash = b-a +1
    average = sum(s[a-1:b])/slash

    # 소수 셋째 자리에서 반올림한다.
    print("%0.2f" % average)

빌려온 Code인데 이러한 오류가 뜨는 이유와 변경해주신 코드를 원합니다.

ValueError: invalid literal for int() with base 10: '&'
Traceback (most recent call last):
  File "c:\python\test.py", line 3, in <module>
    n, k =map(int,sys.stdin.readline().split())
    ^^^^

1 답변

  • 오류가 영어로 되어 있으니까 우리말로 옮겨 드릴게요.

    값오류: 10진법 기준으로 다음을 문자적으로 int()할 수 없음: '&'
    추적 (오류에 가장 가까운 것부터):
      파일 "c:\python\test.py"의 3번째 줄, <module>에서
        n, k =map(int,sys.stdin.readline().split())
        👆 여기
    

    뭐라는지 모르겠지만 아무튼 3번째 줄이 문제군요.
    3번째 줄부터 그냥 전부다 삭제하고, 이것만 딱 넣어서 실행해 보시면 뭐가 나오나요?

    import system
    print(sys.stdin.readline().split())
    

    만약 여기에 숫자가 아닌 것("&" 등)이 포함돼 있었다면, 그걸 숫자로 변환하려는 map(int, 어쩌구)는 무조건 실패하겠군요. 숫자가 아닌 게 있을 때 뭘 해야 하는 거죠? 사용자에게 욕을 하고 종료를 하면 되나요? 전부 0으로 대체하면 되나요? 잘 모르겠군요! 코드의 목적이 뭔지 모르겠어서 "변경해주신 코드"를 드리기는 좀 어렵겠네요. 애초에 "빌려온 Code"라면 코드의 저작권이 질문자님께 없을 텐데... 함부로 고쳐 드렸다가 그걸로 소송을 당하면... 그건 누가 책임을 지나요?

    저는 여기까지만 참견하겠습니다. 건투를 빕니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)