【发布时间】:2015-03-29 05:33:07
【问题描述】:
我已经学习 Python 大约 3 周了,所以我的工作显然非常简单。我已经编写了几个程序来为某些计算返回值,并且我已经成功地在这些程序的函数中使用了异常。我目前正在编写的程序只是为了让我更多地练习编写函数、while 循环和异常。到目前为止,这是我所得到的:
def factorial(n):
while n > 0:
return n * factorial(n-1)
return 1
print factorial(n)
def user():
n = int(raw_input("What number would you like to use?"))
try:
factorial(int(n))
except ValueError:
print "You must choose a number. Please try again."
return user()
if __name__ == '__main__':
user()
我不明白为什么user() 函数中的异常似乎没有运行。当我运行这段代码时,我得到的只是raw_input "What number would you like to use?"。 factorial() 函数不会运行,如果有ValueError,我设置的print 或return 语句也不会运行。谁能帮我弄清楚为什么会(或者说不会)发生这种情况?
【问题讨论】:
-
您在
raw_input周围有int,它不在try块内。将int(raw_input("What number would you like to use?"))放在try之后,将factorial放在except块之后 -
另外 - 看看this post,为什么使用递归对于重复输入请求是个坏主意......