python经典小游戏:24速算(案例)

简介: python经典小游戏:24速算(案例)
import itertools
import random
import re

# 计算出结果的函数

def solution(data):
    for i in itertools.permutations(data):
        for j in itertools.product(['+', '-', '*', '/'], repeat=3):
            li = [
                f'(({i[0]}{j[0]}{i[1]}){j[1]}{i[2]}){j[2]}{i[3]}',
                f'({i[0]}{j[0]}{i[1]}){j[1]}({i[2]}{j[2]}{i[3]})',
                f'({i[0]}{j[0]}({i[1]}{j[1]}{i[2]})){j[2]}{i[3]}',
                f'{i[0]}{j[0]}(({i[1]}{j[1]}{i[2]}){j[2]}{i[3]})',
                f'{i[0]}{j[0]}({i[1]}{j[1]}({i[2]}{j[2]}{i[3]}))'
            ]
            for k in li:
                try:
                    if eval(k) == 24:
                        print(f'{k}=24')
                        return True
                except ZeroDivisionError:
                    pass
    return False

 

#机器给人出题


def A2():
    poke = [str(random.randint(1, 13)), str(random.randint(1, 13)),
            str(random.randint(1, 13)), str(random.randint(1, 13))]
    poke = sorted(poke)
    print(poke)
    expr = input("输入运算式:")
    li = re.split('[\+\-\*\/\(\)]', expr)
    li = sorted(li)[-4:]
    if len(li) == 4:
        if li == poke:
            if eval(expr) == 24:
                print("正确!")
            else:
                print('错误!')
        else:
            print("检测到错误,exit")
    else:
        print("请遵守规则")

 

#人给机器出题


def A1():
    print("规则:\n一、输入四个1-13的数字\n二、各个数字之间要使用空格")
    print("请给机器出题:")
    topic = input().split()
    for i in topic:
        i = int(i)
        if 1 <= i <= 13:
            topic = sorted(topic)
            flag = solution(topic)
            if flag:
                print("\n得出")
                break
            elif not flag:
                print("无法得出")
                break
        else:
            print("请输入1-13的数字")
            break

 

#框架


while True:
    print("1.给机器出题")
    print("2.机器出题")
    print("3.退出")
    print("选择序号:")
    cmd = input()
    while True:
        if cmd == '1' or '2' or '3':
            break
        else:
            print("数据不规范,请重新输入!")
    if cmd == '1':
        A1()
    elif cmd == '2':
        A2()
    elif cmd == '3':
        break
    else:
        pass
input("按回车退出")
相关文章
|
1天前
|
iOS开发 MacOS Python
Python 编程案例:谁没交论文?输出并生成电子表格
Python 编程案例:谁没交论文?输出并生成电子表格
17 9
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:查找指定文件大小的文件并输出路径
Python编程案例:查找指定文件大小的文件并输出路径
10 3
|
1天前
|
文件存储 iOS开发 MacOS
Python编程案例:文件查找并归类
Python编程案例:文件查找并归类
|
1天前
|
Python
Python编程案例:同一工作簿不同表单特定数据添加到工作簿的另一表单里
Python编程案例:同一工作簿不同表单特定数据添加到工作簿的另一表单里
|
1天前
|
iOS开发 MacOS Python
Python编程案例:根据姓名归档论文、报告
Python编程案例:根据姓名归档论文、报告
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
跟着penguins案例学Seaborn之Pairplot
跟着penguins案例学Seaborn之Pairplot
18 1
|
12天前
|
Linux
跟着mpg案例学Seaborn之Jointplot
跟着mpg案例学Seaborn之Jointplot
19 1
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:招生档案按省份地区归档
Python编程案例:招生档案按省份地区归档
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:中文金额转换并计算
Python编程案例:中文金额转换并计算
|
12天前
|
数据可视化
跟着exercise案例学Seaborn之FacetGrid
跟着exercise案例学Seaborn之FacetGrid
14 0