python:用pyinstaller做个排列组合的小工具

排列组合用处很多,所以打算自己做个这个工具:

from scipy.special import comb,perm
from os import system
N=int(input('NumberOfThings:'))
k=int(input('NumberOfElementsTaken:'))
print('从%d里面取出%d个元素:'%(N,k))
print('排列:')
print(perm(N,k,exact=True))#exact T 返回长整,F返回浮点
print('组合:')
print(comb(N,k,exact=True))
system('pause')

核心就是两句:

from scipy.special import comb,perm
print(perm(N,k,exact=True))#exact T 返回长整,F返回浮点
print(comb(N,k,exact=True))

真方便,于是跑去用pyinstaller打包......

竟然失败了,若干支持库找不到.........我擦

赶紧写个hello world 打个包,看看是不是pyinstaller炸了.

然而一切正常......

嗯,是的,我遇到了pyinstaller不支持的情况了.

怎么办呢?自己写了一个,实现了浮点数运算,可是我想要的是python的长整型啊!!!!.算了,还是去复制黏贴一下吧....于是打开perm 和 comb的实现部分,开始找代码.好坑,组合居然有个函数引用的是pyd里面的.....,只好原封不动的搬过来了.

于是为了适应pyinstaller的版本出现了:

from _comb import _comb_int

def pailie(N,k):
    if (k > N) or (N < 0) or (k < 0):
        return 0
    val = 1
    for i in range(N - k + 1, N + 1):
        val *= i
    return val
def zuhe(N,k):
    return _comb_int(N, k)

while True:
    ctl=''
    ctl=input('input 0 to exit,anything else to proceed:')
    if ctl=='0':
        break
    N=int(input('Number of things:'))
    k=int(input('Number of elements taken'))
    print('排列:')
    print(pailie(N,k))
    print('组合:')
    print(zuhe(N,k))

把这个源文件和_comb.cp36-win_amd64.pyd一起从工程里考出来,找个文件夹塞进去,pyinstaller一下......嘿嘿嘿,成功了.整个绿色软件10.6兆,好吧,有点肥.

这样,就有了一个顺手的小工具了,哈哈

转载于:https://my.oschina.net/avatus/blog/1941447

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值