【问题标题】:Does "i" in a for loop default to a value of 1 in Python? [duplicate]for 循环中的“i”是否默认为 Python 中的值 1? [复制]
【发布时间】:2019-08-04 16:32:56
【问题描述】:

我只是有一个关于 Python 3 中 for loop 的基本问题。这是一个愚蠢而简单的问题,但我认为这里的其他人对我来说知识渊博得多,而且大多数答案都很聪明!我不自称聪明,所以我想澄清一下。运行这个循环似乎只添加了一个值。我将x 定义为1,所以这是有道理的,但我没有给i 一个真正的值,它似乎很自然地是1

for i in range(0, 50):
    x = 1
    i = x + i
    print(i)

我没有遇到错误,我只是好奇幕后发生了什么。希望比我更了解这一点的人提供一些解释!

【问题讨论】:

  • 在这一点上,您似乎只是在迷惑自己。 通过写i in range(0, 50)告诉i应该采用什么值。然后,您将1 添加到i 在范围对象中获取的每个值。 (从 0 开始,如果你注意到的话。)改变范围,看看会发生什么。
  • 既然您将x 定义为1,您将每次打印x + 该值。由于范围以0 开头,那么i+x1 开头。
  • 啊哈,我明白你的意思了。范围是给i 它的值,是吗?从 0 开始,添加 x,然后 1,添加 x,依此类推。
  • 确实如此。这意味着您对变量 i 所做的任何额外工作都将在下一次迭代中丢弃,因为 i 已从 Ranges 中重新分配了一个新值。
  • 啊,是的,我知道发生了什么。谢谢你。我试图做一些事情,比如每次循环重新开始时增加i 的值,比如斐波那契数列。你说得对,我把自己弄糊涂了。非常感谢。

标签: python loops for-loop variables default-value


【解决方案1】:

循环中不需要x=ii=x+i

for i in range(0, 50):
    print(i)

可以正常工作并输出0,1,2,3...47,48,49i 是根据range(0,50) 设置的。如果您希望 i 从 1 开始,只需将范围更改为 range(1,50)。您的代码还为每个 i 值添加了 1,因此为了在该范围内考虑这一点,您需要执行 range(1,51) 这将打印 1,2,3...48,49,50

进一步阅读

我建议阅读这些以更好地了解 for 循环的工作原理以及有关范围的更多信息:

Range()

For Loops

【讨论】:

  • 你改变了行为。要使其打印相同的数字,您需要使用range(1, 51)
猜你喜欢
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 2019-07-13
  • 2014-08-09
  • 2011-05-13
  • 1970-01-01
相关资源
最近更新 更多