【问题标题】:python 3.x for loop not stopping at desired valuepython 3.x for 循环未在所需值处停止
【发布时间】:2016-04-04 23:01:37
【问题描述】:

我正在阅读一本用 Python 2.x 编写的初学者书籍,但我决定使用 3.5 来阅读它

这本书是关于数据争论的,在使用库 xlrd 读取 Excel 文件时,它提供了一个关于 Counters 工作原理的快速示例:

count = 0
for i in range(1000):
    if count < 10;
        print i
    count += 1
print 'Count: ', count

首先,我知道在 Python 3.x 中 print 实际上是 print() 并且我还了解到在 2.x 中 range(1000) 在 3.x 中不一样

所以我设法在没有错误的情况下运行代码,但没有达到预期的结果:

count = 0
my_list = list(range(1000))
for i in my_list:
    if count < 50:
        print(i)
    count += 1
print(count)

结果是从 1001 到 2000 的数字。显然不是我的意思,所以我想如果 += 与 3.x 相同但找不到​​太多信息,所以我尝试了 (至少对我来说)合乎逻辑的方式:

count = 0
my_list = list(range(1000))
for i in my_list:
    if count < 50:
        print(i)
    count = count + 1
print(count)

但现在结果是从 0 到 1000 的所有数字,但从 1 到 49 的所有数字都重复一次。所以我将count 更改为i,但没有任何区别。

显然我的尝试都没有在 50 处停止...

感谢您提前提出的所有意见

【问题讨论】:

  • 我不太明白这个问题。前两个代码块将输出完全相同的数字(循环中 print 调用中的 0-9,最后是 1000,因为您正在计算所有值,而不仅仅是您正在打印的值)。如果不使用不同的range(或者在不重置count 的情况下多次运行循环),我看不出你如何获得高于 1000 的数字。

标签: python-3.x for-loop


【解决方案1】:

我认为您的困惑源于在 for 循环结束时递增计数。

如果您为 k in range(5) 执行操作,您编写它的方式...计数器将从 0 一直增加到 5,因为它在每次迭代中都会增加一次超过它的值。

运行此代码将播种计数高于循环中的迭代变量 k。 print ("Hello World!");

count = 0 
for k in range(5):
    print("k: "+str(k))
    print("count: "+str(count))
    count+=1
    print("countNow: "+str(count))

【讨论】:

    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多