如何使用嵌套的for循环来查找线性方程的x和y

5 python for-loop algebra

如果只有160张钞票,我试图找到多少10和50美元钞票进入1760美元.我想,在朋友的帮助下,使用嵌套的for循环是最好的方法,但我遇到了实现问题.我的想法是逐个迭代每个x直到160,如果那么等式!= 1760,我将y递增1并重新启动.

这些都是公式: 10x + 50y = 1760, x + y = 160

我想要的输出是:10(156) + 50(4) = 1760.但到目前为止,我所得到的只是:

10(1) + 50(0) = 10
10(2) + 50(1) = 70
10(3) + 50(2) = 130
10(4) + 50(3) = 190
10(5) + 50(4) = 250
...
...
...
10(156) + 50(30) = 3060
10(157) + 50(30) = 3070
10(158) + 50(30) = 3080
10(159) + 50(30) = 3090
10(160) + 50(30) = 3100
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当x = 31时,y停留在30开始.我不知道为什么.无论如何,这是我的代码:

for i in range(1, 161):
    print("10" + "(" + str(i) + ") + 50" + "(" + str(y) + ")" + " = " + str((10*i)+(50*y)))
    if ((10*i)+(50*y) < 1760):
        y += 1
Run Code Online (Sandbox Code Playgroud)

我不想要确切的答案.我只是想知道我哪里出错了.

joj*_*ojo 2

为什么你y会“卡在”30岁:

一旦总和超过 1760,就不会像往常一样y再次增加。这发生在和 处,这就是为什么你的值“卡在”30 处。(10*x + 50*y) < 1760Falsex=31y=30y


您的方法几乎完成,但逻辑中有一个小错误:

您可以将 10 张钞票累加x到 160,然后直接设置 50 张钞票的金额,y而不是仅在金额超过所需金额时将 10 张钞票 累加到 160,然后将 50 张钞票 累加 1在每次迭代中都是y = 160 - x. 这是因为您强制执行此条件 ( 160 = x + y),因此仅需要考虑满足此要求的配置。

所以,你是对的,你只需要一个for循环,但你可以在每次迭代中直接设置y160 = x + y,然后你只需要检查金额是否正确。

所以这个解决方案的Ansatz看起来像这样:

for x in range(0, 161):
    y = 160 - x
    # calculate the sum
    # if the sum is correct, break
Run Code Online (Sandbox Code Playgroud)