结果展示
背景需求:
前文测算了27只货币基金,如果存145、146、147、148、149、150元分别需要存几笔。结果是4、4、4、5、5、5
后续我想起 有3只货币基金,虽然显示7天年化在2.0%以上,但是实际需要250元才能保证每天1分钱
因此在27笔中需要划出3笔专门投250元,其余24笔在145-150之间等额分配(每笔4次)
代码展示:
'''
150元存钱游戏(需要27笔,在145-150之间推算,145元会是几笔,146元几笔……最后计算24笔一共多少元,3笔必须250元)
作者:阿夏
时间:2024年2月24日
'''
import itertools
# 缺27只
d=27
# 其中3只必须250元
p=3
# 145-150元的范围
q=d-p
# q=int(input('缺几只?24只\n'))
# 金额范围 6只 145、146、147、148、149、150
m=[]
for i in range(145,151):
m.append(i)
m.append(250)
print(m)
# [145, 146, 147, 148, 149, 150, 250]
n=len(m)
# print(n)
# 7
# 27平均分配到5个里
f1=int(d/n)
print(f1)
# 27/7=3
# 范围3-4之间
f2=int(f1)+1
numbers = range(f1,f2+1)
combinations = itertools.combinations_with_replacement(numbers, n)
com=[]
for combination in combinations:
if sum(combination) == d:
c=list(combination) # 145-150的24笔
# c.append(p) # 250的3笔
com.append(combination)
print(c)
# [3, 4, 4, 4, 4, 4, 4]
# 最后一个是3项目 倒置列表
c.reverse()
print(c)
# [4, 4, 4, 4, 4, 4, 3]
print(sum(c),'笔,',f1,'元到',f2,'元,共有',len(com),'种排列')
# # # [4, 4, 4, 4, 4, 4, 3]
all=[]
s=[]
for b in range(len(m)):
all.append('{}*{}'.format(m[b],c[b]))
s.append(m[b]*c[b])
print('每笔金额、笔数:',all)
# 每笔金额、笔数: ['145*4', '146*4', '147*4', '148*4', '149*4', '150*4', '250*3']
print('合计金额: ',sum(s))
# # 合计金额: 4290