pta 7-2 jmu-python-组合数 (20 分) python函数练习

本题要求编写程序,根据公式 11.jpg 算出从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格式化输出即可。 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值