IT_zhang学IT 2022-09-18 17:08 采纳率: 0%
浏览 32

第三周学习笔记,扑克牌24点,Python

第三周笔记

四张扑克通过加减乘除和括号算24点

1. 电脑出题

1. 1.电脑产生4个随机数,并判断输入的结果是否为24

import random
import re

poke = [str(random.randint(1, 13)), str(random.randint(1, 13)), str(random.randint(1, 13)),str(random.randint(1, 13))]
        expr = input('请输入算式:')
        if sorted(poke)==sorted(re.split('[\+\-\*\/]', expr)):
            print('恭喜你答对了')
        else:
            print('输入错误')

1.2.防止用户作弊,输入不是给的四个数,更改判断的部分

expr = input('请输入算式:')
        a = re.split('[\+\-\*\/\(\)]', expr)
        res = [i for i in a if i != ""]
        if sorted(poke) == sorted(res):
            try:
                if eval(expr) == 24:
                    print('恭喜你答对了')
                else:
                    print('你答错了')
            except:
                pass
        else:
            print('输入错误')

2.电脑答题

2.1. 输入四个数字电脑穷举法计算是否==24

import itertools
# python f字符串 f'{}' 花括号里面可以写表达式
expr = input('请输入四个数字:')
        for i in itertools.permutations(re.split('[\,]', expr)):  #4个数字
            for j in itertools.product(['+', '-', '*', '/'], repeat=3): #四个运算符取三个
                expr = [f'{i[0]}{j[0]}{i[1]}{j[1]}{i[2]}{j[2]}{i[3]}']
                if eval == 24:
                     print({i[0]}{j[0]}{i[1]}{j[1]}{i[2]}{j[2]}{i[3]}, '==24')
                else :
                    print("无解")

2.2.加上括号出现的情况

expr = input('请输入四个数字:')
        for i in itertools.permutations(re.split('[\,]', expr)):
            for j in itertools.product(['+', '-', '*', '/'], repeat=3):
                expr = [f'(({i[0]}{j[0]}{i[1]}){j[1]}{i[2]}){j[2]}{i[3]}',  # 123
                        f'({i[0]}{j[0]}{i[1]}){j[1]}({i[2]}{j[2]}{i[3]})',  # 132
                        f'({i[0]}{j[0]}({i[1]}{j[1]}{i[2]})){j[2]}{i[3]}',  # 213
                        f'{i[0]}{j[0]}(({i[1]}{j[1]}{i[2]}){j[2]}{i[3]})',  # 231
                        f'{i[0]}{j[0]}({i[1]}{j[1]}({i[2]}{j[2]}{i[3]}))',  # 321
                        ]
                for k in expr:
                    try:
                        if eval(k) == 24:
                            print(k, '==24')
                    except ZeroDivisionError:
                        # ZeroDivisionError可以省略
                        pass

3.最后整合一下

"""
@author:zhang
@software: PyCharm
@file: 24点游戏.py
@time: 2022/9/16 19:07
"""
import random
import re
import itertools

while True:
    print("*****************")
    print("*\t算24点小游戏\t*")
    print("*\t1.电脑出题\t*")
    print("*\t2.电脑做题\t*")
    print("*\t3.退出游戏\t*")
    print("*****************")
    num = input("请选择菜单数字按Enter键(1~3):")
    if num == "1":
        poke = [str(random.randint(1, 13)), str(random.randint(1, 13)), str(random.randint(1, 13)),str(random.randint(1, 13))]
        print('第二单元教学用《CUI速算24点》基础版')
        print(f'四个随机数:{poke}')
        expr = input('请输入算式:')
        a = re.split('[\+\-\*\/\(\)]', expr)
        res = [i for i in a if i != ""]
        if sorted(poke) == sorted(res):
            try:
                if eval(expr) == 24:
                    print('恭喜你答对了')
                else:
                    print('你答错了')
            except:
                pass
        else:
            print('输入错误')
    elif num == "2":
        expr = input('请输入四个数字:')
        for i in itertools.permutations(re.split('[\,]', expr)):
            for j in itertools.product(['+', '-', '*', '/'], repeat=3):
                expr = [f'(({i[0]}{j[0]}{i[1]}){j[1]}{i[2]}){j[2]}{i[3]}',  # 123
                        f'({i[0]}{j[0]}{i[1]}){j[1]}({i[2]}{j[2]}{i[3]})',  # 132
                        f'({i[0]}{j[0]}({i[1]}{j[1]}{i[2]})){j[2]}{i[3]}',  # 213
                        f'{i[0]}{j[0]}(({i[1]}{j[1]}{i[2]}){j[2]}{i[3]})',  # 231
                        f'{i[0]}{j[0]}({i[1]}{j[1]}({i[2]}{j[2]}{i[3]}))',  # 321
                        ]
                for k in expr:
                    try:
                        if eval(k) == 24:
                            print(k, '==24')
                    except ZeroDivisionError:
                        # ZeroDivisionError可以省略
                        pass
    else:
        break

4.转成.exe游戏

项目路径的终端下输入:

pip install pyinstaller -i https://pypi.douban.com/simple

pyinstaller -F -i 应用图标.ico 文件名.py

https://igoutu.cn/icons%E6%89%BE%E5%9B%BE%E6%A0%87%E7%9A%84%E7%BD%91%E7%AB%99

https://www.aconvert.com/cn/icon/png-to-ico/%E5%B0%86jpg%E8%BD%AC%E5%8C%96%E6%88%90ico%E7%9A%84%E7%BD%91%E7%AB%99

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-19 02:35
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月18日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出