这个嵌套循环在阅读列表时工作正常:
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变量都没有增加,是否有原因,是否有解决方案?
答案 0 :(得分: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
答案 1 :(得分:1)
即使在第一个示例中,我也不相信您的代码有效。由于您编写了两个嵌套循环,因此在检查外部循环终止之前,内部循环总是完成。我建议放下外弯针并插入类似
的东西如果num> 50: 破
进入内循环。