<p>下面是代码的错误</p>
<pre><code>import time
import random
question = 0
score = 0
name = input("What is your full name?")
print ("Hello " + name, "welcome to The Arithmetic Quiz")
time.sleep(2)
operand1 = list(range(2, 12))
#Choice works fine with ranges
#No need to transform it with a list
operators = ["+"]
operand2 = list(range(2, 12))
#Using the for loop is more Pythonic
while question < 10:
user_answer=int(input(str(random.choice(operand1)) + random.choice(operators) + str(random.choice(operand2))))
if operators=='+': ##Over here you were comparing a list to a str
expected_answer==operand1 + operand2 ##This is a boolean operator not an int value
if user_answer==expected_answer:
print('This is correct!')
score = score + 1
question = question + 1
time.sleep(2)
else:
print('This is incorrect!')
question = question + 1
time.sleep(2)
</code></pre>
<p>正如Kupiakos所说,有很多方法可以优化代码,他已经介绍了其中的大部分。我将指出解决上述问题的方法。你知道吗</p>
<pre><code>import time
from random import choice, randint
question, score = 0, 0
name = input("What is your full name?\n>>> ")
print ("Hello {} welcome to The Arithmetic Quiz\n".format(name))
time.sleep(2)
for _ in range(10):
operand1, operand2 = [randint(2, 12) for _ in range(2)]
op = choice(['+'])##You have to store the value so that you can compare it later
user_answer=int(input('{0}{2}{1}\n>>> '.format(operand1, operand2, op) ))
if op == '+':
expected_answer = operand1 + operand2
if user_answer == expected_answer:
print('This is correct!')
score += 1
question += 1
time.sleep(2)
else:
print('This is incorrect!')
question = question + 1
time.sleep(2)
print('Your score is: {} points'.format(score))
</code></pre>
<p>祝你的学生好运。你知道吗</p>