python - python - 如何为超过python中特定值的数字引发Valueerror?
问题描述
我试图创建一个函数,该函数采用非负整数 n 的阶乘。这部分工作得很好,但如果输入低于 0 或高于 12,我也必须创建一个 ValueError ,这不起作用。
def factorial(n):
countdown = n
factorial_sum = 1
while True:
try:
if n == 0:
return 1
if n < 0 or n > 12:
raise ValueError
except ValueError:
return 'Error'
if (countdown / n) > 0 and n <= 12:
factorial_sum = factorial_sum * countdown
countdown = countdown - 1
if (n - countdown + 1) == n:
return factorial_sum
elif (n - 1) == 0:
return factorial_sum
挑战来自代码战和状态:
在数学中,用 n! 表示的非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如:5!= 5 * 4 * 3 * 2 * 1 = 120。按惯例取值为 0!是 1。
编写一个函数来计算给定输入的阶乘。如果输入低于 0 或高于 12,则抛出 ArgumentOutOfRangeException (C#) 或 IllegalArgumentException (Java) 或 RangeException (PHP) 类型的异常,或抛出 RangeError (JavaScript) 或 ValueError (Python) 或返回 -1 (C)。
所有答案将不胜感激
解决方案
代替
try:
if n == 0:
return 1
if n < 0 or n > 12:
raise ValueError
except ValueError:
return 'Error'
经过
if n == 0:
return 1
if n < 0 or n > 12:
raise ValueError
推荐阅读
- flutter - 如何在 Flutter 中向 dio http 请求添加标头
- apache - 如何将专用证书分配给 Apache 中代理传递的子目录?
- html - 滚动到 Bootstrap Modal 的特定 div
- python - 在方法之外使用 super() 在父类中获取私有属性
- excel - VBA 如何省略空白单元格并避免返回 00/01/1900?
- docker - 错误登录后端口的 NGINX Keycloak 问题
- vue.js - 在没有组合 API 的情况下在 Vue 中导入节点包?
- java - Pentaho - 连接到数据库或存储库时出错
- docker - Docker,在 dockerfile 中获取 root 访问权限,以便在 jenkins 构建映像中安装包
- javascript - 如果属性名称包含值,如何从数组对象返回参数?