Python raw_input Example (Input From Keyboard)

Posted on in Categories , , last updated December 18, 2016

I would like to read data from the user using Python. How do I read data using raw_input()?

raw_input() function reads a line from input (i.e. the user) and returns a string by stripping a trailing newline.
raw_input() and input() function in Python 2.x/3.x

Syntax

The syntax is as follows for Python v2.x:

mydata = raw_input('Prompt :')
print (mydata)

The syntax is as follows for Python v3.x as raw_input() was renamed to input() :

mydata = input('Prompt :')
print (mydata)

In the above example, a string called mydata stores users data. Please note that if you want to compare mydata, then convert mydata to a numeric variable using int().

Examples

In this example, read the user name using raw_input() and display back on the screen using print():

#!/usr/bin/python
name=raw_input('Enter your name : ')
print ("Hi %s, Let us be friends!" % name);

Sample outputs:

Enter your name : nixCraft
Hi nixCraft, Let us be friends!

In this following example, a string called choice converted to a numeric variable:

#!/usr/bin/python
# Version 1
## Show menu ##
print (30 * '-')
print ("   M A I N - M E N U")
print (30 * '-')
print ("1. Backup")
print ("2. User management")
print ("3. Reboot the server")
print (30 * '-')
 
## Get input ###
choice = raw_input('Enter your choice [1-3] : ')
 
### Convert string to int type ##
choice = int(choice)
 
### Take action as per selected menu-option ###
if choice == 1:
        print ("Starting backup...")
elif choice == 2:
        print ("Starting user management...")
elif choice == 3:
        print ("Rebooting the server...")
else:    ## default ##
        print ("Invalid number. Try again...")

OR

#!/usr/bin/python
# Version 2
print (30 * '-')
print ("   M A I N - M E N U")
print (30 * '-')
print ("1. Backup")
print ("2. User management")
print ("3. Reboot the server")
print (30 * '-')
 
###########################
## Robust error handling ##
## only accept int       ##
###########################
## Wait for valid input in while...not ###
is_valid=0
 
while not is_valid :
        try :
                choice = int ( raw_input('Enter your choice [1-3] : ') )
                is_valid = 1 ## set it to 1 to validate input and to terminate the while..not loop
        except ValueError, e :
                print ("'%s' is not a valid integer." % e.args[0].split(": ")[1])
 
### Take action as per selected menu-option ###
if choice == 1:
        print ("Starting backup...")
elif choice == 2:
        print ("Starting user management...")
elif choice == 3:
        print ("Rebooting the server...")
else:
        print ("Invalid number. Try again...")

Sample outputs (note down invalid inputs are detected on fly):

------------------------------
   M A I N - M E N U
------------------------------
1. Backup
2. User management
3. Reboot the server
------------------------------
Enter your choice [1-3] : x
''x'' is not a valid integer.
Enter your choice [1-3] : 
'''' is not a valid integer.
Enter your choice [1-3] : 1
Starting backup...

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

17 comment

  1. My vVersion _:D ::

    print "Welcome to Russian Roulette!!"
    
    time.sleep(2)
    
    number =  raw_input('Enter a number from 1 to 6 ')
    print ('you entered %s !' % number)
    
    
    q =  raw_input ('ARE you ready  ?! y or n   ' )
    
    if q == 'y':
        x = random.randrange(1,6)
        for i in range(20):
            print "BE READY !!"
        time.sleep(4)
        print ("my number is %x" % x)
        if x != int(number):
            print 'you are lucky'
        else:
            print ' BAAAAAAAAAAAAANGG !!!!!you`re dead! '
    
  2. Dear nixCraft,

    Thanks for a great scripting example. I’m a novice working on a simple Turtle drawing exercise and I’ve been struggling for hours to convert some raw_input into a variable that I could pass as an argument and your code worked for me when I was about to quit.

    Encouraged by my success ( via your help) I tried to improve my implementation by adding another exception so that non valid, or out of range integers would give the user another chance to input a number. like the exception for non integers does, instead of quitting the program with an error but I’m stumped.

    I tried making a list
    myintegers = [1,2,3]

    and adding this extra code

    choice = int for int in myintegers ( raw_input(‘Enter your choice [1-3] : ‘) )

    but I found that lists are made up of strings, not integers :(

    So I tried to cast my list of strings into a new list of integers :

    new_integers = [];
    for n in myintegers:
    new_integers.append(int(n));

    and tried
    choice = int for int in new_integers ( raw_input(‘Enter your choice [1-3] : ‘) )

    I suspect that it’s my way of checking if the integer is in the list that’s falling down.

    Any pointers?

    Thanks for sharing.

  3. Submit only your code, not the output, but make sure that you run the program and it gives the the desired output before submitting.

    # 2.1 Write a program to prompt the user for his or her name using raw_input. Also, prompt the hours and rate per hour using raw_input to compute gross pay. Use 35 hours and a rate of 2.75 per hour to test the program (the pay should be 96.25). You should use raw_input to read a string and float() to convert the string to a number. Finally print a statement so that it looks like the one below.

    # The output should look like the following but with your name instead of mine:

    Enter Name: Karolos

    Enter Hours: 35

    Enter Rate: 2.75

    The total Pay for Karolos is $ 96.25

    plzzzz help me !
    how do i do that?

  4. Why I can’t use raw_input in my Python 3.5.1 shell?

    name=raw_input('Enter your name : ')
    Traceback (most recent call last):
      File "", line 1, in 
        name=raw_input('Enter your name : ')
    NameError: name 'raw_input' is not defined

Leave a Comment