【Python】求解:send+more=money,每个字母代表一个数字,相同的字母代表相同的数字,求这些字母代表的数字

前提:0不能作为数字开头

算法:利用Python中的全排列函数,取0-9中的8个数作为send+more=money中八个不同字母(该表达式包含相同字母例如o,m,n,e),判断这八个字母组成的表达式是否正确(等号是否成立),利用Python中的eval函数(在eval参数中的“=”改成“==”让其变成布尔型),判断0是否开头只要判断这些字符(“send+more==money”)长度是否等于16,少于16都是因为开头出现0然后被忽略了。

 

实现:

list1=[(str)((int)(s+e+n+d))+"+"+(str)((int)(m+o+r+e))+"=="+(str)((int)(m+o+n+e+y)) for s,e,n,d,m,o,r,y in permutations('0123456789', 8)]

 

for i in list1:

 

    if len(i)==16 and eval(i):print ("%s" % (i))

测试结果:

9567+1085==10652

 

【转载请注明出处!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值