Question

I used the following code for building a simple Python program which gets input from user.

Name = raw_input('Enter your name: ')
Age = raw_input('Enter you age:')
Qualifications = raw_input('Enter you Qualification(s):')
A = raw_input()

print "Hello" +'.'+ "Your Name is " + Name + ". " + "Your Age is " + Age + ". " + "Your Qualification(s) is/are:" + Qualifications + "." 
print "If the above data is correct, type yes. If not, type no. Typing no will restart he program and make you write the form again." + A
if A in ['y', 'Y', 'yes', 'Yes', 'YES']:
    print 'Thanks for your submission'
if A in ['No' , 'no' , 'NO' ,'n' , 'N']:
    reload()

The program finishes before the if command.

Was it helpful?

Solution

If you give anything but ['y', 'Y', 'yes', 'Yes', 'YES'] or ['No' , 'no' , 'NO' ,'n' , 'N'], your program will finish and not execute any of the statements in their respective if-clauses.

The reload() function will not do what you expect. It's used to reload a module and should be used inside the interpreter. It also requires a previously imported module as it's argument, calling it without will raise a TypeError.

So in order to actually ask the questions again, you'll need a loop. For example:

while True:
    name = raw_input('Enter your name: ')
    age = raw_input('Enter your age: ')
    qualifications = raw_input('Enter your Qualification(s): ')

    print "Hello. Your name is {}. Your age is {}. Your qualifications are: {}".format(name, age, qualifications)
    quit = raw_input("Is the above data correct [yY]? ").lower() # notice the lower()
    if quit in ("y", "yes"):
        break
    else:
        # If the input was anything but y, yes or any variation of those.
        # for example no, foo, bar, asdf..
        print "Rewrite the form below"

If you now input anything else than a y, Y or any variation of yes, the program will ask the questions again.

OTHER TIPS

Move your A raw_input line after you print the "Your name is..." and stuff. Like this:

I also made the script keep asking to restart until the input is valid.

Name = raw_input('Enter your name: ')
Age = raw_input('Enter you age:')
Qualifications = raw_input('Enter you Qualification(s):')

print "Hello" +'.'+ "Your Name is " + Name + ". " + "Your Age is " + Age + ". " + "Your Qualification(s) is/are:" + Qualifications + "."
print "If the above data is correct, type yes. If not, type no. Typing no will restart he program and make you write the form again."

yes = ['y', 'Y', 'yes', 'Yes', 'YES']
no = ['No' , 'no' , 'NO' ,'n' , 'N']

A = ''

while A not in (yes+no):   # keep asking until the answer is a valid yes/no
    A = raw_input("Again?: ")

if A in yes:
    print 'Thanks for your submission'
if A in no:
    reload()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top