Skip to main content
 首页 » 编程设计

python之为什么 for 循环不遍历我所有的 readlines

2025年05月04日13daizhj

试图让它运行超过 3 行文本,但我现在有的两行甚至不能正常工作。

文本文件是

74,85,65,56 
97,67,83,96 

这是我一直在处理的代码

file = open('grades.txt','r') 
for x in file: 
    read = file.readline() 
    sep = read.split(",") 
def toNumbers(): 
    changeNum = [eval(x) for x in sep] 
    return changeNum  
def sumlist(): 
    total = 0 
    sum(pls) 
    average = sum(pls)/len(sep) 
    print ("Your average is: ", average) 
def main(): 
     sumlist() 
pls = toNumbers() 
main() 

输出应该是

Your average is: 70.0 
Your average is: 85.75 

我得到的只有这个

Your average is: 85.75 

当我在文本文件中添加第三行时出现此错误

SyntaxError: unexpected EOF while parsing 

第三行也只是文本文件中的一行数字,可以从那里继续

74,85,65,56 
97,67,83,96 
10,20,30,40 

输出应该是

Your average is: 70.0 
Your average is: 85.75 
Your average is: 25.0 

请您参考如下方法:

这很简单。

for x in file: 

已经遍历文件的行,但是您忽略了 x 的值,这是第一行的内容。您只需使用以下内容获取第二行的内容:

 read = file.readline() 

添加另一行会导致错误,因为您告诉 Python 要做的是对于文件中的每一行,读取下一行,因此 for 循环将每一行奇数放入x 然后每一个偶数行都存储在read中。因此,只有偶数行的文件才会被处理而不会出错。
你想要这个:

for read in file: 
    sep = read.split(",") 

编辑:完整示例:

def toNumbers(sep): 
    changeNum = [float(x) for x in sep] 
    return changeNum 
 
def sumlist(sep): 
    total = 0 
    sum(pls) 
    average = sum(pls)/len(sep) 
    print ("Your average is: ", average) 
 
def main(): 
    file = open('grades.txt','r') 
    for read in file: 
        sep = read.split(",") 
        sep = toNumbers(sep) 
        sumlist(sep) 
 
main()