如何修复循环不打印结果并解决 "how many each of 10s and 50s, out of 160 bills, to total 60?"

How to fix for loop not printing results and solve "how many each of 10s and 50s, out of 160 bills, to total $1760?"

我正在处理下面链接的相同作业。

(Mo' Money- Making an "algorithm" to solve two variable algebra problems)

我已经尝试了以下链接作业的解决方案。

for fifties in range(161):
      tens = 160 - fifties
      if 50*fifties + 10*tens == 1760:
           break

我遇到了与我的代码相同的问题:

1.The 下面的代码以 "break" 结尾,不会打印 "fifties" 和 "tens"

的值

2.When 我手动打印值 50 总是打印值 160。

我的代码如下。

for tens in range(161,-1):
  fifty = (160 - 10*tens)/50 
  if 10*tens + 50*fifty == 1760:
     print(tens,fifty)

首先,range(161,-1) 不会迭代任何项目,因为第一个参数 start 大于第二个参数 end。就做 range(161).

另一件事是,您使用的变量与它们要表示的单位不一致。我将在逐步执行您的脚本时进行解释:

for tens in range(161):

在这里,您正在尝试不同数量的 10 美元钞票 - 从 0 到 160。看起来不错(现在我们已经停止迭代 nothing)。

    fifty = (160 - 10*tens)/50

现在,这没有意义。 10*tens 是您尝试的十位的 美元价值。你为什么要从 160 中减去它——账单总数?这是两个完全不同的单位,减去它们是没有意义的。相反,只需从钞票总数中减去十位数即可得到五十位数 fifty = 160 - tens

    if 10*tens + 50*fifty == 1760:
        print(tens,fifty)

假设 10 和 50 表示每种钞票的数量 - 前一点已涵盖 - 这没问题。

因此,总的来说,如果代码如下所示,您的代码将打印正确的十位和五十位值:

for tens in range(161):
    fifty = 160 - tens
    if 10*tens + 50*fifty == 1760:
        print(tens,fifty)

解决方案使用 break,因为这样做会退出循环,以便 tensfifty 的值正确,程序的其余部分可以使用它们。如上面的代码,fiftytens即使找到解决方案也会继续变化。使用 break 是一种在找到解决方案后保留值的直接方法。