【时事篇-05-03】20240222 金额145-150元填充27笔货币基金的具体数目测算( itertools)

作品展示

背景需求:

通过 itertools计算2525元存17笔145-150元金额的最适合方案

【时事篇-05-02】20240221 2525元存17只货币基金的具体数目测算( itertools)-CSDN博客文章浏览阅读823次,点赞32次,收藏13次。【时事篇-05-02】20240221 2525元存17只货币基金的具体数目( itertools)https://blog.csdn.net/reasonsummer/article/details/136220804

现在我的账户里还有27个货币基金没有填满。

如果我想分别存入145、146、147、148、149、150六种金额,每一种分别需要存入几笔,才能让合计等于27笔?最后计算总金额。

设计思路

1、确定“笔”的大致范围:平均数

将27除以6(145-150共6个金额)=4.5笔

如果想让 145-150出现的次数也基本相近,就将27除以6,每个金额的次数范围就在4-5之间

2、用itertools计算每个金额出现的笔数/次数,并相加正好等于27

结果只有一种——[4, 4, 4, 5, 5, 5],  合计27只

也就是145*4+146*4+147*4+148*5+149*5+150*5

推算出合计 =3987元(27只)




'''
150元存钱游戏(需要27笔,在145-150之间推算,145元会是几笔,146元几笔……最后计算一共多少元)
作者:阿夏
时间:2024年2月22日
'''

import itertools


# 
q=int(input('缺几只?25只\n'))

# 金额范围 6只 145、146、147、148、149、150
m=[]
for i in range(145,151):
    m.append(i)
print(m)
# [145, 146, 147, 148, 149, 150]
n=len(m)
# 6


# 27平均分配到5个里
f1=int(q/n)
print(f1)
# 27/5=4.5 四舍五入是4。
# 
# 范围4-5之间
f2=int(f1)+1

numbers = range(f1,f2+1)
combinations = itertools.combinations_with_replacement(numbers, n)

com=[]
for combination in combinations:
    if sum(combination) == q:
        c=list(combination)
        com.append(list(combination))
print(c)
print(q,'笔,',f1,'元到',f2,'元,共有',len(com),'种排列')
# [4, 4, 4, 5, 5, 5] 145*4+146*4+147*4+148*5+149*5+150*5

all=[]
s=[]
for b in range(len(m)):
    all.append('{}*{}'.format(m[b],c[b]))
    s.append(m[b]*c[b])
print('每笔金额、笔数:',all)
print('合计金额: ',sum(s))

# 合计金额:  3987


终端输入

27

结果

用其他空缺数字测算:

程序能够平均分配总数(笔),并显示145-150元可以存入几次,保证每个金额出现次数与其他金额出现次数比例相近。并默认推算唯一一种排列的合计金额

同样的方法在”天天基金”的活期宝70只“快速赎回”货币基金里进行金额测试

145和146元各存11笔,147到150存12笔

至少需要10329元,认真工作,努力填满这笔应急金(* ̄︶ ̄)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值