我相信这个词是“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'
如何让它为我解决一个新问题呢?我是初学者。谢谢大家!
答案 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)