導航:首頁 > 編程語言 > python撲克牌教程

python撲克牌教程

發布時間:2023-07-12 01:55:53

❶ 求大神救命啊,python實現圖形化,點擊按鈕隨機抽取兩張撲克牌的牌面,並且不能重復,要顯示出圖形

本文實例展示了Python統計列表中的重復項出現的次數的方法,是一個很實用的功能,適合Python初學者學習借鑒。具體方法如下:
對一個列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],現在我們需要統計這個列表裡的重復項,並且重復了幾次也要統計出來。
方法1:
?

1234

mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist) #myset是另外一個列表,裡面的內容是mylist裡面的無重復 項for item in myset: print("the %d has found %d" %(item,mylist.count(item)))

❷ python經典24點游戲

游戲規則:從一副撲克牌中抽取4張牌,對4張啟歷此牌使用加減乘除中的任何方法使計算結果為24,例如(((4-2)+6)*3) = 24,最快算出24者勝。

實現思路:參照原作者想法,由於設計到了表達式,很自然的想到了用二叉樹來實現。簡單概括為:先列出所有表達式的可能性,然後運用表達式樹,也就是二叉樹計算表達式的值,當然還需要使用遞歸來具體實現各個功能,下面我們具體來實現下吧。

表達式樹的所有葉子節點均為操作數(operand), 其它節點為運算符(operator),本次採用二叉樹來表示表達式中各個屬性的值,這樣也方便我們計算。

首先是遍歷所有表達式的可能情況,這里得到得是操作數所有可能得情況,假如傳入的l是序列[1,2,3,4],count1是4,count2是4,那麼得到的結果就是12個隨機且不重復的[1,2,3,4]序列

同理,產生運算符的不同排列結果

然後根據傳入的表達式的值,構造表達式樹,首先我們創建一個表示節悄迅點的類

然後樹的形式無非兩種,就是上面大家看到的兩種形式,用程序表示出來就是兩種函數,參數分別對應了運算符和爛行運算符,還是比較好理解的,知識涉及一些二叉樹的知識。

然後就是計算表達式樹的值,這里也運用了遞歸。

輸出所有可能的結果,這里注意print_node方法也是使用的遞歸來列印數據,並且使用 end='' 去掉了換行符。

最後在程序的入口調用calculate方法,並傳入數據,也就是你得到的牌。

成果:

❸ 如何用Python將1轉化為撲克牌A,採用if語句

dict1={'1':'A','2':'K','3':'Q'..............................................}
dict1['1']=='A'

❹ 怎樣python 寫一個撲克和骰子的程序,模擬的5骰子的滾動,至多三次,具體要求如下:

參考下面的代碼.


play 可能有問題,主要是沒說清楚在保留牌的時候, 輸入Ace 或者 "Ace Ace" 有什麼區別,到底是輸入一次 Ace 保留手上所有的 Ace 還是只保留一個,這個沒說清楚。看例子,這兩種用法都有,我按照輸入了幾個就保留幾個來做的。


simulate 沒問題,和圖片中的結果完全一樣


必須用 python 3


importrandom
importcollections

_dice_type=['Ace','King','Queen','Jack','10','9']

_hand_mapping=collections.OrderedDict([
('5kind','Fiveofakind'),
('4kind','Fourofakind'),
('full','Fullhouse'),
('straight','Straight'),
('3kind','Threeofakind'),
('2pair','Twopair'),
('1pair','Onepair'),
('bust','Bust'),
])

def_check_hand(dices):
counter=collections.Counter(dices)
iflen(counter)==1:
return'5kind'

sorted5=counter.most_common(5)
ifsorted5[0][1]==4:
return'4kind'

ifsorted5[0][1]==3:
ifsorted5[1][1]==2:
return'full'
else:
return'3kind'

ifsorted5[0][1]==2:
ifsorted5[1][1]==2:
return'2pair'
else:
return'1pair'

iflen(counter)==5:
dtype=sorted5[0][0]
forxinsorted5:
ifdtype!=x[0]:
break
dtype+=1
else:
return'straight'

return'bust'

defplay():
dices=[]
retry=0
whileTrue:
remain=5-len(dices)
ifremain<=0:
break

dices.extend([random.randint(0,5)forxinrange(remain)])

print("Therollis:{}".format(
"".join([_dice_type[d]fordinsorted(dices)])
))
print("Itisa{}".format(_hand_mapping[_check_hand(dices)]))

ifretry>1:
break


prompt="{}roll?".format(
"second"ifretry==0else"third"
)

whileTrue:
answer=input(prompt).lower()
ifanswer=='all':
break

answer=[x.capitalize()forxinanswer.split()]
ifset(answer).issubset(set(_dice_type)):
break
print("Thatisnotpossible,tryagain!")

retry+=1
ifanswer=='all':
print("Ok,done")
break

tmp=dices
dices=[]
forxintmp:
if_dice_type[x]inanswer:
dices.append(x)
answer.remove(_dice_type[x])

defsimulate(n,debug=False):
result=dict.fromkeys(_hand_mapping.keys(),0)
for_inrange(n):
dices=[random.randint(0,5)forxinrange(5)]
ifdebug:
print("DEBUG:","".join([_dice_type[d]fordinsorted(dices)]))
result[_check_hand(dices)]+=1

fork,vin_hand_mapping.items():
cnt=result[k]
print("{:<16s}:{:.2f}%".format(v,100*cnt/n))

❺ 怎麼在python裡面完成隨機輸出撲克牌,要求有J,Q,K,且以後輸出的與前面輸出的不能重復

借用一個當年老大用來寫麻將的思路,把54張牌都初始化對象,裝到一個容器裡面,隨機取一個,刪一個,再寫個重寫隨機放入牌合的初始方法就好

❻ 24點紙牌游戲的開發 python 各路大神我需要幫助

很久之前自己寫的了,用的就是高級一點的窮舉,還挺快的。
附帶一個gui
求給分啊
兩個文件,cui負責算數gui是界面,親測可運行的

**************************************cui_24point.py
__author__ = 'Administrator'

add = lambda a,b:a+b
minus = lambda a,b:a-b
mul = lambda a,b:a*b
div = lambda a,b:a/b

caldict = {add:"+", minus:"-", mul:"*", div:"/"}

sortlist = [[a,b,c,d] for a in range(4) for b in range(4) for c in range(4) for d in range(4) if a != b != c != d and a != c and b != d and a != d]

class leaf:
def __init__(self, numlist, layer1, layer2, layer3, ans):
self.numlist = map(lambda a:float(a), numlist)
self.layer1 = layer1
self.layer2 = layer2
self.layer3 = layer3
self.ans = ans
def __str__(self):
return "((%s%s%s)%s%s)%s%s=%s" %(self.numlist[0], caldict[self.layer1], self.numlist[1], caldict[self.layer2], self.numlist[2], caldict[self.layer3], self.numlist[3] ,self.ans)

def tree(numlist):
layer1 = "Null"
layer2 = "Null"
layer3 = "Null"
for c1 in [add, minus, mul, div]:
layer1 = c1
for c2 in [add, minus, mul, div]:
layer2 = c2
for c3 in [add, minus, mul, div]:
layer3 = c3
if c3(c2(c1(numlist[0], numlist[1]), numlist[2]), numlist[3]) == 24:
return leaf(numlist, layer1, layer2, layer3, 24)

class Turn():
def __init__(self, numlist):
if len(numlist) == 4:
self.numlist = numlist
def calculate(self):
anslist = []
for i in sortlist:
templist = [self.numlist[i[0]], self.numlist[i[1]], self.numlist[i[2]], self.numlist[i[3]]]
anslist.append(tree(templist))
return anslist

def calc(templist):
ans = Turn(templist).calculate()
ans = [i for i in ans if i != None]
for i in ans:
print i
return ans

if __name__ == "__main__":
templist = []
for i in range(4):
templist.append(int(raw_input("Input No.%s number \n" %i)))
calc(templist)

*****************************************gui.py
# -*- coding: -UTF-8 -*-
__author__ = 'Administrator'

from Tkinter import *
import cui_24point

root = Tk()
root.geometry("800x400+400+400")
root.title("24點計算程式")

numlist = []
ansVar = StringVar()

def initvariable():
for i in range(4):
numlist.append(StringVar())

def drawframe():
entryframe = Frame(root, width = 300, height = 100)
for i in range(4):
Label(entryframe, text = str(i + 1)).grid(row = 1, column = i)
Entry(entryframe, textvariable = numlist[i]).grid(row = 2, column = i)

entryframe.pack()

ansframe = Frame(root, width = 100, height = 66)
anslistbox = Listbox(ansframe, width = 50, listvariable = ansVar)
ansscrollbar = Scrollbar(ansframe, command = anslistbox.yview)
anslistbox.configure(yscrollcommand = ansscrollbar.set)

anslistbox.pack(side = RIGHT)
ansscrollbar.pack(side = LEFT, fill = Y)
ansframe.pack()

def calculate():
templist = map(lambda i:float(i.get()), numlist)
for i in cui_24point.calc(templist):
anslistbox.insert(END, i)
anslistbox.insert(END, "********************")

Button(text = "計算", command = calculate).pack()

initvariable()
drawframe()

閱讀全文

與python撲克牌教程相關的資料

熱點內容
程序員的憤怒完整視頻 瀏覽:871
如何把iphoneapp變小 瀏覽:130
一個後端程序員的日常 瀏覽:416
51單片機歷史 瀏覽:890
怎樣減小pdf文件大小 瀏覽:31
和彩雲zip解壓 瀏覽:725
linux查看線程狀態 瀏覽:459
怎麼起文件夾名稱 瀏覽:49
北京交大編譯原理 瀏覽:982
linux執行java腳本 瀏覽:589
全能掃描加密文檔忘記密碼怎麼辦 瀏覽:75
極品飛車ol安卓版為什麼要關服 瀏覽:275
學生伺服器怎麼選 瀏覽:464
mac系統本身編譯器 瀏覽:151
頭條app如何設置橫屏模式 瀏覽:359
clion怎麼使用終端編譯 瀏覽:768
伺服器地址部署到公網 瀏覽:494
新桑塔納安卓大屏導航怎麼拆 瀏覽:384
程序員送給女友的禮物 瀏覽:434
ftp命令行查看文件數量 瀏覽:508