파이썬의 int() 함수에 대해서 질문 있습니다. int(input()) 에 1.00을 넣으면 int(1.00)과는 다르게 오류가 나는 데 왜 그런 가요?
조회수 4931회
다음 처럼 실행 시켰습니다.
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
을 한 번에 입력받는 것이었습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
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 definesx.__trunc__()
but notx.__int__()
, then return ifx.__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.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력