莱特币python
㈠ python入门问题,关于货币面值最少的组合。
choices=[1,5,16,23,33]
cache={}
deff(x):
ifxincache:#注2
returncache[x]
ifx>5:#注1
ch=[5,16,23,33]
#elifx>80:
#ch=[16,23,33]
else:
ch=choices
l=[x-cforcinchifx>=c]
ifall(l):#都为真,也就是还有零钱
cache[x]=min([f(x1)forx1inl])+1
else:
cache[x]=1
returncache[x]
算法思路来自跟你问同样问题的另一个楼里,那边给了个循环的算法,说实话看不懂... 还是递归的好理解点;
最开始的版本是不带两个注解的地方;效率狂差,99都算不动了
注解1
开始想应该是递归的时候无用的计算太多,想了半天,考虑到金额较大的时候,就不用考虑小面额的,所以加了判断;但是这个排除的依据到底该是多少呢?大于5元的,就先不考虑1元了这个比较显然,后面的呢?感觉应该是取最小公倍数,但是证明不出来...
不过即使这样,也只是对不到200的数有明显改善,效率还是很差
注解2
后来想了下,在这过程中,就是针对不同的x 计算f(x),存在多次重复,对同样的x,f(x)的结果应该是一样的,所以加了一个cache缓存计算结果,这下效果很明显了
㈡ 哪些币是用Python写的
所有的加密货币都是用C/C++写的,Python太慢,只配做算法。
㈢ 货币转换的python程序代码,哪里错了,请大神指点
发出错误提示来看看。
㈣ 如何使用python开发区块链
初始区块链
特点:
区块链是由区块的记录构成的不可变,有序的链记录。主要有以下几个特点:
1:去中心化
由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。得益于区块链的去中心化特征,比特币也有去中心化的特征 。
2:开放性
系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。
3:自治性
区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。
4:信息不可篡改
一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
5:匿名性
由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任,对信用的累积非常有帮助。
与传统分布式数据库相比主要有以下两个区别:
1:传统分布式数据库支持增删查改,区块链只支持查找和插入,对区块不能进行删除和修改。
2:传统的分布式数据库一般都是主从结构:master和slaves的结构,为了保证高可用,通过备用master来实现,而区块链是一个去中心化的数据库。没有主从结构。
区块链和比特币:
说起区块链,大多数人都会谈起比特币。但区块链并不等于是比特币,现在已经是区块链3.0时代,而比特币只是区块链1.0时代的产物。
区块链的进化方式是:
▪ 区块链1.0——数字货币
▪ 区块链2.0——数字资产与智能合约
▪ 区块链3.0——各种行业分布式应用落地
区块链的分类:
公有区块链(PublicBlockChains)
公有区块链是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。
联合(行业)区块链(ConsortiumBlockChains)
行业区块链:由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。
私有区块链(privateBlockChains)
私有区块链:仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。(Dec2015)保守的巨头(传统金融)都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中。
㈤ 如何在python中模拟投硬币实验
#coding:utf-8
import random
def mntb(T):
a = 0
b = 0
while a < T and b < T:
num = random.randint(0,1)
#print num 这里你可以看到每次抛的硬币的正反面情况
if num == 0:
a += 1
else:
b += 1
if a == T:
print u'b的得分是:%d '%b
return 'a won'
if b == T:
print u'a的得分是:%d '%a
return 'b won'
#你执行这个函数就可以了,T代表你设置的分数 mntb(T),代码写的比较啰嗦 嘿嘿

按照你题目的意思要这样修改一下:(看题大意了,并不是从0开始统计。。。)
#coding:utf-8
import random
def mntb(T,a,b):#a代表p1目前的分数 b代表p2目前的分数
while a < T and b < T:
num = random.randint(0,1)
#print num 这里你可以看到每次抛的硬币的正反面情况
if num == 0:
a += 1
else:
b += 1
if a == T:
print u'p2的得分是:%d '%b
return 'p1 won'
if b == T:
print u'p1的得分是:%d '%a
return 'p2 won'
#你执行这个函数就可以了,T代表你设置的分数 mntb(T,a,b)
㈥ 求python代码。货币转换人民币对美元。格式为: 人民币:20 美元:xxx
def func(money):
return f'人民币:20美元:{money*20}'
不大懂你的意思,但是感觉很简单23333,不知道你要的效果,你最好举个例子,比如输入什么,输出什么
㈦ python3怎么挖比特币
比特币要特定的矿机才能挖,兄弟
㈧ 用python 怎么 解 将100元兑换为1元、5、10元的零钱,请问有多少种兑换方法
cnt = 0
for i in xrange(100 / 1 + 1):
for j in xrange((100 - i * 1) / 5 + 1):
for k in xrange ((100 - i * 1 + j * 5) / 10 + 1):
if i * 1 + j * 5 + k * 10 == 100:
print "1:", i, "5:", j, "10:", k
cnt += 1
print cnt
结果如下,总共121种
1: 0 5: 0 10: 10
1: 0 5: 2 10: 9
1: 0 5: 4 10: 8
1: 0 5: 6 10: 7
1: 0 5: 8 10: 6
1: 0 5: 10 10: 5
1: 0 5: 12 10: 4
1: 0 5: 14 10: 3
1: 0 5: 16 10: 2
1: 0 5: 18 10: 1
1: 0 5: 20 10: 0
1: 5 5: 1 10: 9
1: 5 5: 3 10: 8
1: 5 5: 5 10: 7
1: 5 5: 7 10: 6
1: 5 5: 9 10: 5
1: 5 5: 11 10: 4
1: 5 5: 13 10: 3
1: 5 5: 15 10: 2
1: 5 5: 17 10: 1
1: 5 5: 19 10: 0
1: 10 5: 0 10: 9
1: 10 5: 2 10: 8
1: 10 5: 4 10: 7
1: 10 5: 6 10: 6
1: 10 5: 8 10: 5
1: 10 5: 10 10: 4
1: 10 5: 12 10: 3
1: 10 5: 14 10: 2
1: 10 5: 16 10: 1
1: 10 5: 18 10: 0
1: 15 5: 1 10: 8
1: 15 5: 3 10: 7
1: 15 5: 5 10: 6
1: 15 5: 7 10: 5
1: 15 5: 9 10: 4
1: 15 5: 11 10: 3
1: 15 5: 13 10: 2
1: 15 5: 15 10: 1
1: 15 5: 17 10: 0
1: 20 5: 0 10: 8
1: 20 5: 2 10: 7
1: 20 5: 4 10: 6
1: 20 5: 6 10: 5
1: 20 5: 8 10: 4
1: 20 5: 10 10: 3
1: 20 5: 12 10: 2
1: 20 5: 14 10: 1
1: 20 5: 16 10: 0
1: 25 5: 1 10: 7
1: 25 5: 3 10: 6
1: 25 5: 5 10: 5
1: 25 5: 7 10: 4
1: 25 5: 9 10: 3
1: 25 5: 11 10: 2
1: 25 5: 13 10: 1
1: 25 5: 15 10: 0
1: 30 5: 0 10: 7
1: 30 5: 2 10: 6
1: 30 5: 4 10: 5
1: 30 5: 6 10: 4
1: 30 5: 8 10: 3
1: 30 5: 10 10: 2
1: 30 5: 12 10: 1
1: 30 5: 14 10: 0
1: 35 5: 1 10: 6
1: 35 5: 3 10: 5
1: 35 5: 5 10: 4
1: 35 5: 7 10: 3
1: 35 5: 9 10: 2
1: 35 5: 11 10: 1
1: 35 5: 13 10: 0
1: 40 5: 0 10: 6
1: 40 5: 2 10: 5
1: 40 5: 4 10: 4
1: 40 5: 6 10: 3
1: 40 5: 8 10: 2
1: 40 5: 10 10: 1
1: 40 5: 12 10: 0
1: 45 5: 1 10: 5
1: 45 5: 3 10: 4
1: 45 5: 5 10: 3
1: 45 5: 7 10: 2
1: 45 5: 9 10: 1
1: 45 5: 11 10: 0
1: 50 5: 0 10: 5
1: 50 5: 2 10: 4
1: 50 5: 4 10: 3
1: 50 5: 6 10: 2
1: 50 5: 8 10: 1
1: 50 5: 10 10: 0
1: 55 5: 1 10: 4
1: 55 5: 3 10: 3
1: 55 5: 5 10: 2
1: 55 5: 7 10: 1
1: 55 5: 9 10: 0
1: 60 5: 0 10: 4
1: 60 5: 2 10: 3
1: 60 5: 4 10: 2
1: 60 5: 6 10: 1
1: 60 5: 8 10: 0
1: 65 5: 1 10: 3
1: 65 5: 3 10: 2
1: 65 5: 5 10: 1
1: 65 5: 7 10: 0
1: 70 5: 0 10: 3
1: 70 5: 2 10: 2
1: 70 5: 4 10: 1
1: 70 5: 6 10: 0
1: 75 5: 1 10: 2
1: 75 5: 3 10: 1
1: 75 5: 5 10: 0
1: 80 5: 0 10: 2
1: 80 5: 2 10: 1
1: 80 5: 4 10: 0
1: 85 5: 1 10: 1
1: 85 5: 3 10: 0
1: 90 5: 0 10: 1
1: 90 5: 2 10: 0
1: 95 5: 1 10: 0
1: 100 5: 0 10: 0
121
㈨ 抛硬币问题 python
我是提问者,此问题已解决,所以此问题作废.
㈩ python n个硬币中找一个假币,且已知假币较轻,怎么用递归和非递归两种方法求
思路:假设有数组arr,里面的int值代表银币重量,下标代表第几个银币。
循环(非递归):把数组第一个值赋值给变量tmp,从第二个变量循环到最后一个,比较循环里的变量和tmp值,如果不等,就返回小数下标。
递归:用二分思想,银币分2堆(不能均分时把中间那个留出来),取重量小的那堆继续二分。最后只剩下一个时就是所求
下面这种写法是返回下标的。也可以把硬币假设成一种数据类型,然后返回那个类型
#!/usr/bin/python
#-*-coding:utf-8-*-
#返回最小值下标
defgetMin(arr1):
iflen(arr1)==0:return-1
tmp=arr1[0]
index=0
forcurinarr1:
iftmp!=cur:
return0iftmp<curelseindex
index+=1
return-1
real_index=0
#返回最小值下标递归
defgetMinRecursion(arr1):
globalreal_index
n=len(arr1)
ifn==0:return-1
ifn==1:returnreal_index
ifn==2:returnreal_indexifarr1[0]<arr1[1]elsereal_index+1
sum1=sum(arr1[0:int(n/3)])
sum2=sum(arr1[int(n/3):int(n/3)*2])
ifsum1==sum2:
real_index+=int(n/3)*2
returngetMinRecursion(arr1[int(n/3)*2:n+1])
ifsum1<sum2:
returngetMinRecursion(arr1[0:int(n/3)])
else:
real_index+=int(n/3)
returngetMinRecursion(arr1[int(n/3):int(n/3)*2])
arr=[1,1,1,1,1,1,0,1,1]
print("%d"%getMin(arr))
print("%d"%getMinRecursion(arr))
