gpt4 book ai didi

python - for y in range(y) 在 Python 中

转载 作者:行者123 更新时间:2023-12-04 15:04:57 25 4
gpt4 key购买 nike

这似乎是一个愚蠢的问题,但实际上我已经把自己难住了。我试图写一个“金字塔”模式代码,我成功了,但我不知道我是怎么做到的。金字塔的前半部分很明显,后半部分是我做错的,我不明白代码为什么能正常工作。

这是我的代码:

for x in range(5): # I understand why this loop works, its fairly simple
for y in range(x+1):
print(y, end='')
print('')

for x in range(5):
for y in range(y): # This is the part I can't seem to wrap my head around
print(y, end='')
print('')

输出是:

0
01
012
0123
01234
0123
012
01
0

我一直盯着它看,但我无法理解 for y in range(y) 实际上是如何工作的。

最佳答案

range 对象描述了一个半开区间。这意味着它的上限不包含在其中:

>>> 5 in range(5)
False

for 循环评估其可迭代一次。重复使用可迭代名称或其参数不会影响循环。

>>> a = 3
>>> for b in range(a):
... print(b, a)
... a += 1 # does not extend the range!
0 3
1 4
2 5

这也意味着在可迭代对象中使用迭代变量是安全的。当循环分配给迭代变量时,可迭代对象已经被求值。


这意味着诸如 for y in range(y): 这样的构造将 a) 安全地分配给 y 而无需更改当前迭代,以及 b) 将 y0 迭代到 y-1。换句话说,循环正常工作,但之后 y 减一。

这种效果发生在第二个循环中:每次 for y in range(y) 循环运行时,y 都会稳定地减少 1。外层循环只是经常运行它以达到 0。比较:

>>> y = 4
>>> while y:
... print(y, ':', end='')
... for y in range(y):
... print(y, end='')
... print('\t=>', y)
4 :0123 => 3
3 :012 => 2
2 :01 => 1
1 :0 => 0

关于python - for y in range(y) 在 Python 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66339053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com