栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python简单实现排列和组合的计算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python简单实现排列和组合的计算

 高中数学选修2-3中学习了排列与组合的计算方式,这里按照课本上最基本的公式用python还原下

figure.py

def arrangment(a, b):  # a代表取多少元素,b代表总共多少元素
    """排列"""
    result = 1  # 设置中间量
    for i in range(a):  # 经典for循环,从0到a每次使中间量乘b,b再减1
        result *= b
        b -= 1
    return result  # 输出


def combination(a, b):  # 同上
    """组合"""
    result_1 = 1
    result_2 = 1  # 两个循环两个中间量
    for i in range(a):  # 计算排列
        result_2 *= b
        b -= 1
    for i in range(a):  # 算除数
        result_1 *= i
    result = result_2/result_1
    return result  # 完成

直接尝试

main.py

from figure import *


print(arrangment(5, 5))
print(combination(5, 5))

 不出意料报错了

 120是说排列没问题,那么问题就出在组合了,根据报错division by zero说明是除0了,也就是说result_1是0,是因为在循环的时候是从0到a

稍作修改

figure.py

def arrangment(a, b):  # a代表取多少元素,b代表总共多少元素
    """排列"""
    result = 1  # 设置中间量
    for i in range(a):  # 经典for循环,从0到a每次使中间量乘b,b再减1
        result *= b
        b -= 1
    return result  # 输出


def combination(a, b):  # 同上
    """组合"""
    result_1 = 1
    result_2 = 1  # 两个循环两个中间量
    for i in range(a):  # 计算排列
        result_2 *= b
        b -= 1
    for i in range(1, a):  # 算除数
        result_1 *= i
    result = result_2/result_1
    return result  # 完成

main.py

from figure import *


print(arrangment(5, 5))
print(combination(5, 5))

 再试一次

 没有报错,但是结果有问题

因为刚才把range的范围改成了1到a,所以少了一个

再改一次,把范围改为1到a+1

def arrangment(a, b):  # a代表取多少元素,b代表总共多少元素
    """排列"""
    result = 1  # 设置中间量
    for i in range(a):  # 经典for循环,从0到a每次使中间量乘b,b再减1
        result *= b
        b -= 1
    return result  # 输出


def combination(a, b):  # 同上
    """组合"""
    result_1 = 1
    result_2 = 1  # 两个循环两个中间量
    for i in range(a):  # 计算排列
        result_2 *= b
        b -= 1
    for i in range(1, a+1):  # 算除数
        result_1 *= i
    result = result_2/result_1
    return result  # 完成

 终于对了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号