一行输出代码,却输出多行
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)