鱼C论坛

 找回密码
 立即注册
查看: 2338|回复: 1

[作品展示] 田忌赛马模拟代码分享

[复制链接]
发表于 2022-4-20 21:12:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前几天写了个田忌赛马模拟
田忌赛马.py
def printplus(value):
    if None in value:
        return None
    else:
        print(value)

def change(Tuple):
    dict1, dict2 = Tuple
    for key1 in dict1:
        value1 = dict1[key1]
        print(f"{key1}了{value1}场", end=" ")
    print("\n")
    dict3 = {0: "下等马", 1: "中等马", 2: "上等马"}
    for key2 in dict2:
        Len = len(key2)
        if Len == 2:
            print("齐威王出"+dict3[key2[0]]+",田忌出"+dict3[key2[0]]+",结果为"+dict2[key2])
        elif Len == 4:
            print("齐威王出"+dict3[key2[2]]+",田忌出"+dict3[key2[3]]+",结果为"+dict2[key2]+"(齐威王第一轮出"+dict3[key2[0]]+";田忌第一轮出"+dict3[key2[1]]+")")
        elif Len == 6:
            print("齐威王出"+dict3[key2[2]]+",田忌出"+dict3[key2[3]]+",结果为"+dict2[key2]+"(齐威王第一轮出"+dict3[key2[0]]+",第二轮出"+dict3[key2[4]]+";田忌第一轮出"+dict3[key2[1]]+",第二轮出"+dict3[key2[5]]+")")
    print("\n")

def first(v=0):
    '''
    返回田忌赛马第一轮的排列组合
    
    By Tiger
    '''
    Ping = 0
    Sheng = 0
    Shu = 0
    results = {}
    for QiWeiWang in range(3):
        for TianJi in range(3):
            result = (QiWeiWang, TianJi)
            if QiWeiWang > TianJi:
                Shu += 1
                results[result] = "输"
            elif QiWeiWang < TianJi:
                Sheng += 1
                results[result] = "胜"
            else:
                Ping += 1
                results[result] = "平"
    Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
    if v == 0:
        return Return
    elif v == 1:
        change(Return)
        return Return + (None,)

def second(First, v=0):
    First1 = First[1]
    Ping = 0
    Sheng = 0
    Shu = 0
    results = {}
    for key in First1:
        for QiWeiWang in range(3):
            for TianJi in range(3):
                if QiWeiWang == key[0] or TianJi == key[1]:
                    continue
                key1, key2 = key
                result = (key1, key2 , QiWeiWang, TianJi)
                if QiWeiWang > TianJi:
                    Shu += 1
                    results[result] = "输"
                elif QiWeiWang < TianJi:
                    Sheng += 1
                    results[result] = "胜"
                else:
                    Ping += 1
                    results[result] = "平"
    Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
    if v == 0:
        return Return
    elif v == 1:
        change(Return)
        return Return + (None,)
    
def third(Second, v=0):
    Second1 = Second[1]
    Ping = 0
    Sheng = 0
    Shu = 0
    results = {}
    for key in Second1:
        for QiWeiWang in range(3):
            for TianJi in range(3):
                if QiWeiWang == key[2] or QiWeiWang == key[0] or TianJi == key[1]or TianJi == key[3]:
                    continue
                key3, key4, key5, key6 = key
                result = (key3, key4, QiWeiWang, TianJi, key5, key6)
                if QiWeiWang > TianJi:
                    Shu += 1
                    results[result] = "输"
                elif QiWeiWang < TianJi:
                    Sheng += 1
                    results[result] = "胜"
                else:
                    Ping += 1
                    results[result] = "平"
    Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
    if v == 0:
        return Return
    elif v == 1:
        change(Return)
        return Return + (None,)
田忌赛马test.py
from 田忌赛马 import *
First = first(1)
printplus(First)
Second = second(First, 1)
printplus(Second)
Third = third(Second, 1)
printplus(Third)

评分

参与人数 1鱼币 +1 收起 理由
python爱好者. + 1 直接暴露年纪 ^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-21 17:16:19 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表