python实战案例:仿羊了个羊 实战分析

最近在别的学习群里看到一个同学仿造仿羊了个羊的基本逻辑,写了一个简化版的喵了个喵,代码如下:

# -*- encoding: utf-8 -*-
'''
@File    :   喵了个喵.py
@Author  :   北极星光
@Contact :   light22@126.com
'''
import random

class MiaoMiao:
    space_l = [[], [], [], [], [], [], []]

    def __init__(self) -> None:
        self.generate()
        self.check()

    def generate(self):
        '''生成牌局'''

        cat_pool = ['白猫', '黑猫', '黄猫', '蓝猫', '花猫', '粉猫', '大猫', '小猫']

        self.l1 = [random.choices(cat_pool) for i in range(3)]
        self.l2 = [random.choices(cat_pool) for i in range(3)]
        self.l3 = [random.choices(cat_pool) for i in range(3)]
        self.l4 = [random.choices(cat_pool) for i in range(3)]
        self.l5 = [random.choices(cat_pool) for i in range(3)]
        self.l6 = [random.choices(cat_pool) for i in range(3)]
        self.l7 = [random.choices(cat_pool) for i in range(3)]
        self.l8 = [random.choices(cat_pool) for i in range(3)]
        self.l9 = [random.choices(cat_pool) for i in range(3)]

    def check(self):
        '''判断:如果出现无解的情况则重新洗牌'''
        x = True
        
        while x:
            x = False
        
            sum_l = self.l1 + self.l2 + self.l3 + self.l4 + \
                self.l5 + self.l6 + self.l7 + self.l8 + self.l9
            for i in sum_l:
                if sum_l.count(i) % 3 != 0:
                    x = True
                    self.generate()                    
                    break


    def select(self, l: list):
        if len(l) == 0:
            print('当前位置已经没有猫了,请重新选择!')
            return
        tmp_l = l.pop()
        if tmp_l not in self.space_l:
            self.space_l[self.space_l.index([])] = tmp_l
        else:
            self.space_l.insert(self.space_l.index(tmp_l), tmp_l)
            self.space_l.pop()
        if self.spac
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值