In this post, I’ll share the best top answers to read or convert input as numbers in Python.

## How to read input as a number in Python? Answer #1:

### Solution

Since Python 3, `input`

returns a string which you have to explicitly convert to `int`

s, with `int`

, like this

```
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
```

You can accept numbers of any base and convert them directly to base-10 with the `int`

function, like this

```
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
```

The second parameter tells what is the base of the numbers entered and then internally it understands and converts it. If the entered data is wrong it will throw a `ValueError`

.

```
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'
```

For values that can have a fractional component, the type would be `float`

rather than `int`

:

```
x = float(input("Enter a number:"))
```

### Differences between Python 2 and 3

**Summary**

- Python 2’s
`input`

function evaluated the received data, converting it to an integer implicitly (read the next section to understand the implication), but Python 3’s`input`

function does not do that anymore. - Python 2’s equivalent of Python 3’s
`input`

is the`raw_input`

function.

**Python 2.x**

There were two functions to get user input, called `input`

and `raw_input`

. The difference between them is, `raw_input`

doesn’t evaluate the data and returns as it is, in string form. But, `input`

will evaluate whatever you entered and the result of evaluation will be returned. For example,

```
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
```

The data `5 + 17`

is evaluated and the result is `22`

. When it evaluates the expression `5 + 17`

, it detects that you are adding two numbers and so the result will also be of the same `int`

type. So, the type conversion is done for free and `22`

is returned as the result of `input`

and stored in `data`

variable. You can think of `input`

as the `raw_input`

composed with an `eval`

call.

```
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
```

**Note:** you should be careful when you are using `input`

in Python 2.x. I explained why one should be careful when using it, in this answer.

But, `raw_input`

doesn’t evaluate the input and returns as it is, as a string.

```
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)
```

**Python 3.x**

Python 3.x’s `input`

and Python 2.x’s `raw_input`

are similar and `raw_input`

is not available in Python 3.x.

```
>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)
```

## How to convert the input to a number in Python? Answer #2:

In Python 3.x, `raw_input`

was renamed to `input`

and the Python 2.x `input`

was removed.

This means that, just like `raw_input`

, `input`

in Python 3.x always returns a string object.

To fix the problem, you need to explicitly make those inputs into integers by putting them in `int`

:

```
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
```

## How to read input as a number in Python? Answer #3:

For multiple integer in a single line, `map`

might be better.

```
arr = map(int, raw_input().split())
```

If the number is already known, (like 2 integers), you can use

`num1, num2 = map(int, raw_input().split())`

## How to read input as a number in Python? Answer #4:

Multiple questions require input for several integers on single line. The best way is to input the whole string of numbers one one line and then split them to integers. Here is a Python 3 version:

```
a = []
p = input()
p = p.split()
for i in p:
a.append(int(i))
```

Also a list comprehension can be used

```
p = input().split("whatever the seperator is")
```

And to convert all the inputs from string to int we do the following

```
x = [int(i) for i in p]
print(x, end=' ')
```

shall print the list elements in a straight line.

## Similar answer:

Convert to integers:

```
my_number = int(input("enter the number"))
```

Similarly for floating point numbers:

`my_decimalnumber = float(input("enter the number"))`

Hope you learned how to read input as a number in Python from this post.

Follow **Programming Articles** for more!