作品展示
背景需求:
通过 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]
也就是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)+1numbers = 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*5all=[]
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
结果