문자열과 숫자와의 차이점 



사용자 입력(User input)은 사람이 키보드로 입력하는 것으로 입력되는 것은 문자가 될 수도 있고 

방향키나 ENTER 키가 될 수도 있으며, 그 외의 다른 모든 것들이 될 수가 있다.


파이썬에서 사용자 입력은 문자열로 간주한다.


10 이라는 숫자를 입력할 경우에 파이썬은 숫자 10을 숫자가 아닌 문자열 변수에 저장한다는 것이다. 


예를 들어 i 문에서 변수 age의 값을 다음과 같이 비교한다고 해보자.


>>> if age == 10:

print("What's the best way to speak to a monster?")

print("From as for away as possible!")



여기서 우리가 다음과 같이 변수 age에 숫자 10을 설정했다고 하자.


>>> age = 10

>>> if age == 10:

print("What's the best way to speak to a monster?")

print("From as for away as possible!")


What's the best way to speak to a monster?

From as for away as possible!

>>> 


print 문이 실행된다.



>>> age = '10'

>>> if age == 10:

print("What's the best way to speak to a monster?")

print("From as for away as possible!")


>>> 


이번에는 print 문이 실행되지 않는다.

왜나하면 파이썬은 홀따음표(문자열)에 있는 숫자를 숫자로 보지 않기 때문이다. 

int 를 사용하여 문자열 '10'을 숫자로 변환할 수 있다.




변수 converted_age는 숫자 10을 가지게 될 것이다. 


숫자를 문자열로 변환하려면 str을 사용하자.


여기서 converted_age는 숫자 10 대신에 문자열 10을 갖게 될 것이다. 


age = '10' 로 설정되었을 때 if age == 10 구문에서 아무것도 출력하지 않았던 것을 기억하는가?

만약 if 구문에서 판단하기 전에 그 변수를 변환 시켰다면 완전히 다른 결과가 나왔을 것이다.

 




하지만 소수점이 있는 숫자를 변환하려고 한다면 다음과 같은 에러가 날 것이다. 

그 이유는 int 함수는 정수형만 받기 때문이다. 




valueError는 사용하려고 하는 값이 올바르지 않다는 것을 알려주는 것이다. 

이 문제를 해결하려면 int 대신 float 함수를 사용하면된다.

float 함수는 정수가 아닌 숫자들의 처리할 수 있다.




숫자가 아닌 내용이 들어있는 문자열을 변환하려고 할 경우에도 ValueError가 날 것이다.