【问题标题】:How to sum up subtractions of 2 numbers in a list?如何总结列表中2个数字的减法?
【发布时间】:2021-02-19 15:44:12
【问题描述】:

每次有变化时,您都会收到一份清单,其中列出了商店中有多少人。例如 - 一开始有 0 人,然后 2 人进来,所以商店里有 2 人,当 2 人进来时有 4 人,但 3 人离开时 1 人,然后又有 2 人进来时 3 人。所以输入列表看起来像 0 2 4 1 3。你必须编写一个程序来计算商店里的总人数,在这种情况下,它是 6。

a=[int(i)for i in input().split()]
for i in range (1,len(a)):
    if a[i] > a[i-1]:
        b = a[i] - a[i-1]

据我所知。如果数字大于前一个,我就减去,现在我必须总结所有的减法。我该怎么做?

【问题讨论】:

  • 你需要一些东西来存储b的值的总和
  • 那么您实际上尝试过什么来解决这个问题?我看到了有效的部分,但是您对无效的部分做了什么?这不是你知道的代码编写或教程服务。
  • 您可以将每个减法结果放在一个列表中 (b.append(a[i] - a[i-1])),然后在最后将该列表相加:sum(b)。或者只保留一个总和,每次迭代都添加b
  • 无法解决。如果三个人可以同时离开,那么两个人可以同时离开,一个人可以同时进来,与一个人离开没有区别。此外,同一个人可能多次进出,与进出的不同人无法区分。

标签: python list sum subtraction


【解决方案1】:

从逻辑上讲,您应该添加所有成对差异。

a = [0] + [int(i) for i in input().split()]

total = sum(max(0, y-x) for x, y in zip(a, a[1:]))

前面的附加0 会在开始时商店有人的情况下接车。

【讨论】:

    【解决方案2】:

    创建一个total 变量。从a[0] 开始,在计算b 时随时添加。

    a = [int(i) for i in input().split()]
    total = a[0]
    for i in range(1, len(a)):
        if a[i] > a[i-1]:
            b = a[i] - a[i-1]
            total += b
    

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多