用Python重复向用户提问十次

时间:2014-03-18 21:34:23

标签: python for-loop python-3.x

我想编写一个简单的数学测试程序。我想生成两个随机数,并让用户输入这两个数字的总和。我知道怎么做但我希望程序提出十次问题,然后显示用户得到的十分之一的计算数。我无法解决如何重复这个问题,而无需在代码中一次又一次地写出来!请告诉我这是否与for循环有关,还是有另外一种方法可以做到这一点?谢谢!

2 个答案:

答案 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 通过打印正确答案的数量来完成程序。