为什么嵌套for循环不能在Python中工作?

2024-09-29 22:04:06 发布

您现在位置:Python中文网/ 问答频道 /正文

外部foor循环只执行一次。我不知道为什么会这样?你知道吗

f=open("simpletextfile.txt")
for r in range(1,52):
    for line in f.readlines():
        print r

其中simpletextfile.txt包含消息This a message!!。你知道吗


Tags: intxt消息messageforlinerangeopen
3条回答

在调用readlines之后,文件将用尽,因为在随后对readlines的调用中,不会读取更多行,因为所有行都已读取。然后执行内部循环,但与此无关。如果你想把这些行读52遍并打印r(我不知道为什么-但是可以),请执行以下操作

with open('simpletextfile.txt') as f:
    lines = f.readlines()
    for r in range(1, 52):
        for line in lines:
            print r

此外,尽管您在本例中只读取文件(Python将自动关闭文件),但您应该显式地.close()自己打开它,或者像上面那样用with语句将它包装起来,这样会在最后关闭它—这样就不那么草率了。你知道吗

当您第一次调用f.readlines()时,它将返回一个包含一个项的列表:['This a message!!']。但是当您第二次调用f.readlines()时,它将返回空列表[]。所以,当你在上面循环时,它根本不会循环,因为列表是空的。将f.readlines()赋给变量以解决问题

f = open("simpletextfile.txt")
for r in range(1,52):
    lines = f.readlines()
    for line in lines:
        print r

因为一个文本文件不能读两遍。所以在第一次迭代中,它读取文件并打印“1”的次数与文件中的行数相同。当它转到r==2时,它尝试调用f.readlines(),但是由于文件已经被读取,它甚至在开始之前就停止了迭代。以此类推直到r == 51。你知道吗

如果你多解释一下你想做什么,我们也许能更有效地帮助你。你知道吗

相关问题 更多 >

    热门问题