【问题标题】:Python 3, change range in for-loopPython 3,在 for 循环中更改范围
【发布时间】:2018-03-09 09:54:44
【问题描述】:

我正在尝试创建一个 for 双 for 循环,其中内循环与外循环中的 i 具有相同的范围。这基本上就是我想要的,但是(显然)它不起作用:

num = 1
totalrow = range(5)
rownum = range(num)

for i in totalrow:
    for x in rownum:
        do stuff
        num = num + 1
        print (stuff)

所以我想要做的是获得 5 个循环,其中第一个循环给出 1 个结果,第二个循环给出 2 个结果,等等。我不知道是否需要进一步澄清,但我正在尝试在 python 中创建饮酒游戏乘坐公共汽车,我需要这个循环来进行金字塔回合。有可能这样还是需要找到不同的方法来解决这个问题?提前致谢。

编辑

我正在寻找的结果是通过使用以下代码实现的:

    for i in range(6):
        for j in range(i):
            card = random.choice(deck)
            deck.remove(card)
            print (card)

这给了我从我生成的牌组中的 15 张牌。我想要一个双 for 循环,这样我就可以分辨出每一“行”卡片之间的区别。现在我对输出不感兴趣,但对于任何感兴趣的人,下面的答案 smarx 显示了几种打印结果的好方法。

【问题讨论】:

  • 也许您可以为您的“小示例”包含所需的输出。那会有所帮助。据我所知,“5”应该不会太难,但如果它变得太长,一个缩写的预期输出就足够了。
  • 好的,以后有任何问题我都会记住这一点。谢谢!
  • 但也请edit这个问题包括输出,只是为了让未来的读者有用。

标签: python-3.x for-loop range


【解决方案1】:

在进入外部for 循环之前,您只计算一次rownum——但实际上您需要rownum 在每次迭代期间为不同的值。这意味着您需要在循环内部计算一个新范围。

做这样的事情:

for i in totalrow:
    for j in range(i):
        print(j)

这将按照您要求的模式循环。

【讨论】:

  • 谢谢,显然是我自己搞得太复杂了
  • 我都投了赞成票,但我需要 15 分才能看到它。
【解决方案2】:
for i in range(5):
    for j in range(i):
        print(j)

编辑

鉴于您要复制的游戏,您可能想要这样的游戏:

for i in range(4):
    for j in range(i + 1):
        print(j, end=' ')
    print()

# Output:
# 0
# 0 1
# 0 1 2
# 0 1 2 3

编辑 2

或者这样:

for i in range(4):
    print(' ' * i, end='')
    for j in range(4 - i):
        print(j, end=' ')
    print()

# Output:
# 0 1 2 3 
#  0 1 2 
#   0 1 
#    0 

【讨论】:

  • 这是我发的不是吗?
  • 看起来像,是的。
  • 我正在寻找类似您的第一次编辑的内容。谢谢!
  • 请注意,我刚刚更改了第一个编辑代码……它应该是 range(4)range(i + 1)
猜你喜欢
  • 2016-01-05
  • 2018-12-20
  • 2022-12-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
相关资源
最近更新 更多