【问题标题】:Python for print last value of each if statementPython用于打印每个if语句的最后一个值
【发布时间】:2017-10-23 22:56:24
【问题描述】:

我正在 python 中执行 for 循环,但我不知道如何打印在 if 语句的每个分支中累积的最后一个值...即(不是循环的每次迭代):

a = 0
for i in range(0,10):
    if i<2:
        a+= i
    elif i>7:
        a+= i
print a

第一个分支将a 递增到 0 和 1,所以我想打印“1”。第二个分支也将a 增加了两次,分别为 9 和 18,所以我想打印“18”。

电流输出

18

预期输出

1
18

【问题讨论】:

  • 你确定那个编辑OP吗?你的问题现在完全没有意义了。
  • 请重新阅读您的整个问题并解决它。
  • 请解决您的问题。
  • 你是对的,例子太简单了,答案无穷无尽,我会发布真正的命令,谢谢
  • 希望您喜欢我的编辑。我想我不需要一个更复杂的例子就很清楚了。

标签: python for-loop if-statement


【解决方案1】:

如果您只想打印总和,我建议您使用list 推导式,如下所示:

result = [sum(x for x in range(0,10) if x < 2), sum(y for y in range(0,10) if y >7 or y < 2)]
for i in result:
    print i

输出:

1
18

如果您想改用if-statements,您可以使用boolean 来检查是否打印了低值:

a = 0
printed = False
for i in range(0,10):
    if i<2:
        a+= i
    elif i>7:
        if not printed:
            print a
            printed = True
        a+= i
print a

输出:

1
18

【讨论】:

  • 这个问题已经很清楚了。这不是 OP 想要的。
  • @MadPhysicist 这是因为该问题被编辑了 3 次以上,得到了 3 个不同的预期结果
  • 您最初显示的结果对其中任何一个都不是有效选项。感谢您的修复。
  • 另外,a=result[-1] 可能
【解决方案2】:

现在您已经稍微澄清了您的意图,看起来您正在尝试为特定范围内的每个元素递增,然后打印该范围的最后一个元素。

对于您展示的简单示例,请执行

a = 0
for i in range(10):
    if i < 2:
        a += i
        if i == 1:
            print(a)
    elif i > 7:
        a += i
        if i == 9:
            print(a)

从更一般的意义上说,您可以使用以下事实,即您在此处确实有多个范围以及range objects are indexable

在您的示例中,您有两个范围:

ranges = [range(2), range(7, 10)]

您可以遍历它们,在每个范围的最后一个元素上进行递增和打印:

a = 0
for rng in ranges:
    for i in rng:
        a += i
        if i == rng[-1]:
            print(a)

事实上,你根本不需要内部循环,因为range 对象可以直接传递给sum

for rng in ranges:
    a += sum(rng)
    print(a)

【讨论】:

    【解决方案3】:

    正如@gilgameshbk 所说,只需缩进print a 语句。与 c 或 Java 等其他语言不同,Python 对缩进很敏感。您的代码应如下所示 -

    a=0
    for i in range(0,10):
        if i<1 or i>8 :
            a+=i
            print a
    

    问题在于您的print 语句超出了if 块。请注意,您应该使用or 以使代码更紧凑。

    【讨论】:

    • 你真的不需要if中的条件周围的那些括号。
    • @MadPhysicist 是的。那是一个错误。我已经开始从 c 学习计算机。所以我倾向于用 C 来思考。非常感谢
    【解决方案4】:

    您可以使用两个打印语句,如下所示:

    a = 0
    for i in range(0,10):
      if i<1:
        a+= i
        print(a)
      elif i>8:
        a+= i
        print(a)
    

    【讨论】:

      【解决方案5】:
      for i in range(0,10):
          if (i < 1) or (i > 8):
              print i
      

      生产:

      0
      9
      

      【讨论】: