鱼C论坛

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

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

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

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

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

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

  6. def change(Tuple):
  7.     dict1, dict2 = Tuple
  8.     for key1 in dict1:
  9.         value1 = dict1[key1]
  10.         print(f"{key1}了{value1}场", end=" ")
  11.     print("\n")
  12.     dict3 = {0: "下等马", 1: "中等马", 2: "上等马"}
  13.     for key2 in dict2:
  14.         Len = len(key2)
  15.         if Len == 2:
  16.             print("齐威王出"+dict3[key2[0]]+",田忌出"+dict3[key2[0]]+",结果为"+dict2[key2])
  17.         elif Len == 4:
  18.             print("齐威王出"+dict3[key2[2]]+",田忌出"+dict3[key2[3]]+",结果为"+dict2[key2]+"(齐威王第一轮出"+dict3[key2[0]]+";田忌第一轮出"+dict3[key2[1]]+")")
  19.         elif Len == 6:
  20.             print("齐威王出"+dict3[key2[2]]+",田忌出"+dict3[key2[3]]+",结果为"+dict2[key2]+"(齐威王第一轮出"+dict3[key2[0]]+",第二轮出"+dict3[key2[4]]+";田忌第一轮出"+dict3[key2[1]]+",第二轮出"+dict3[key2[5]]+")")
  21.     print("\n")

  22. def first(v=0):
  23.     '''
  24.     返回田忌赛马第一轮的排列组合
  25.    
  26.     By Tiger
  27.     '''
  28.     Ping = 0
  29.     Sheng = 0
  30.     Shu = 0
  31.     results = {}
  32.     for QiWeiWang in range(3):
  33.         for TianJi in range(3):
  34.             result = (QiWeiWang, TianJi)
  35.             if QiWeiWang > TianJi:
  36.                 Shu += 1
  37.                 results[result] = "输"
  38.             elif QiWeiWang < TianJi:
  39.                 Sheng += 1
  40.                 results[result] = "胜"
  41.             else:
  42.                 Ping += 1
  43.                 results[result] = "平"
  44.     Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
  45.     if v == 0:
  46.         return Return
  47.     elif v == 1:
  48.         change(Return)
  49.         return Return + (None,)

  50. def second(First, v=0):
  51.     First1 = First[1]
  52.     Ping = 0
  53.     Sheng = 0
  54.     Shu = 0
  55.     results = {}
  56.     for key in First1:
  57.         for QiWeiWang in range(3):
  58.             for TianJi in range(3):
  59.                 if QiWeiWang == key[0] or TianJi == key[1]:
  60.                     continue
  61.                 key1, key2 = key
  62.                 result = (key1, key2 , QiWeiWang, TianJi)
  63.                 if QiWeiWang > TianJi:
  64.                     Shu += 1
  65.                     results[result] = "输"
  66.                 elif QiWeiWang < TianJi:
  67.                     Sheng += 1
  68.                     results[result] = "胜"
  69.                 else:
  70.                     Ping += 1
  71.                     results[result] = "平"
  72.     Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
  73.     if v == 0:
  74.         return Return
  75.     elif v == 1:
  76.         change(Return)
  77.         return Return + (None,)
  78.    
  79. def third(Second, v=0):
  80.     Second1 = Second[1]
  81.     Ping = 0
  82.     Sheng = 0
  83.     Shu = 0
  84.     results = {}
  85.     for key in Second1:
  86.         for QiWeiWang in range(3):
  87.             for TianJi in range(3):
  88.                 if QiWeiWang == key[2] or QiWeiWang == key[0] or TianJi == key[1]or TianJi == key[3]:
  89.                     continue
  90.                 key3, key4, key5, key6 = key
  91.                 result = (key3, key4, QiWeiWang, TianJi, key5, key6)
  92.                 if QiWeiWang > TianJi:
  93.                     Shu += 1
  94.                     results[result] = "输"
  95.                 elif QiWeiWang < TianJi:
  96.                     Sheng += 1
  97.                     results[result] = "胜"
  98.                 else:
  99.                     Ping += 1
  100.                     results[result] = "平"
  101.     Return = ({"胜": Sheng, "输": Shu, "平": Ping}, results)
  102.     if v == 0:
  103.         return Return
  104.     elif v == 1:
  105.         change(Return)
  106.         return Return + (None,)
复制代码

田忌赛马test.py
  1. from 田忌赛马 import *
  2. First = first(1)
  3. printplus(First)
  4. Second = second(First, 1)
  5. printplus(Second)
  6. Third = third(Second, 1)
  7. printplus(Third)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-21 17:16:19 | 显示全部楼层
6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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