如何用 Python 解决这个数学难题?

How to solve this math puzzle with Python?

   A + B = 8
   B + D = 8
   A + C = 13
   C - D = 6

如何求出A、B、C、D的值?

我假设这些值是整数和正数,然后这样做:

   a = range(0,14)
   b = c = d = a
   for i in a:
     for x in b:
      for y in c:
        for z in d:
          if (a[i] + b[x] == 8 and a[i] + c[y] == 13 and b[x] + d[z] == 8 and c[y]-d[z]==6):
            print(a[i],b[x],c[y],d[z])

但这不起作用。即使那样,我也会将范围扩展到 a = range(-100,100)。 在手动求解方程式后(在 Google 的帮助下)我知道涉及浮点数,例如A = 3.5

但是Python怎么解决呢。

如果您了解线性代数,则可以将问题构建为一个方程组,然后使用名为 numpy(帽子提示 @Griboullis)的免费可用且流行的库来解决这个问题是微不足道的:

import numpy as np

A = [[1, 1, 0, 0], 
     [0, 1, 0, 1], 
     [1, 0, 1, 0], 
     [0, 0, 1, -1]]
b = [8, 8, 13, 6]
answer = np.linalg.solve(A, b)

如果您想复习一下此 python 解决方案背后的矩阵 math/linear 代数,可以查看 https://www.mathsisfun.com/algebra/systems-linear-equations-matrices.html

不需要学习矩阵理论(至少不需要)。

>>> from sympy import *
>>> var('A  B C D')
(A, B, C, D)
>>> solve([A+B-8,B+D-8,A+C-13,C-D-6])
{B: 9/2, D: 7/2, C: 19/2, A: 7/2}

你只需要将每个等式如A+B=8表示为A+B-8=0的形式,然后省略'=0'部分即可。