【问题标题】:Nested "for" loop will not change variable within loop嵌套的“for”循环不会改变循环内的变量
【发布时间】:2017-06-21 22:00:53
【问题描述】:
        for a in range(0,2):
            for x in range (0,16):
                bombs.append(((40*x),(40*a),39,39))

这是我在这个网站上的第一个问题,我对 python 还很陌生,所以任何提示和简单的解释都将不胜感激!

正如标题中所说,我似乎无法更改 .append 中的“a”变量。我收到的输出是这样的:

(0, 0, 39, 39) (40, 0, 39, 39) (80, 0, 39, 39) (120, 0, 39, 39) (160, 0, 39, 39) (200, 0, 39, 39) 等等……

(0, 0, 39, 39) (40, 0, 39, 39) (80, 0, 39, 39) (120, 0, 39, 39) (160, 0, 39, 39) (200, 0, 39, 39) 等等……

第一组显然是正确的,但是当它再次循环时,变量保持在 0 而不是 40*a 的值!

我希望我犯了一个简单的错误!谢谢你

更新完整代码:

def bomb():
    global bombs
    bombs=[]

    for a in range(0,2):
        for x in range (0,16):
            bombs.append(((40*x),(40*a),39,39))
            print bombs[x]

【问题讨论】:

  • [(0, 0, 39, 39), (40, 0, 39, 39), (80, 0, 39, 39), (120, 0, 39, 39), (160, 0, 39 , 39), (200, 0, 39, 39), (240, 0, 39, 39), (280, 0, 39, 39), (320, 0, 39, 39), ( 360, 0, 39, 39), (400, 0, 39, 39), (440, 0, 39, 39), (480, 0, 39, 39), (520, 0, 39, 39), (560, 0, 39, 39), (600, 0, 39, 39), (0, 40, 39, 39), (40, 40, 39, 39), (80, 40, 39, 39), (120, 40, 39, 39), (160, 40, 39, 39), (200, 40, 39, 39), (240, 40, 39, 39), (280, 40, 39, 39), (320, 40, 39, 39), (360, 40, 39, 39), (400, 40, 39, 39), (440, 40, 39, 39), (480, 40, 39, 39), (520, 40, 39, 39), (560, 40, 39, 39), (600, 40, 39, 39)]
  • 这是我运行程序并打印 bombs 时的输出。 a 的值正在发生变化 :) 因为它是一个嵌套循环,它在 16 个值之后发生变化,如 (0, 40, 39, 39) 所示
  • 我无法重现您的问题:ideone.com/DATDNd 这真的是整个代码吗?

标签: python for-loop append


【解决方案1】:

这些是嵌套循环。你的内循环

for x in range (0,16):

将在外循环的第一次迭代期间迭代 16 次。只有在这 16 次迭代之后,只有 x 发生变化,a 才会第一次发生变化!

[..., (600, 0, 39, 39),  (0, 40, 39, 39), ...]

【讨论】:

  • 但是问题中的示例输出中没有(0, 40, 39, 39)
  • 是的,我知道,对不起,我只是缩短了问题中的输出,但是在 16 次迭代之后,它第二次再次循环。 .append 中的“a”仍然给我一个 0 的结果
  • @JackIndge 好吧,那么您不仅没有发布相关输出,还没有发布所有相关代码;)
  • 是的,如果 OP 提到他出于某种原因正在做 print bombs[x] 会有所帮助.. :-)
  • 对不起,很明显它正在做它应该做的事情,但我正在查看错误的输出......正如我所说的,我对此很陌生!不过谢谢大家的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2018-12-25
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多