筱枭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日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法