input() on python 2.7.5 vs 3.3.2

Mark Lawrence breamoreboy at yahoo.co.uk
Thu Dec 12 16:04:39 CET 2013


On 12/12/2013 14:56, Amit Saha wrote:
> On Fri, Dec 13, 2013 at 12:45 AM,  <stephen.boulet at gmail.com> wrote:
>> Can someone explain? Thanks.
>>
>> Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> x = input()
>> Hello there
>>>>> print(x)
>> Hello there
>
> In Python 3, input() considers an input as a string and returns the
> input as a string. This is the behavior of raw_input() in Python 2.
>
>>
>> Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> x = input()
>> Hello there
>> Traceback (most recent call last):
>>    File "<stdin>", line 1, in <module>
>>    File "<string>", line 1
>>      Hello there
>>                ^
>> SyntaxError: unexpected EOF while parsing
>
> In Python 2, input() expects valid Python as it's input. If you
> provide your input as 'Hello there' (a  Python string), it won't
> complain.
>
> HTH,
> Amit.
>

I much prefer Chris Angelico's response "The input() function in Python 
2.x is a very dangerous one - it's equivalent to eval(input()) in Python 3."

-- 
My fellow Pythonistas, ask not what our language can do for you, ask 
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list