筱枭666 2022-09-21 13:00 采纳率: 71.4%
浏览 23
已结题

python输出问题

一行输出代码,却输出多行

from typing import List

# import keyboard
import random
import re
import itertools
import sys
import time
# import keyboard as keyboard

arr1 = []
arr = [str(random.randint(1, 13)), str(random.randint(1, 13)), str(random.randint(1, 13)),
       str(random.randint(1, 13)), ]
# arr = [1,2,3,4]
print(f'四个随机数:{arr}')
expr = input("请输入计算式:")
print(expr)
print(eval(expr))
if sorted(arr) == sorted(re.split('[\+\-\*\/\(\)]', expr)):
    if eval(expr) == 24:
        print('恭喜你答对了哟!')
    else:
        print('对不起,你答错了!')
        for i in itertools.permutations(arr):
            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:
                            line = k
                            arr1.append(line)
                    except:
                        pass
            if len(arr1) != 0:
                print("正解为:" + arr1[0])
            else:
                print("此题无解")

else:
    print ('你作弊了!')
    for i in itertools.permutations(arr):
        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:
                        line = k
                        arr1.append(line)
                except:
                    pass

if len(arr1) != 0:
    print("正解为:"+ arr1[0])
else:
    print("此题无解")
time.sleep(0.1)

img

  • 写回答

3条回答 默认 最新

  • gangganghao2 2022-09-21 13:25
    关注

    for循环内有print函数,导致循环打印了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 创建了问题 9月21日

悬赏问题

  • ¥15 单片机配网,继电器开关,广播
  • ¥60 Qcustomplot绘制实时动态曲线
  • ¥20 运用matlab画x-y图
  • ¥15 用idea运行项目,运行tomcat报错:断言失败
  • ¥15 Sqlserver查询链接服务器数据问题
  • ¥15 Bibtex4Word 引用中文文献
  • ¥20 用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件
  • ¥20 matlab中的双层数值积分
  • ¥50 服务器打印水晶报表问题
  • ¥30 gradle环境下javafx项目如何使用druid连接池