Python项目:使用random,模拟扑克牌发牌+猜单词游戏

文章介绍了Python的random库中的random.shuffle()函数,用于打乱列表顺序,并通过示例演示其用法。同时提及了random.choice()用于从列表中随机选择元素。文章还提到了一个猜单词游戏的实现,展示了Python在实际应用中的娱乐性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

random.shuffle() 是Python的内置库 random 提供的一个函数,用于打乱一个列表的顺序。这个函数会直接修改原列表,而不是返回一个新的列表。下面是一个使用 random.shuffle() 的示例:

import random  
  
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
random.shuffle(my_list)  
print(my_list)

运行这段代码后,my_list 中的元素将被随机打乱顺序。每次运行结果可能都不同。

----------------------开始发牌啦-----------------------

([(‘梅’, ‘4’), (‘杏’, ‘3’), (‘方’, ‘4’), (‘桃’, ‘8’), (‘方’, ‘10’), (‘桃’, ‘9’), (‘桃’, ‘6’), (‘杏’, ‘8’), (‘桃’, ‘7’), (‘杏’, ‘5’), (‘方’, ‘A’), (‘方’, ‘J’), (‘方’, ‘2’)], [(‘杏’, ‘J’), (‘杏’, ‘2’), (‘桃’, ‘2’), (‘方’, ‘8’), (‘杏’, ‘9’), (‘杏’, ‘Q’), (‘桃’, ‘5’), (‘方’, ‘6’), (‘杏’, ‘4’), (‘桃’, ‘K’), (‘梅’, ‘7’), (‘梅’, ‘3’), (‘方’, ‘9’)], [(‘梅’, ‘K’), (‘梅’, ‘6’), (‘梅’, ‘8’), (‘杏’, ‘6’), (‘杏’, ‘A’), (‘梅’, ‘2’), (‘方’, ‘3’), (‘梅’, ‘J’), (‘方’, ‘K’), (‘杏’, ‘7’), (‘杏’, ‘10’), (‘方’, ‘7’), (‘梅’, ‘A’)], [(‘桃’, ‘A’), (‘杏’, ‘K’), (‘桃’, ‘3’), (‘梅’, ‘Q’), (‘桃’, ‘10’), (‘方’, ‘Q’), (‘梅’, ‘10’), (‘桃’, ‘Q’), (‘桃’, ‘4’), (‘桃’, ‘J’), (‘梅’, ‘5’), (‘方’, ‘5’), (‘梅’, ‘9’)])

玩家1的牌: 梅4 杏3 方4 桃8 方10 桃9 桃6 杏8 桃7 杏5 方A 方J 方2

玩家2的牌: 杏J 杏2 桃2 方8 杏9 杏Q 桃5 方6 杏4 桃K 梅7 梅3 方9

玩家3的牌: 梅K 梅6 梅8 杏6 杏A 梅2 方3 梅J 方K 杏7 杏10 方7 梅A

玩家4的牌: 桃A 杏K 桃3 梅Q 桃10 方Q 梅10 桃Q 桃4 桃J 梅5 方5 梅9

↓ 扑克牌源码如下 ↓

import random

#suits = "♠ ♡ ♢ ♣".split()
suits = "桃 杏 梅 方".split()
values = "2 3 4 5 6 7 8 9 10 J Q K A".split()

# 1.洗牌
def create_cards():
    print('生成52张扑克牌+洗牌'.center(50, '-'))
    # 用列表推导式,生成52张牌
    cards = [(s, v) for s in suits for v in values]
    print(cards)
    # 用于打乱一个列表的顺序
    random.shuffle(cards)
    print(cards)
    return cards

# 2.发牌
def deal_cards():
    """Play a 4-player card game"""
    cards = create_cards()
    print('开始发牌啦'.center(50, '-'))
    # 4个人,每一轮,发一张纸牌即每隔4个单位取一次牌
    card_numbers = (cards[0::4], cards[1::4], cards[2::4], cards[3::4])
    # print(type(card_numbers))  <class 'tuple'>
    print(card_numbers)
    names = '玩家1 玩家2 玩家3 玩家4'.split()
    cards = {name: card for name, card in zip(names, card_numbers)}
    for name, card in cards.items():
        # print(card)
        card_str = " ".join(f'{suit}{value}' for (suit, value) in card)
        print(f'{name}的牌: {card_str}')

if __name__ == "__main__":
    deal_cards()

↓ 猜单词源码如下 ↓

random.choice() 是 Python 的 random 模块中的一个函数,它从提供的列表(或元组)中随机选择一个元素。这是一个简单的示例:

import random

# 创建一个列表
my_list = [1, 2, 3, 'a', 'b']
# 使用 random.choice 从列表中选择一个元素
chosen_element = random.choice(my_list)
# 打印被选择的元素
print(chosen_element)

游戏登入中…(猜单词游戏)

当前生命次数:3次

-----------游戏开始了…-----------

??????请猜一个,6位数的单词:python

python恭喜猜中了

import random

print('游戏登入中...')
# 单词列表
words = ['python', 're', 'math', 'tkinter', 'tables', 'encoding']
word = random.choice(words)
guesses = ''
turns = 3
print(f'当前生命次数:{turns}次')
print('游戏开始了...'.center(30, '-'))
while turns > 0:
    failed = 0
    for char in word:
        if char in guesses:
            print(char, end="")
        else:
            print("?", end=""),
            failed += 1
    if failed == 0:
        print("恭喜猜中了")
        break
    guess = input(f'请猜一个,{len(word)}位数的单词:')
    guesses += guess
    if guess not in word:
        turns -= 1
        print('猜错了,再努力一下?')
        print(f'你还有{turns}次生命'.center(30, '-'))

        if turns == 0:
            print('生命值为0,已经挂了,游戏结束')

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值