萊特幣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))
