13.4 사용자가 입력한 값에 if 조건문 사용하기
, 이 수은님이 작성이 강의에서 4:05쯤에 질문있습니다.
\
x=int(input()) 은 input()값을 int 값으로 변환해주는 것 아닌가요?ㅜㅜ
이부분이 이해가 가지않아요 . ..
만약에 input에 10.1을 넣으면 int를 통해 10이 되는 거 아니었나요?ㅜㅜㅜ
Re: 13.4 사용자가 입력한 값에 if 조건문 사용하기
, 도장_ 관리자님이 작성먼저 동작을 이해할 필요가 있습니다.
>>> a = input()
11.11>>> type(a)
<class 'str'>
입력은 무조건 문자열입니다. 따라서 type 함수로 확인하면 class 'str'처럼 문자열이라고 알려줍니다.
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
b = int(a)
ValueError: invalid literal for int() with base 10: '11.11'
invalid literal for int()는 int 함수에 적절하지 않은 리터럴이라는 뜻입니다.
base 10이니까 10진수이고, 11.11은 십진수로 해석할 수 있는 문자열 리터럴이 아니라는 뜻이죠.
>>> type(c)
<class 'float'>
실수는 실수로 해석해야 합니다.
따라서 float 함수로 변환하고, type을 검사하면 class 'float'로 실수입니다.
>>> type(d)
<class 'int'>
>>> d
11
>>>
이제 숫자 타입인 실수 float에서는 정수 int로 변환할 수 있습니다.
int 함수로 변환하고 type 함수로 검사하면 class 'int'로 정수 타입인 것을 알 수 있습니다.
애초에 입력 값이 정수인지 실수인지 명확하게 정해야 하고
모든 입력은 문자열이고
정수 입력이면 int 함수
실수 입력아면 float 함수를 사용합니다.
입력은 실수로 하면서 정수로 가져오고 싶다면 위와 같이 float -> int로 두 번 변환해야 합니다. 그런데 이런 프로그램이라면 문제 자체가 잘못된 것이겠죠.
나이는? 정수만 사용. 3.5세는 없습니다.
체중은? 실수만 사용. 60.0kg이나 60.5kg이겠죠. float 함수에서 입력은 60으로 해도 60.0으로 실수로 입력이 됩니다. 정수보단 실수가 숫자의 표현 범위가 더 넓으니까 당연하겠죠. 정수는 60.5를 표현할 수 없습니다. 그러니까 에러.
나이를 입력하는데 3.5를 입력한다? 에러.