如何让这个程序在python中重新开始?

时间:2009-09-23 02:44:43

标签: python recursion

我相信这个词是“recurse”而不是“重新开始”。我已经创建了这个程序,以便在早上磨练我的乘法技能。我可以让它给我一个乘法问题,但我怎么能让它再问我一个?

from random import randint

print 'Good Morning Pete!'

X = randint(0, 10)

Y = randint(0, 10)

A = X * Y

Z = int(raw_input('%i * %i = ? ' % (X, Y)))

count = 0

if Z == A:
    count += 1
    print 'Good Job!'
else:
    print 'Sorry!'


if count == '10':
    print 'Time to kill \'em'

如何让它为我解决一个新问题呢?我是初学者。谢谢大家!

5 个答案:

答案 0 :(得分:3)

Pete,在这种情况下你不需要递归,而只需要一个循环

我建议你把这个程序的大部分逻辑(要求乘法问题的部分并检查你的答案)放入一个函数中。说一个问题()。如果您回答错误,此功能可以返回0,如果您回答错误,则返回1;如果输入了一些表示您想要停止的键,则返回-1。 (顺便说一句,这个函数是为了帮助你构建程序,使它更易于重新编程而引入循环所不需要的。你可以将所有这些东西保存在循环中。另外,你应该知道还有其他的循环结构在python中,例如循环。)

然后你需要在你的主要部分中找到类似的东西:

GoodReplyCtr = 0
for i in range(0, 10):  # or 100 or 1000 if you feel ambitious...
   cc = OneProblem()
   if cc < 0:
        break
   GoodReplyCtr += cc

print(GoodReplyCtr)

递归的概念(这里也不需要)是函数调用自身的概念。这是导航图形时的常见做法(比如说驱动C :)上的目录结构,或者有一些数学问题。我们通常不需要在学习计算机语言概念的早期报道递归,但是一旦你掌握了很好的东西,你就会发现它非常有用(并且在时间上具有挑战性;-))

坚持下去!数学和蟒蛇很酷。

修改:最后一招:

您可能会发现需要处理一些乘法表而不是其他表。您可以使用random的模块random.choice()方法来支持某些数字或消除其他数字,而不是使用randint。例如

import random
X = random.choice((2, 3, 4, 6, 7, 8, 9, 7, 9))  # see, no 0, 1,or 5 but more chance to get 7 or 9

答案 1 :(得分:2)

我相信你想要这样的东西

from random import randint

print 'Good Morning Pete!'

count = 0

while True:
    X = randint(0, 10)
    Y = randint(0, 10)
    A = X * Y
    Z = int(raw_input('%i * %i = ? ' % (X, Y)))

    if Z == A:
        count += 1
        print 'Good Job!'
    else:
        print 'Sorry!'


    if count == 10:
        print 'Time to kill \'em'
        break

答案 2 :(得分:1)

循环?请参阅for语句和range()函数。他们在Python tutorial

你可能想要阅读下一章,无论你用什么书来自学编程。

答案 3 :(得分:0)

要合并循环,您可以将其添加到代码的开头:

running = True 而真:     //在这里添加你的代码

//Add this to the end of your code:

print 'Another problem? Enter y or n'
    answer = raw_input().lower()
    if answer == 'n':
        running = False
        break
    elif answer == 'y':
        running = True

这将允许用户每次选择是否还有其他问题。

答案 4 :(得分:0)

我同意那些说这不是递归的好例子的人100%,而是要求循环。但是,为了说明如何完成,我发布以下代码:

import random
def do_mult(num_questions):
    x = random.randint(0, 10)
    y = random.randint(0, 10)
    a = x * y
    z = int(raw_input('%i * %i = ?' % (x, y)))
    if z == a:
        print 'good job!'
    else:
        print 'sorry!'
    if num_questions > 1:
        do_mult(num_questions - 1)

do_mult(10)