I'm Using Python 3.4. I receive the error:
Traceback (most recent call last):
File "H:/GCSE's/Computing/Assesment/1/School Grading Script.py", line 44, in <module>
if answer== eval(num1<currentop>num2):
TypeError: unorderable types: int() < str()
when trying to execute this code
operator=["+","-","*"]
num1=random.randint(0,10)
num2=random.randint(0,10)
currentop=random.choice(operator)
answer = input("What is " + str(num1) + str(currentop) + str(num2) + "?\n")
if answer== eval(num1<currentop>num2):
print("correct")
else:
print(incorrect)
What I want to do is to check the answer against the randomly generated variables
Using eval
is really bad practice, and should be avoided. For what you are trying to do, you should be making use of operator.
Change your data structure to use a dictionary to make it easier on you to perform your operations. Something like this:
import operator
operators = {
"+": operator.add
}
num1 = 4
num2 = 5
res = operators.get("+")(num1, num2)
Output of res:
9
To apply your random implementation in to this, you make use of the dictionaries keys()
to do a random.choice
on that:
random.choice(list(operators.keys()))
Simple example applying random:
import operator
import random
operators = {
"+": operator.add,
"-": operator.sub,
"*": operator.mul
}
num1 = 4
num2 = 5
res = operators.get(random.choice(list(operators.keys())))(num1, num2)