0

这个嵌套循环在读取列表时工作正常:

list = [1,2,3,4,5]
num = 0
while num < 5:
  for i in list:
     print(i)
     num += 1

此循环将打印列表中的所有元素。问题是它在读取文本文件时根本不起作用。它不会打印前 5 行文本,而是通读所有文本并打印它们。

f = open(r'C:\Users\Me\Python\bible.txt')
num = 0
while num < 50:
   for line in f:
      print(line)
      num += 1

我只能假设 num 变量在每次迭代后都不会增加,这是有原因的,有解决方案吗?

4

2 回答 2

2

编码

for line in f:
    print line
    num += 1

正在遍历文件中的所有行。同时增加num一。所以在for循环结束时num会等于文件中的行数,可能大于50,所以会退出while循环。

使用你的风格,你应该写:

for line in f:
   print line
   num += 1
   if num > 50: break

第一个代码也有同样的问题。如果要在一维中循环一个结构,为什么需要两个循环?您的代码不是很pythonic,例如您应该将它们重写为:

list = [1,2,3,4,5]
for i in list:
   print i

for i,line in enumerate(f):
    print line
    if i > 50: break
于 2013-02-08T16:29:20.980 回答
1

即使在第一个示例中,我也不相信您的代码有效。由于您编写了两个嵌套循环,因此在检查外部循环的终止之前,内部循环将始终完成。我建议放下外圈并插入类似的东西

如果 num > 50:中断

进入内循环。

于 2013-02-08T16:34:12.137 回答