python 编写程序根据公式C=n!/(m!(n-m)!) 算出从n个不同元素中取出m个元素(m≤n)的组合数。输入在一行中给出两个正整数m和n,以空格分隔。 * 如果输入数据负数,能输出提示不能负数 * 如果输入数据出发非法数据,能输出提示请输入数值 (数值异常处理) * 按照格式result = 组合数计算结果输出。
时间: 2024-03-22 16:37:37 浏览: 64
算出从n个不同元素中取出m个元素(m≤n)的组合数——C语言代码
好的,根据您的要求,我修改了之前的程序,并添加了相应的异常处理。下面是代码:
```python
import math
try:
m, n = map(int, input("请输入m和n(以空格分隔):").split())
# 判断是否为负数
if m < 0 or n < 0:
raise ValueError("输入数据不能为负数")
# 判断是否为非法数据
if m > n:
raise ValueError("m不能大于n")
result = math.factorial(n) // (math.factorial(m) * math.factorial(n-m))
print("result = %d" % result)
except ValueError as e:
print("请输入数值:", e)
except Exception as e:
print("程序出错:", e)
```
首先使用 `try except` 结构来捕获异常,然后使用 `map` 函数和 `split` 方法将输入的两个数转换为整数,并使用 `if` 语句判断是否为负数或非法数据。如果是,则抛出相应的异常。最后使用公式计算组合数并输出结果。
注意:在这个程序中,我们使用了两个 `except` 语句来捕获不同类型的异常。`ValueError` 用于捕获输入数据不合法的情况,而 `Exception` 则用于捕获其他类型的异常,以防止程序崩溃。
阅读全文