我想编写一个简单的数学测试程序。我想生成两个随机数,并让用户输入这两个数字的总和。我知道怎么做但我希望程序提出十次问题,然后显示用户得到的十分之一的计算数。我无法解决如何重复这个问题,而无需在代码中一次又一次地写出来!请告诉我这是否与for循环有关,还是有另外一种方法可以做到这一点?谢谢!
答案 0 :(得分:4)
你学过循环了吗?我使用for
循环。
for _ in range(10):
number1 = # not sure how you're
number2 = # generating your numbers
answer = int(input(str(number1)+str(number2)+"= ..."))
# you may want to do something different here in case the user
# enters a non-integer, e.g. "I don't know" which will currently
# error out your code with a ValueError
if answer == number1+number2:
# Handle correct answer
else:
# Handle incorrect answer
请注意_
中的for _ in range(10)
不是特殊字符,它只是程序员中常用的习语,说'&34;我需要指定此值变量,但我实际上不必使用该值,所以无视。"在这种情况下,_
为0
,然后为1
,然后是2
等,一直到9
,但由于我们永远不必在任何地方使用这些数字,我们只需将其分配给_
,告诉编码人员必须维护我们的工作"不要注意这一点。"
以下是您可以处理用户输入的可能方式:
for _ in range(10):
# generate number1 and number2 here
validated = False
while not validated:
try:
answer = int(input("your input prompt goes here"))
validated = True # your code will error before here
except ValueError:
print("Your answer must be an integer")
# the rest of your code
答案 1 :(得分:0)
是的for循环是要走的路。 这是一个基本代码,可以满足您的要求:
from random import randint
NB_QUESTIONS = 1
correct = 0
for _ in range(NB_QUESTIONS):
rand1 = randint(0, 10)
rand2 = randint(0, 10)
answer = raw_input("What's the sum of %d + %d? " % (rand1, rand2))
answer = int(answer)
if answer == rand1 + rand2:
correct += 1
print 'You got %d/%d correct answers' % (correct, NB_QUESTIONS)
raw_input函数接受参数:提示(将在屏幕上打印的内容)see doc
该函数返回一个字符串,因此您需要在使用它之前将其转换为int
最后一步是检查结果是否良好,如果正确,则将正确答案的数量加1
通过打印正确答案的数量来完成程序。