本题要求编写程序,根据公式 算出从n个不同元素中取出m个元素(m≤n)的组合数。
输入格式:
输入在一行中给出两个正整数m和n,以空格分隔。
- 如果输入数据负数,能输出提示
不能负数
- 如果输入数据出发非法数据,能输出提示
请输入数值
(数值异常处理)
输出格式:
按照格式result = 组合数
计算结果输出。
输入样例:
2 7
输出样例:
result=21.00
话不多说,先贴代码。
def judge(m):
sum = 1
for i in range(1, m+1):
sum *= i
return sum
def cal(n, m):
now_n = judge(n)
now_m = judge(m)
now_n_m = judge(n-m)
return now_n/(now_m*now_n_m)
m, n = list(input().split())
flag = True
flag2 = True
try:
m, n = int(m), int(n)
except:
print("请输入数值")
flag = False
if flag:
if m > 0 and n > 0:
print("result={:.2f}".format(cal(n,m)))
else:
print("不能负数")
题确实有点基础,但是也不妨碍我练习python函数的使用,我先说一下我的解题思路,先是解决输入的问题,用刚刚学习的异常抛出来解决,其实里面的flag2是没用的。。后面加一个判断就行了,先看看能不能将输入的两个数转换为int,如果不能提示输入数值,在后面判断是不是输入了负数,然后计算排列组合很简单,两个函数,一个阶乘函数judge,然后一个计算的函数cal,然后用format格式化输出即可。