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

标签 python python-3.x

试图让它运行超过 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()

关于python - 为什么 for 循环不遍历我所有的 readlines?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46768660/

相关文章:

python - Django : Send mail failed

python - 提取gurobi多维变量值并形成一个numpy数组

python - 如何使用日期时间索引和位置选择两组年份?

python - 拆开两列

python-3.x - 将列表拆分为特定值的多个列表

python - 如何根据列标签获取数据帧的集合差异?

python - 相应的字典键和值输出

python - 如何在运行 Django 测试之前加载测试 yaml 文件?

python - 获取png文件名称的第一个单词和字符

python - 如何使用 python (3.2) 保存函数