筱枭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 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来