我正在尝试编写一个程序,该程序遍历所有可能的简单方程以找到 24 的值。我设法完成了循环,但有些东西我没有抓住。
这个想法是有一个 3 级循环(我猜是 theta(n^3)?,我认为时间复杂度不好),这用于构建一个包含 4 个数字(在程序早期随机生成)的方程,这些数字被添加到我的列表中.
numList = [x2, x3, x4]
这是我的代码:
for i in range(4):
for j in range(4):
for k in range(4):
for l in range(len(numList)):
n += 1
print(i, j, k, " i, j, k")
print(x2, x3, x4, "x2, x3, x4")
print(x, "x supposed to be reset")
print(l, "val of l")
print(n, "val of n")
if i == 0 or j == 0 or k == 0:
x += "+"
x += str(numList[n])
print(x, "add")
if i == 1 or j == 1 or k == 1:
x += "-"
x += str(numList[n])
print(x, "sub")
if i == 2 or j == 2 or k == 2:
x += "*"
x += str(numList[n])
print(x, "mult")
if i == 3 or j == 3 or k == 3:
x += "/"
x += str(numList[n])
print(x, "div")
if n == 2:
print()
print("----")
print(x, "final")
print(eval(x), "evald")
if eval(x) is not 24:
x = x1
print(x, "x reset")
else:
print(eval(x), "= 24")
n = -1
print("----")
由于某种原因,当我正在构建和评估的字符串 (x) 没有重置,而是添加到上次循环迭代中生成的相同字符串(它应该是默认值)时,错误就会出现。x 的默认值是随机生成的:
x = str(randrange(1, 9))
这对我来说很奇怪,我不确定出了什么问题,循环就像一个没有中断的 switch 条件语句。这是我的控制台输出:粘贴到 pastebin
有人可以告诉我我做错了什么吗?或者我的代码中发生了什么我没有看到为什么 x 没有被重置,就好像它是一个正在构建的新字符串(这就是我想要的)?
编辑:这是整个来源:equation.py