背景需求
前文提到,每笔都存一样的数目,容易被银行识别违法,
【时事篇-05-01】20240112 150元存46只货币基金-CSDN博客文章浏览阅读580次,点赞15次,收藏11次。【时事篇-05-01】20240112 150元存46只货币基金https://blog.csdn.net/reasonsummer/article/details/136106686
前几天我第二次收到监管通知,
因为大量存了大量的145元,
请假去银行里办了35分钟业务,填了无数反诈骗表格,多次展示微信界面后,银行同意用“分散投资”理由为我解除账户限制。
两次后,我再也不想为了这种事情去银行了。o(╥﹏╥)o
因此要想办法,在每笔总额相同的情况下,把每笔存款拆分成不同金额,分批分时存入。
代码展示:
这里我用五次的排除法,让拆分的三笔零钱看上去有差异。
'''
145元拆分3笔,以不同数字存入.py
作者:阿夏
时间:2024年3月16日
'''
import itertools
import numpy as np
import random
money=int(input('每份几元?145元\n'))
min=int(input('最小数?10(必须2位数)\n'))
max=int(input('最大数?99(必须2位数)\n'))
num=int(input('你想买几只?3只\n'))
# 145元拆分3次存,最少10元
print('-----1、145元拆分3笔整数(10——99元之间任意数字),去除重复、去除0、5数字------')
# 第1次,三笔存款数字不能相同
list1=[]
for x in range(min,max+1):
for y in range(min,max+1):
for z in range(min,max+1):
if x+y+z==money:
if x==y or x==z or y==z:
pass
else:
print(x,y,z)
list1.append('{}{}{}'.format(x,y,z))
print(list1)
print(len(list1))
# 5598
# 第2次,三笔存款数字的十位数不能相同
list2=[]
for a in range(len(list1)):
if list1[a][0]==list1[a][2] or list1[a][0]==list1[a][4] or list1[a][2]==list1[a][4] :
pass
else:
list2.append(list1[a])
print(list2)
print(len(list2))
# 4326
# # 第3次,三笔存款第2个数字不能为0、 如果6个数字中有0,就剔除
list3=[]
for b in range(len(list2)):
if '0' in list2[b]:
pass
else:
list3.append(list2[b])
print(list3)
print(len(list3))
# 3102
# # 第4次,三笔存款第2个数字不能为5、 如果6个数字中有0,就剔除
list4=[]
for c in range(len(list3)):
if int(list3[c][1])==5 or int(list3[c][3])==5 or int(list3[c][5])==5:
pass
else:
list4.append(list3[c])
print(list4)
print(len(list4))
# 2052
# # 第5次,三笔存款第2个数字不能相同
list5=[]
for d in range(len(list4)):
if list4[d][1]==list4[d][3] or list4[d][1]==list4[d][5] or list4[d][3]==list4[d][5]:
pass
else:
list5.append(list4[d])
print(list5)
print(len(list5))
# 1008
print('-----2、列表中随机抽取3组数字,拆分开来便于存款------')
w=random.sample(list5,num)
print(w)
for v in range(len(w)):
print('第',v+1,'笔',money,'元的存法',w[v][0:2],'元',w[v][2:4],'元',w[v][4:6],'元')
# # for x in np.arange(40.00, 100.01, 0.01):
# # for y in np.arange(40.00, 100.01, 0.01):
# # for z in np.arange(40.00, 100.01, 0.01):
# # if x+y+z==150.00:
# # print(x,y,z)
终端输入:
后续思考:
1、如果存入金额是46.23这种样式,会更适合符合日常购物的情况,
问题:但是这样生成数字,运行起来就很慢。
2、不要同时把5笔存入,每一笔存款可以隔2分钟再存入,以免引起监管。
问题:但是如果不是同时分批存入,我过一会儿就会忘记。
最后是一个合并版的,代码简略一点
'''
145元拆分3笔,以不同数字存入.py
作者:阿夏
时间:2024年3月16日
'''
import itertools
import numpy as np
import random
money=int(input('每份几元?145元\n'))
min=int(input('最小数?10(必须2位数)\n'))
max=int(input('最大数?99(必须2位数)\n'))
num=int(input('你想买几只?3只\n'))
# 145元拆分3次存,最少10元
print('-----1、145元拆分3笔整数(10——99元之间任意数字),去除重复、去除0、5数字------')
# 第1次,三笔存款数字不能相同
list1=[]
for x in range(min,max+1):
for y in range(min,max+1):
for z in range(min,max+1):
if x+y+z==money:
if x==y or x==z or y==z:
pass
else:
print(x,y,z)
list1.append('{}{}{}'.format(x,y,z))
print(list1)
print(len(list1))
# 5598
list2=[]
for a in range(len(list1)):
# 第2次,三笔存款数字的十位数不能相同
if list1[a][0]==list1[a][2] or list1[a][0]==list1[a][4] or list1[a][2]==list1[a][4] :
pass
# 第3次,三笔存款第2个数字不能为0、 如果6个数字中有0,就剔除
if '0' in list1[a]:
pass
# 第4次,三笔存款第2个数字不能为5、 如果6个数字中有0,就剔除
if int(list1[a][1])==5 or int(list1[a][3])==5 or int(list1[a][5])==5:
pass
# 第5次,三笔存款第2个数字不能相同
if list1[a][1]==list1[a][3] or list1[a][1]==list1[a][5] or list1[a][3]==list1[a][5]:
pass
# 排除以上数字
else:
list2.append(list1[a])
print(list2)
print(len(list2))
# 1008
print('-----2、列表中随机抽取3组数字,拆分开来便于存款------')
w=random.sample(list2,num)
print(w)
for v in range(len(w)):
print('第',v+1,'笔',money,'元的存法',w[v][0:2],'元',w[v][2:4],'元',w[v][4:6],'元')