Prompting for user input in Python 3



examples/basics/prompt3.py

def main():
    print("We have a question!")
    name = input('Your name: ')
    print('Hello ' + name + ', how are you?')

main()

What happens if you run this using Python 2 ?

/usr/bin/python2 prompt3.py

  • What happens if we type in "Foo Bar"
We have a question!
Your name: Foo Bar
Your name: Traceback (most recent call last):
  File "prompt3.py", line 5, in <module>
    main()
  File "prompt3.py", line 2, in main
    name = input('Your name: ')
  File "<string>", line 1
    Foo Bar
          ^
SyntaxError: unexpected EOF while parsing

  • What happens if we type in just "Foo" - no spaces:
We have a question!
Your name: Foo
Your name: Traceback (most recent call last):
  File "prompt3.py", line 5, in <module>
    main()
  File "prompt3.py", line 2, in main
    name = input('Your name: ')
  File "<string>", line 1, in <module>
NameError: name 'Foo' is not defined

  • The next example shows a way to exploit the input function in Python 2 to delete the currently running script. You know, just for fun.
We have a question!
Your name: __import__("os").unlink(__file__) or "Hudini"
Hello Hudini, how are you?