试图循环数学测验程序的某些部分

时间:2011-09-18 20:46:10

标签: python loops user-input

我正在试图找出循环这个简单的数学测验程序的最佳方法(这里最好的意思是最简单和最简单的方法)。我得到两个随机数及其总和,提示用户输入,并评估该输入。理想情况下,当他们想要再次播放时应该获得新的数字并在提示不是一个有效的答案时问同样的问题......但我似乎无法理解如何解决它。

import random
from sys import exit

add1 = random.randint(1, 10)
add2 = random.randint(1, 10)
answer = str(add1 + add2)


question = "What is %d + %d?" % (add1, add2)
print question
print answer

userIn = raw_input("> ")

if userIn.isdigit() == False:
    print "Type a number!"
        #then I want it to ask the same question and prompt for an answer.
elif userIn == answer:
    print "AWESOME"
else:
    print "Sorry, that's incorrect!"


print "Play again? y/n"
again = raw_input("> ")

if again == "y":
    pass
#play the game again
else:
    exit(0)

2 个答案:

答案 0 :(得分:2)

你在这里错过了两件事。首先,您需要某种循环结构,例如:

while <condition>:

或者:

for <var> in <list>:

你需要一些方法来“短路”循环,以便你可以重新开始 如果您的用户键入非数字值,则在顶部。为此你想要 阅读continue声明。把这一切放在一起,你可能会得到 像这样的东西:

While True:
    add1 = random.randint(1, 10)
    add2 = random.randint(1, 10)
    answer = str(add1 + add2)


    question = "What is %d + %d?" % (add1, add2)
    print question
    print answer

    userIn = raw_input("> ")

    if userIn.isdigit() == False:
        print "Type a number!"

        # Start again at the top of the loop.
        continue
    elif userIn == answer:
        print "AWESOME"
    else:
        print "Sorry, that's incorrect!"

    print "Play again? y/n"
    again = raw_input("> ")

    if again != "y":
        break

请注意,这是一个无限循环(while True),只有在它到达break语句时才会退出。

最后,我强烈推荐Learn Python the Hard Way作为Python编程的一个很好的介绍。

答案 1 :(得分:1)

Python中有两种基本类型的循环:for循环和while循环。您可以使用for循环遍历列表或其他序列,或者执行特定次数的操作;当你不知道你需要做多少次时,你会用一段时间。哪一项似乎更适合您的问题?