【发布时间】:2021-11-23 07:59:38
【问题描述】:
我想要通过随机数学运算连接的四个数字的结果。虽然 ONE 随机操作和两个数字非常简单,但由于我的代码“点前一行”失败的顺序性质,我很难处理两个以上的问题。
例如:
import random
import operator
def random_operation(desired_result):
ops = {'+':operator.add,
'-':operator.sub,
'*':operator.mul,
'/':operator.truediv}
num = 8
op1 = random.choice(list(ops.keys()))
op2 = random.choice(list(ops.keys()))
op3 = random.choice(list(ops.keys()))
result = ops.get(op3)(ops.get(op2)(ops.get(op1)(num,num),num),num)
if result == desired_result:
print('Found {} {} {} {} {} {} {} = {}\n'.format(num, op1, num, op2, num, op3, num, result))
return result, desired_result
random_operation(8)
可能的输出是
Found 8 - 8 / 8 + 8 = 8.0
这是错误的,因为操作是按顺序完成的,而不是按照数学规则。有一个更好的方法吗?一种崩溃的方式
result = ops.get(op3)(ops.get(op2)(ops.get(op1)(num,num),num),num)
这样“行前点”有效吗?
【问题讨论】: