How to Get User Input in Python from Keyboard?
We already know, Programming is all about processing data. To process the data program needs information as an input. It can come in many ways.
Such as,
- input from the database
- information from external resources like machine/device/website
- by typing on the keyboard
- hovering or clicking by mouse
In this post, we are only interested in getting keyboard input from the user.
Table of Contents
How to Get User Input in Python?
There are two different inbuilt functions to read user input.
- raw_input()
- input()
Here in this post, we check out, how to receive input from the keyboard. And what is the difference between ‘raw_input()’ and input() function?
Python 2: Getting command line input using ‘raw_input()’
There is function raw_input(). Name itself depicts as it read raw data. It read user data as a string. It does not have the intelligence to interpret the type of data; the user has entered.
name = raw_input('Enter your keyboard input:')
All the data until you press the return key, will be read by this function.
By default, raw_input read the input data and gives in the form of a string.
Note: It is an in-built function, so you don’t need to import any external library.
Python 3: Keyboard input from the user using ‘input()’
It provides in build function ‘input()’ to read the input from the user.
name = input("What's your Good name? ")
Function input() reads the data from the user and interprets data according to the type of data entered by the user.
If the user enters integer/float value, it preserves the data type of input. It return same as integer/float value, unlike to raw_input() function.
Function input() is consider to be an intelligent function for its datatype interpretation.
Let’s start exploring it further.
What is the difference between input and raw_input function?
If you want to get input as integer or float in Python 2, you need to convert data into int or float after reading data using raw_input().
mode=int(raw_input('How old are you?:'))
As we are taking input from the user, we can not ensure if the given user input value type is numeric data type (float or int) or not.
So it is good practice to catch the error using try and except.
try: mode=int(raw_input('Keyboard Input:')) except ValueError: print "This is not a number."
Another way is you can check the data type of the input using isdigit()
.
mode = raw_input('Keyboard Input:') if(mode.isdigit()) "Number is an integer." else "Number is not an integer."
Handling error is good practice to prevent the code from crashing at runtime.
How to Get User Input in Python for Both Python version?
But now real confusion starts from here.
What about if you do not know the python version to whom you are going to run your code? Or do you want the code to run on both Python version?
It’s simple. Just check the version of the python and then put the if else statement to distinguish python input function as per the Python version.
Suppose if you are running code on Python 2.x, it should use raw_input() function to read user value. If the same is going to run on Python 3.x environment, it should use the input() function.
So the first task is to find the Python version number.
To get the Python version, you need to import sys
module.
Use the following code snippet to read user input for both python version.
from sys import version_info python_3 = version_info[0] #creates Boolean value #for a test that Python major version if python_3==3: response = input("Please enter your Good Name: ") else: response = raw_input("Please enter your Good Name: ")
Conclusion:
- Python 2.x has raw_input() function to get keyboard input. Likewise, Python 3.x has function input().
- The input() function has more intelligence to interpret the user input datatype than raw_input() function.
- If you want your code to work on both Python version, use condition by checking its python version.
Hope you got the solution, how to Get User Input in Python for both Python 2 and Python 3 version. If you have any question, feel free to ask me in a comment.
Happy Pythoning!
Comments
Madhumaya
Hi Aniruddha
I had few doubts ..
1. The example code you given in the page
name = input(“What’s your Good name? “)
agreed it’s asking from user. let say usser provide 12345 , then
name = 12345
then when i am checking the type of name .. console should return int type.. right ?
2. what does this lines means
from sys import version_info
3. what value this version_info will return
python_3 = version_info[0]
lets assume it return 3
then python_3 is equal to 3 .. right ?
but in if condition we are not camparing the python_3 at all then how the if condition coming true ?
Thanks In Advance
Aniruddha Chaudhari
Hi Madhumaya,
1) Every input you take from user using input() will be of string type, whether you pass ‘any string’ or ‘54545’.
In your case ‘name’ will be a string. You have to convert it to integer. You can do this by int(name).
2) This is the way of importing Python module/libraries. It is similar way of include header file in C/C++. In This case, we have imported version_info[] to get the Python version information. You will see “importing modules” in detail in upcoming tutorial.
3) That was a mistake in our code. I have corrected it. Thanks 🙂
Hope it is clear. Feel free to ask if you have any furher doubt.
ASMITA
the code to accept both the methods(for both python 2 and python 3) is showing indentation error in my system
Aniruddha Chaudhari
Kindly check if you are giving a consistent number of white spaces before the start of a line in “if” and “else” block.
If you are copy-pasting the content from this tutorial. Remove those white spaces and add again manually.
If you still face an issue. Feel free to post the screenshot in out Python community – https://www.facebook.com/groups/cs.python/
Megan Bawra
How can I know which one is python 2 & python 3 versions?
Aniruddha Chaudhari
Execute the following Python code
If the value of python_3 is 3, it is Python 3. Otherwise, Python 2.
Asrar Ahmed Farooqui
Hi Anirudha, I am a newbie and still learning the basics of programming.
My ques is I am trying to write a simple prog that will take the input from user and compare it with some value and will reply based on that. Please check below.
I want to have something like this. If the user inputted age is 17 or 18 or 19 I want to print you are on the right path and if it is more that I want to print the 2nd line. But the prob is it is always printing the 1st line.
Can you please show where I am going wrong?
Aniruddha Chaudhari
Hi Asrar, two changes are required here.
1. Whenever you take user input using
input()
, it always takes it as a string. You have to convert it to an integer using ‘int’.2. Change condition in first
if
statement asage == 17 or age == 18 or age == 19:
.Here is a code snippet with these two fixes.
venkat
Reverse each word in a sentence using python with a loop statement and check its a palindrome or not.
Aniruddha Chaudhari
If you are looking for the solution for your query, check these links.
Reverse string in Python.
Check if the string is a palindrome.