Python:列表有趣挑战--斗地主扑克牌发牌_几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游-程序员宅基地

技术标签: python  list  

目录

游戏描述:

题目分析与关键点:

代码参考:


游戏描述:

本题限定用以下方法打乱序列中的元素
random.shuffle()

几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游戏过程。

新牌花色顺序为""、""、""、""

花色相同时按2、3、4、5、6、7、8、9、10、J、Q、K、A,最后是小王和大王排序。小王用jokers、大王用JOKERS表示。

按以下要求编写程序:

1.按顺序输出新牌
2.按洗好的顺序输出洗过的牌
3.将牌轮流分给参与游戏的人,按分牌的顺序输出每个人手上的牌
4.对每个人手上的牌升序排序并输出
5.输出时,每张牌间用空格分隔

样例输入:

3

1024

样例输出:
参与游戏的人数:3
新牌顺序
2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A jokers JOKERS
洗牌顺序
6 2 A 3 3 J 5 10 9 4 8 A 10 K 6 A 7 6 7 Q J 2 Q 8 K 5 5 2 Q 4 jokers 7 J 9 JOKERS 3 J 2 4 5 10 10 K 7 Q 8 4 8 9 9 K 6 3 A 
每个人手上分到的牌
6 3 5 4 10 A 7 2 K 2 jokers 9 J 5 K 8 9 6 
2 3 10 8 K 7 Q Q 5 Q 7 JOKERS 2 10 7 4 9 3 
A J 9 A 6 6 J 8 5 4 J 3 4 10 Q 8 K A 
每个人手上排序的牌
2 J K A 3 4 5 6 7 8 9 10 2 5 6 9 K jokers 
3 5 7 10 Q 2 7 8 9 10 2 4 Q K 3 7 Q JOKERS 
4 6 8 9 6 J Q K A 3 5 J A 4 8 10 J A 

题目分析与关键点:

1.若要设置同一个随机打乱情况,需要随机数种子;
2.可建立列表存储花色,将不同花色分开存储,再合并为“牌";
3.如果想不换行输出,在print指令的括号结尾加上:,end=''
4.由于列表中各数据的含义不同,所以无法正常排序,必须有参照条件;
5.一般的列表复制通常会随原表变化而变化,所以可用此语句新建列表内容:lis=list(list4)

更高级的组牌的方法可以采用列表推导式;发牌方法可采用切片。

代码参考:

新建文件保存以下代码,点击Run,便可运行

import random
h=int(input())
n=int(input())
random.seed(n)
list1 = ["2","3","4","5","6","7","8","9","10","J","Q","K","A"]
list2 = ["","","",""]
list3 = ["jokers","JOKERS"]
list4 = []
print("参与游戏的人数:",h,sep="")
print("新牌顺序")
for j in range(4):
    for i in range(13):
        list4.append(list2[j]+list1[i])
for x in range(52):
    print(list4[x],'',end='')
print(list3[0],list3[1])
print("洗牌顺序")
list4.append(list3[0])
list4.append(list3[1])
lis=list(list4)
random.shuffle(list4)
for y in range(54):
    print(list4[y],'',end='')
print()
print("每个人手上分到的牌")
if h == 3:
    list5 = []
    list6 = []
    list7 = []
    for z in range(18):
        list5.append(list4[3*z])
        list6.append(list4[3*z+1])
        list7.append(list4[3*z+2])
    for x in range(18):
        print(list5[x],'',end='')
    print()
    for x in range(18):
        print(list6[x],'',end='')
    print()
    for x in range(18):
        print(list7[x],'',end='')
    print()
 
elif h == 4:
    list5 = []
    list6 = []
    list7 = []
    list8 = []
    for z in range(13):
            list5.append(list4[4*z])
            list6.append(list4[4*z+1])
            list7.append(list4[4*z+2])
            list8.append(list4[4*z+3])
    list5.append(list4[52])
    list6.append(list4[53])
    for x in range(14):
      print(list5[x],'',end='')
    print()
    for x in range(14):
      print(list6[x],'',end='')
    print()
    for x in range(13):
      print(list7[x],'',end='')
    print()
    for x in range(13):
      print(list8[x],'',end='')
    print()
    list8 = [item for item in lis if item in list8]
 
elif h == 5:
    list5 = []
    list6 = []
    list7 = []
    list8 = []
    list9 = []
    for z in range(10):
            list5.append(list4[5*z])
            list6.append(list4[5*z+1])
            list7.append(list4[5*z+2])
            list8.append(list4[5*z+3])
            list9.append(list4[5*z+4])
    list5.append(list4[50])
    list6.append(list4[51])
    list7.append(list4[52])
    list8.append(list4[53])
    for x in range(11):
      print(list5[x],'',end='')
    print()
    for x in range(11):
      print(list6[x],'',end='')
    print()
    for x in range(11):
      print(list7[x],'',end='')
    print()
    for x in range(11):
      print(list8[x],'',end='')
    print()
    for x in range(10):
      print(list9[x],'',end='')
    print()
    list8 = [item for item in lis if item in list8]
    list9 = [item for item in lis if item in list9]
 
 
elif h == 6:
    list5 = []
    list6 = []
    list7 = []
    list8 = []
    list9 = []
    list10 = []
    for z in range(9):
        list5.append(list4[6*z])
        list6.append(list4[6*z+1])
        list7.append(list4[6*z+2])
        list8.append(list4[6*z+3])
        list9.append(list4[6*z+4])
        list10.append(list4[6*z+5])
    for x in range(9):
        print(list5[x],'',end='')
    print()
    for x in range(9):
        print(list6[x],'',end='')
    print()
    for x in range(9):
        print(list7[x],'',end='')
    print()
    for x in range(9):
        print(list8[x],'',end='')
    print()
    for x in range(9):
        print(list9[x],'',end='')
    print()
    for x in range(9):
        print(list10[x],'',end='')
    print()
    list8 = [item for item in lis if item in list8]
    list9 = [item for item in lis if item in list9]
    list10 = [item for item in lis if item in list10]
 
print("每个人手上排序的牌")
list5 = [item for item in lis if item in list5]
list6 = [item for item in lis if item in list6]
list7 = [item for item in lis if item in list7]
if h == 3:
    for x in range(18):
        print(list5[x],'',end='')
    print()
    for x in range(18):
        print(list6[x],'',end='')
    print()
    for x in range(18):
        print(list7[x],'',end='')
    print()

elif h == 4:
    for x in range(14):
        print(list5[x],'',end='')
    print()
    for x in range(14):
        print(list6[x],'',end='')
    print()
    for x in range(13):
        print(list7[x],'',end='')
    print()
    for x in range(13):
        print(list8[x],'',end='')
    print()

elif h == 5:
    for x in range(11):
        print(list5[x],'',end='')
    print()
    for x in range(11):
        print(list6[x],'',end='')
    print()
    for x in range(11):
        print(list7[x],'',end='')
    print()
    for x in range(11):
        print(list8[x],'',end='')
    print()
    for x in range(10):
        print(list9[x],'',end='')
    print()

elif h == 6:
    for x in range(9):
        print(list5[x],'',end='')
    print()
    for x in range(9):
        print(list6[x],'',end='')
    print()
    for x in range(9):
        print(list7[x],'',end='')
    print()
    for x in range(9):
        print(list8[x],'',end='')
    print()
    for x in range(9):
        print(list9[x],'',end='')
    print()
    for x in range(9):
        print(list10[x],'',end='')
    print()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_59171813/article/details/123854843

智能推荐

Leetcode 第338,342,344,345,367,389,392,404,405,409题(Java解法)-程序员宅基地

文章浏览阅读194次。Java解leetcode,助力面试之简单10道题(五)第338题 比特位计数解题思路代码第342题 4的幂解题思路代码第344题 反转字符串解题思路代码第345题 反转字符串中的元音字母解题思路代码第367题 有效的完全平方数解题思路代码第389题 找不同解题思路代码第392题 判断子序列解题思路代码第404题 左叶子之和解题思路代码第405题 数字转换为十六进制数解题思路代码第409题 最长回文串解题思路代码第338题 比特位计数示例 1:输入输出[3,2,3]3示例

C++ 学习笔记(对双端队列进行封装,实现数据生产者消费者)-程序员宅基地

文章浏览阅读698次。#pragma once #include <deque>#include <condition_variable>template <typename T>class MsgList { public: void add(const T& msg) { std::unique_lock<std::mutex> lock(mutex); queue.

python水表识别图像识别深度学习 CNN_水表 深度学习 识别-程序员宅基地

文章浏览阅读551次,点赞8次,收藏8次。重点:项目和文档是本人近期原创所作!程序可以将水表图片里面的数据进行深度学习,提取相关信息训练,lw1.3万字重复15%,可以直接上交那种!具体和看下面的目录。python水表识别,图像识别深度学习 CNN,Opencv,Keras。_水表 深度学习 识别

【DataSet】遥感图像方面的人工智能数据集_群智感知 图像数据集-程序员宅基地

文章浏览阅读288次。遥感图像方面的人工智能数据集数据集类别常用数据集目标检测数据集DSTL 卫星图像数据集;RSOD-Dataset 数据集;NWPUVHR-10地理遥感数据集图像分割数据集Inria AerialImage Labeling Dataset 遥感图像数据集遥感图像分类数据集UCMerced Land-Use Data Set 土地遥感数据集_群智感知 图像数据集

python使用镜像安装opencv_opencv_python安装镜像-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏11次。如何在pycharm中安装opencv_opencv_python安装镜像

手把手教你IDEA创建SSM项目结构_idea创建ssm web项目-程序员宅基地

文章浏览阅读595次,点赞2次,收藏8次。我的小站SSM项目需要用来管理依赖,所以我们需要先配置好,配置很容易,我就不演示了。首先,我们新建项目,勾选,选择模板,然后创建。这里耐心等待下载完成。可以看到,这里没用相关的文件夹。我们直接在文件夹上右键新建文件夹,下面会显示一个,直接创建就可以。此时,我们按照规范来,创建一个包。项目结构多种多样,比如三层架构啥的,按照你的需求来。我这里就稍微演示一下。这里这些结构都是可以自己按照规范命名,结构也有很多,分层架构方法也有很多,这里权当借鉴一下。我这里整合了一份依赖,如需使用可按照自己需求和对于版本进_idea创建ssm web项目

随便推点

Python编程基础:第六节 math包的基础使用Math Functions_ps math function-程序员宅基地

文章浏览阅读565次。第六节 math包的基础使用前言实践前言我们通常会对数值型变量进行计算,这里我们给出一些常用的函数用于辅助你的计算过程。常用的数学计算函数均在math包。实践首先我们导入math包,并定义一个浮点型变量pi将其赋值为3.14:import mathpi = 3.14如果我们需要计算浮点型变量四舍五入后的计算结果,用函数round()即可:print(round(pi))>>> 3如果我们需要向上取整,那就需要函数math.ceil():print(math.cei_ps math function

canal异常 Could not find first log file name in binary log index file_canal could not find first log file name in binary-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏2次。Could not find first log file name in binary log index file问题解决解决过程问题最近在使用canal来监测数据库的变化,处理变动的数据。由于有一段时间没有用了,这次启动在日志文件中看到这个异常 Could not find first log file name in binary log index file,详细信息如下:2020-12-16 19:14:42.053 [destination = tradeAndRefund , addr_canal could not find first log file name in binary log index file

【练习】生成10个1到20之间的不重复的随机数并降序输出-程序员宅基地

文章浏览阅读960次。分析:1.创建一个Random对象;2.创建一个hashset的集合对象;3.循环生成10个1-20的随机数4.输出。package edu.xalead;import java.util.*;public class Test { public static void main(String[] args) { Random r...

linux系统扩展名大全,Linux系统文件扩展名学习-程序员宅基地

文章浏览阅读3.2k次。Linux系统下的扩展名并不能标识该文件是属于哪一种类型的文件。文件是否可以执行等都跟文件的扩展名无关。因为文件script没有执行权限,所以也就无法执行,sh-3.2# touch ./scriptsh-3.2# ls -lh ./script-rw-r--r-- 1 root root 0 Dec 28 06:15 ./scriptsh-3.2#sh-3.2# ./scriptsh: /scr..._linux的扩展名

WPF TabControl 滚动选项卡_wpf 使用tabcontrol如何给切换的页面增加滚动条-程序员宅基地

文章浏览阅读1.3k次,点赞27次,收藏19次。我原本以为是很简单的事情,但是没想到实际做起来还是有很多的基础知识点的。我们平常写TabControl的时候,可能都很习惯了直接写TabControl+TabItem。但是TabControl负责了什么布局,TabItem负责了什么布局,我们都不知道。在《深入浅出WPF》中,我们可以看到TabControl属于ItemsControl我们去看看控件模板样式副本。WPF的xaml的优点是每个控件都是单独的逻辑,耦合低。缺点是写起来麻烦,每次改动约等于重新写一个新的。通过增加自己的工作量来降低了耦合我们可以看_wpf 使用tabcontrol如何给切换的页面增加滚动条

Apache Jmeter常用插件下载及安装及软硬件性能指标_jmeter插件下载-程序员宅基地

文章浏览阅读2.1k次,点赞24次,收藏47次。Apache Jmeter常用插件下载及安装_jmeter插件下载

推荐文章

热门文章

相关标签