如何让这个程序在Python中重新开始?
我觉得这个词应该是“递归”,而不是“重新开始”。我写了一个程序来提高我早上的乘法技能。我可以让它给我出一个乘法题,但我该怎么让它再问我一个呢?
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 个回答
1
循环?你可以看看 for
语句和 range()
函数。它们在 Python教程里。
另外,你也可以看看你正在用来学习编程的书的下一章。
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
3
Pete,这里其实不需要用到递归,只需要用一个循环就可以了。
我建议你把这个程序的大部分逻辑(也就是问乘法问题和检查答案的部分)放到一个函数里,比如叫做 One Problem()。这个函数可以返回0表示你答错了,返回1表示你答对了,返回-1表示你输入了某个键想要停止。(顺便说一下,这个函数是为了帮助你整理程序结构,让它更易读,但并不是引入循环的必要条件。你完全可以把这些内容放在循环里面。另外,你也应该知道在Python中还有其他类型的循环,比如while循环。)
然后在你的主程序部分,你只需要写类似这样的代码:
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盘的文件夹结构)或者某些数学问题时很常见。通常在学习编程语言的初期,我们不需要涉及递归,但当你掌握了一些基础后,可能会发现它非常有用(有时候也挺有挑战性的 ;-))。
继续加油!数学和Python都很酷。
编辑:最后一个小技巧:
你可能会发现有些乘法表需要多练习,而有些则不需要。与其使用randint,你可以用随机模块中的random.choice()方法来偏向某些数字或者排除其他数字。例如:
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