Python에서 사용자의 입력을 받는 방법이 두 가지가 있습니다.


input() 함수를 이용한 방법과 raw_input()을 이용한 방법으로 두 함수는 사용자 입력을 어떻게 받아들이냐의 차이입니다.


예제를 통해 두 가지 방법의 차이점을 알아보겠습니다.


input()의 경우 정수형으로 입력을 받습니다.


>>> a = input()

1234

>>> a

1234

>>> print a

1234


raw_input()의 경우 문자열로 입력을 받습니다.

>>> a = raw_input()

1234

>>> a

'1234'

>>> print a

1234


   


위의 경우 변수 a를 출력했을 때 '' 의 차이를 보고 정수형인지 문자열인지 알 수 있습니다.


a = input()을 했을 경우 '' 없이 asdf라고 입력을 하면 문법 에러가 발생하며 ''로 묶어 문자열임을 나타내야 에러 없이 사용할 수 있습니다.


즉, input은 eval(raw_input())을 한것과 같은 효과이기 때문에 단순히 asdf를 입력한다던가 공백을 전달할 경우 eval()의 문법에 맞지 않기 때문에 에러가 발생하게 됩니다.


반대로 raw_input()의 경우 공백 입력 시 그대로 공백을 출력해주는 것으로 input()와 raw_input()의 차이점을 알 수 있습니다. = )







저작자 표시 비영리 변경 금지
신고

파이썬 한 줄로 출력하는 방법 = )


Python 2.x 버전을 사용하면서 강좌를 볼 때 end=' '를 사용해서 print 결과를 한 줄에 출력하는 것을 종종 봤지만 계속 문법 에러를 발생시키면서 invalid syntax만 보여줬습니다.


2.4버전이 너무 낮은건가 싶어서 2.7로 올려도 계속 같은 에러를 보여주길래 그제서야 구글링 해봤습니다.



구글링 결과 end=' ' 는 python 3.x 버전부터 지원되는 문법이라 2.x버전에서는 에러가 발생하게 되고 2.x버전에서는 다른 방법을 사용해야합니다.


※ 참고 : http://stackoverflow.com/questions/2456148/python-print-end


Python 3.x

for i in range(10):

print( i, end=' ' )


# Result

0 1 2 3 4 5 6 7 8 9


Python 2.x

for i in range(10):

print( i, )


# Result

0 1 2 3 4 5 6 7 8 9


위와 같이 Python 2.x 버전에서는 단순히 출력하는 변수 뒤에 ','만 붙여 주면 한 줄로 출력해줍니다. = )







저작자 표시 비영리 변경 금지
신고

+ Recent posts

티스토리 툴바