3

Recently I started studying about Python and I have come across one problem. Suppose you are given 3 space separated integers, say 4 5 6
When I use input() method and take the input, it is showing me an error.

Traceback (most recent call last):
  File "P_Try.py", line 1, in <module>
    x= input();
  File "<string>", line 1
    4 5 6 
      ^
SyntaxError: invalid syntax

I guess, since it is in one line, it is assuming it to be a string, but finds out the integer at the location 2 (index starting from 0). I tried alternative method that I took the input as a string using raw_input() method and and wherever I find a number, I cast it as int and append it to the list.

Is there any better way of accomplishing the task?

thefourtheye
  • 233,700
  • 52
  • 457
  • 497

4 Answers4

5

Function input() is interpreting your input as a Python code, I know, it's little odd. To get raw input (string containing user typed characters), just use raw_input() function instead.

Tupteq
  • 2,986
  • 1
  • 21
  • 30
  • 1
    Just to add to this answer. If you use Python 3, you can simply use input. If you are starting off, you should probably start using Python 3 instead. – idjaw Sep 20 '15 at 13:03
1

When you use input(), python tries to interpret the input, therefore getting confused when it finds a space.

You correctly suggested using raw_input().

inp = raw_input() # get raw input
lst = inp.split(" ") # split into list
num_lst = map(int, lst) # apply int() to all items
Atrotors
  • 765
  • 2
  • 7
  • 25
1

If you have just started studying then use python3. input line of your code would work fine. If you need to input 3 integers, you can use code like this:

x = input()
result = [ int(i) for i in x.split(' ')]
Eriks Dobelis
  • 913
  • 7
  • 16
0

try this:

a = []
a += map(int,raw_input("Enter the integers\n").split(" "))
print a
Racil Hilan
  • 24,690
  • 13
  • 50
  • 55
Abhishek Bera
  • 121
  • 1
  • 5