【问题标题】:How come 1 is printed instead of 0?为什么打印的是 1 而不是 0?
【发布时间】:2017-08-29 23:51:38
【问题描述】:

我很困惑为什么在打印“i”的值时从不打印“0”。为什么是这样。

提前感谢您的帮助。

for i in range(0,10):
  for z in range(i):
    print([i], end=' ')

【问题讨论】:

  • 您打印 2 两次。您打印 1 一次。你打印 0 零次。
  • 没关系,我想我现在明白了。 'z' 迭代没有开始,因为嵌套循环中的范围在第一次迭代中设置为 0,因此不会执行以下打印语句。 'i' 增加到 1,现在 'z' 变量可以开始参与,因为它的值大于 0。edit 您可以打印零,但必须在初始化后立即打印第一个 for 循环,在嵌套之前。

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


【解决方案1】:

如果你像这样修改你的代码:

for i in range(0, 10): 
    for z in range(0, i):
        print([z], end=' ')
    print('')

打印出来:

[0]
[0] [1]
[0] [1] [2]
[0] [1] [2] [3]
[0] [1] [2] [3] [4]
[0] [1] [2] [3] [4] [5]
[0] [1] [2] [3] [4] [5] [6]
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7] [8]

【讨论】:

  • @SMTH 对不起,我的朋友,我的业余时间和多处理知识都非常有限。我根本无法提供任何有用的建议。
【解决方案2】:

因为range(0)会给出[],所以不打印

【讨论】:

    【解决方案3】:

    python 中的 range 函数产生/给出高达(但不包括)其参数的值。所以list(range(5)) 将是[0,1,2,3,4],而list(range(0)) 将是... []

    由于您想为这个空列表中的每个值打印i,所以根本不打印i

    希望这会有所帮助,如果我解释得不够清楚,请告诉我!

    【讨论】:

      【解决方案4】:

      因为range(0) 没有任何东西可供您迭代,所以在这种情况下您就不要迭代:

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

      什么都不打印,因为它就像在做:

      for i in []: print(i)
      

      你可以通过一些实验来看到这一点:

      >>> list(range(0))
      []
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 2019-08-02
        • 1970-01-01
        相关资源
        最近更新 更多