Python:列表有趣挑战--斗地主扑克牌发牌

目录

游戏描述:

题目分析与关键点:

代码参考:


游戏描述:

本题限定用以下方法打乱序列中的元素
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()

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值