导航:首页 > 编程语言 > 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扑克牌教程相关的资料

热点内容
最新linuxqq 浏览:228
亲密app如何发位置给我 浏览:374
e筋加密狗旧锁是什么意思 浏览:409
穷忙pdf 浏览:267
单片机的c语言应用程序设计pdf 浏览:521
华纳云服务器有什么用 浏览:892
ppt程序员自我介绍 浏览:406
下达命令翻译 浏览:869
怎么编码上传视频不被压缩 浏览:953
荣耀3cre文件夹 浏览:680
拍摄照片可以加密吗 浏览:843
android联系人邮件 浏览:601
抖音上超级福袋app抽奖在哪里 浏览:237
拍一段小视频用什么app 浏览:628
服务器网卡有什么好处 浏览:93
javasql格式化 浏览:613
小爱同学机器人的命令词 浏览:973
检验signature的php示例代码 浏览:173
android内录 浏览:778
腾讯云轻量应用服务器服务商 浏览:179