The validation doesnt work. im not sure why, is there a way to validate a string. The questions asked are endless i need 10 questions to be asked
import random name=(input("Please enter your name")) print("welcome",name,"the arithmetic is about to start") question=0 while question<10: number=random.randint(1,10) numbers=random.randint(1,10) arith=random.choice("+" "-" "/") if arith=="+": print(number,arith,numbers) answer=number+numbers if arith=="-": print(number,arith,numbers) answer=number-numbers if arith=="/": print(number,arith,numbers) answer=number/numbers while True: try: usersanswer= int(input()) except ValueError: print ("That is not a valid answer") continue if usersanswer==answer: print("correct") break else: print("incorrct")
The validation doesnt work. im not sure why, is there a way to validate a string
Advertisement
Answer
In the third line, you ask for input
. But a name is a string, so you need raw_input
. raw_input
takes strings, input
only takes numerical values.
Python 2.7 getting user input and manipulating as string without quotations
Nowhere in your code do you update the variable questions
, which I am guessing is a counter. You have to update that whenever a question is asked, using question += 1
.
Finally, your code at the end does not really make sense. Based off the code, it checks for whether or not it is a string, but then compares it to the answer regardless. The if
statement needs to be within the try
.
The else
statement does not match any outer indentation.
Finally, because of the while True:
your code will never exit the loop unless the answer is wrong. At the point the entire program terminates. I see what kind of program you are trying to write, but the parameters for random number generation have to be within some kind of a while question <= 10
loop. As of now, only two lines in the program are being affected by that first while
loop.
EDIT: I am working on a good example code. Hopefully this answer will help until I can finish it. EDIT: Here is code that shows how it works within a while loop.
import random from random import randint name = raw_input("Hi, what is your name?n") # Asks for name print "Hi " +name+ " let's get started!" score_count = 0 question_count = 0 # creates counter while question_count <= 10: # Everything MUST BE WITHIN THIS LOOP # makes numbers and operator first_number = randint(1,10) second_number = randint(1,10) oper = random.choice("+""-""*") # determines the problem if oper == "+": answer = first_number + second_number print first_number,second_number,oper elif oper == "-": answer = first_number - second_number print first_number,second_number,oper elif oper == "*": answer = first_number*second_number print first_number, second_number, oper user_answer = int(raw_input("Your answer: ")) if user_answer != answer: print 'Wrong answer! try again!' user_answer = int(raw_input('Your answer: ')) if user_answer == answer: # exits the while loop when the correct answer is given if question_count < 10: print 'Well done! Now onto question number {0}'.format(question_count+1) score_count += 1 elif question_count == 10: print 'Well done! You are done!' score_count += 1 else: print 'Something is wrong.' question_count += 1 # updates the variable # GOES BACK TO THE BEGINNING UNTIL question_count IS GREATER THAN OR EQUAL TO 10 print "Your score was: {}".format(score_count)
Happy coding! and best of luck!