摘要:最近在自学,无意看到群友一道比较有趣的问题,故尝试给出答案。目前给出的版本是最简单的情况,没有考虑比较牌大小中出现数字或者字母重复的情况,以后有时间或许会给出更精细的版本。编写程序,进行扑克牌大小比较。
最近在自学Python,无意看到群友一道比较有趣的问题,故尝试给出答案。目前给出的版本是最简单的情况,没有考虑比较牌大小中出现数字或者字母重复的情况,以后有时间或许会给出更精细的版本。
编写程序,进行扑克牌大小比较。利用函数方法,生成52张四色(梅花,方块,黑桃,红桃)扑克牌,玩家的人数由用户输入,根据玩家的人数进行发牌,然后比较大小。1. 牌的生成、发牌、大小比较,必须为函数2. 程序要有终止条件3. 用户不选择程序终止,那么继续发牌、出牌,进行大小比较提示:可以使用以下列表表示信息```pythonnum = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]color = ["红桃", "梅花", "方块", "黑桃"]playerName = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸", "子", "丑", "寅", "卯", "巳", "午", "未", "申", "酉", "戌", "亥"]```
# 需要用到的信息列表num = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]color = ["红桃", "梅花", "方块", "黑桃"]playername = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸", "子", "丑", "寅", "卯", "巳", "午", "未", "申", "酉", "戌", "亥"]
# 需要定义的函数def generate_porker(): """ 产生随机的52张牌,允许重复 """ gp = [] import random color_gp = random.choices(color, k = 52) num_gp = random.choices(num, k =52) for i in range(52): gp.append(color_gp[i] + num_gp[i]) return gpdef deal_porker(n, gp): """ 从52张牌中给每个玩家按照顺序发牌 """ players = playername[0: n] n_porker = int(52 / n) deal = [] import random for i in range(n): temp = [] temp.append(playername[i]) temp.append(gp[i * (n_porker) : (i + 1) * n_porker]) deal.append(temp) return dealdef discard_porker(n, deal): """ 随机让每个玩家抽一张牌出来 """ discard = [] import random for i in range(n): temp = [] temp.append(deal[i][0]) temp.append(random.choice(deal[i][1])) discard.append(temp) return discarddef compare(n, discard): """ 比较出来赢家(不考虑数字和花色重复的情况) """ temp = 0 for i in range(n): if len(discard[temp][1]) == 4: a = discard[temp][1][-2:] else: a = discard[temp][1][-1:] if len(discard[i][1]) == 4: b = discard[i][1][-2:] else: b = discard[i][1][-1:] if num.index(a) < num.index(b): temp = i return discard[temp][0]
flag = 1while flag: n = eval(input("请输入玩家的人数(可以被52整数的正整数,不大于22):")) if n < 0 or n > 22 or 52 % n > 0: print("请重新输入玩家的人数!") continue else: gp = generate_porker() deal = deal_porker(n, gp) for i in range(n): print("{}的牌为:{}".format(deal[i][0],deal[i][1])) discard = discard_porker(n, deal) for i in range(n): print("{}出的牌为:{}".format(discard[i][0], discard[i][1])) winner = compare(n, discard) print("{}赢".format(winner)) temp = eval(input("请选择你要执行的操作(1.继续 2.退出):")) if temp == 2: flag = 0
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122016.html
摘要:本期猫荐书栏目系列之六,就以此为话题,推荐给大家两本书它们都叫深度学习,但是内容很不一样。事实上,第一本书被很多人誉为深度学习的圣经,知名度极高,有一个昵称叫作花书。 最近出了两件大新闻,相信大家可能有所耳闻。 我来当个播报员,给大家转述一下: 1、中国队在第 11 界罗马尼亚数学大师赛(RMM)中无缘金牌。该项赛事是三大国际赛事之一,被誉为中学奥数的最高难度。其中一道题,令中国队全军...
阅读 2839·2023-04-26 00:26
阅读 3463·2023-04-25 14:30
阅读 3354·2021-10-09 09:44
阅读 3639·2021-09-28 09:35
阅读 1804·2021-09-22 16:02
阅读 1216·2021-09-03 10:30
阅读 3192·2019-08-30 15:53
阅读 2126·2019-08-30 14:07