为什么max在python中是一个空序列

为什么max在python中是一个空序列,python,max,Python,Max,我是一个相当有经验的程序员,但我无法理解python中的这个问题。它引用的文本文件的布局如下所示 Jeff 4 7 7 Rich 2 1 9 Chris 4 6 5 然而,当我运行代码时,它会计算出前两组数据,而不是最后一组。代码是: with open(classno, 'r') as f: #it doesn't write last score and for line in f: nums_str = line.split()[1:]

我是一个相当有经验的程序员,但我无法理解python中的这个问题。它引用的文本文件的布局如下所示

Jeff 4 7 7
Rich 2 1 9
Chris 4 6 5
然而,当我运行代码时,它会计算出前两组数据,而不是最后一组。代码是:

with open(classno, 'r') as f: #it doesn't write last score and 
        for line in f:
            nums_str = line.split()[1:]
            nums = [int(n) for n in nums_str]
            max_in_line = max(nums) #uses last score of it need to combine
            print (max_in_line)
            with open('class11.txt', 'r') as f:
                parts = line.split()
                if len(parts) > 2:
                    name = str(parts[0])
                    f = open(classno, 'a')
                    f.write(("\n") + (name) + (" ") + str(max_in_line))

        f.close()
…但在文本文件的最后一行,它说:

max() arg is an empty sequence

可能您的文件末尾有一个换行符,因此您正在读取一个空行。试试这个:

for line in f:
    if line: 
        ....

可能您的文件末尾有一个换行符,因此您正在读取一个空行。试试这个:

for line in f:
    if line: 
        ....

使用

with open(classno, 'r') as f:
在内部循环中:

with open('class11.txt', 'r') as f:

为这些变量指定不同的名称。

您可以使用在最外层的
中重新定义
f

with open(classno, 'r') as f:
在内部循环中:

with open('class11.txt', 'r') as f:

给这些变量起不同的名字。

没有冒犯,但是有经验的开发人员会做一些琐碎的调试,比如
print line
注意
max()arg
不同于
max
。后者是一个内置函数;前者是给定给该函数的参数。错误是指出您给出的参数不正确,而不是
max
本身“是”一个空序列(这毫无意义)。(同样,在你的最后一句话中,想法可能是有益的或受欢迎的;你对这些想法的反应可能是“感激”,但这些想法本身并不表示感激,这就是“感激”一词的意思。)无意冒犯,但有经验的开发人员会做一些琐碎的调试,如
打印行
注意
max()arg
max
不同。后者是一个内置函数;前者是给定给该函数的参数。错误是指出您给出的参数不正确,而不是
max
本身“是”一个空序列(这毫无意义)。(同样,在你的最后一句话中,想法是有益的或受欢迎的;你对这些想法的反应可能是“感激”,但这些想法本身并不是在表达感激,这就是“感激”一词的意思。)另外,不应明确地称为
f.close()<代码>与
一起处理这个问题。@DFSFDSFS同样,在
r
模式下打开不允许写入,这就是正在进行的操作。另外,不应显式调用
f.close()
<代码>与
一起处理这个问题。@DFSFDSFS同样,在
r
模式下打开不允许写入,这就是正在进行的操作。