当前位置: 首页 > news >正文

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("按回车退出")

相关文章:

  • 用Python来表白,把情书写进她的照片里
  • 【K8S系列】有状态服务 VS 无状态服务
  • Android通知监听服务之NotificationListenerService使用篇
  • java编程计算机网页项目jsp高校体育竞技赛系统myeclipse开发Mysql数据库web结构
  • 【前端】Vue+Element UI案例:通用后台管理系统-导航栏
  • 【线性代数】三、特征值和特征向量
  • 基于 BP 神经网络特征提取的指纹识别应用(Matlab代码实现)
  • 渗透测试CTF-图片隐写的详细教程(干货)
  • 全栈性能测试详解
  • 子网掩码的作用是什么?VLSM又是怎么实现的
  • string类详解
  • Yolov5:强大到你难以想象──新冠疫情下的口罩检测
  • 四大含金量高的算法证书考试
  • 前端小游戏——植物大战僵尸
  • 网鼎杯网络安全大赛玄武组-SSRFME
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【Linux系统编程】快速查找errno错误码信息
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Cumulo 的 ClojureScript 模块已经成型
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JAVA之继承和多态
  • js数组之filter
  • laravel5.5 视图共享数据
  • mysql常用命令汇总
  • ReactNative开发常用的三方模块
  • Sass Day-01
  • 安装python包到指定虚拟环境
  • 警报:线上事故之CountDownLatch的威力
  • 微服务核心架构梳理
  • Linux权限管理(week1_day5)--技术流ken
  • 进程与线程(三)——进程/线程间通信
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax中的eval及dataType
  • $.proxy和$.extend
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (九十四)函数和二维数组
  • (算法)N皇后问题
  • (正则)提取页面里的img标签
  • (转)德国人的记事本
  • ../depcomp: line 571: exec: g++: not found
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net 获取url的方法
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • [acm算法学习] 后缀数组SA
  • [DM复习]关联规则挖掘(下)
  • [docker]docker网络-直接路由模式
  • [html] 动态炫彩渐变背景
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [iOS]随机生成UUID通用唯一识别码
  • [luogu P1527]矩阵乘法(矩形k小)
  • [PAT练级笔记] 34 Basic Level 1034 有理数四则运算