파이썬의 int() 함수에 대해서 질문 있습니다. int(input()) 에 1.00을 넣으면 int(1.00)과는 다르게 오류가 나는 데 왜 그런 가요?

조회수 4930회

다음 처럼 실행 시켰습니다.

c = int(input())
1.00
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    c = int(input())
ValueError: invalid literal for int() with base 10: '1.00'

b = int(1.00)
print(b)
1

제가 볼 때는 c와 b 둘 다 1이 나와야 할 것 같은데 다른 결과가 나와버리네요. int 함수 자체의 오류인 것 같은 데 어떻게 수정해야 하나요

참고로 원래 계획은

a = list(map(int, input().split()))

이렇게 해서

1.00 -6.00 11.00 -6.00

을 한 번에 입력받는 것이었습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 문제 확인 했습니다. 소수점이 포함 되어 있는 문자열은 바로 int()로 집어넣을 수 없군요. a = list(map(float, input().split()))으로 바꿔서 해결했습니다. 알 수 없는 사용자 2017.12.19 21:30

1 답변

  • 코멘트를 보니 이미 답변을 찾으신 것 같네요. 그래도 나중에 이 글을 찾아오시는 분들을 위해 에러가 발생한 정확한 이유를 설명드리겠습니다.

    int는 인자의 타입에 따라 다른 행동을 하는데요.

    1. int(x) 에 x가 숫자라면

    int 함수는 x 의 숨겨진 함수인 x.__int__()를 리턴합니다.

    2. int(x)에 x가 문자열이라면

    x는 무조건 0-9로만 이루어진(radix base) 정수여야합니다. radix-base가 아닌 다른 무언가가 포함된 경우, int 함수는 이를 처리하지 못해 에러를 내뱉습니다.

    더 자세한 내용은 관련 문서를 참고하시면 될 듯합니다.

    Return an integer object constructed from a number or string x, or return 0 if no arguments are given. If x is a number, return x.__int__(). If x defines x.__trunc__() but not x.__int__(), then return if x.__trunc__(). For floating point numbers, this truncates towards zero.

    If x is not a number or if base is given, then x must be a string, bytes, or bytearray instance representing an integer literal in radix base.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)