如何在文件中找到最大值?

2024-10-01 09:34:09 发布

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

打开并读取指定的程序。它需要返回文件中的最大值。这就是我所拥有的,我想我会得到这个错误,但我不知道如何修复它!最后一行是问题。TypeError: 'float' object is not iterable。在

def maxValueInFile(fileName):
    iterator = iter(fileName)
    minim, maxim = sorted((next(iterator), next(iterator)))

    for item in iterator:
        if item < minim:
            minim = item
        elif item > maxim:
            maxim = item
    return (maxim)

with open('fileName.txt','r') as f:
    values=(float(value_str) for line in f for value_str in line.split())
    minim, maxim = maxValueInFile(values)
print (minum, maxim)

Tags: in程序forvaluelinefloatfilenameitem
3条回答

语句“return(maxim)”以float而不是tuple返回最大值。在

minim, maxim = maxValueInFile(values)试图将返回值解压到这些变量中,这意味着右侧必须是可迭代的。在

你可以改成

maxim = maxValueInFile(values)

您可以在python tutorial中阅读有关解压缩运算符的详细信息。在

如果您不想(或可以)使用内置函数,您可以简单地遍历文件的行,如下所示:

with open('fileName.txt','r') as f:
    minim, maxim = float('inf'), float('-inf')
    for line in f:
        next_item = float(line)
        if next_item < minim:
            minim = next_item
        elif next_item > maxim:
            maxim = next_item
    print(minim, maxim)

这段代码比你的代码快,因为它不会对迭代器中的值进行排序。在

由于返回错误的数字结果,您的代码无法工作:

^{pr2}$

与…相比

return (maxim)

您只需删除大括号和minim变量:

maxim = maxValueInFile(values)

以及

return (maxim)

如果您想使用python的stdlib,那么就可以了

with open('fileName.txt') as fp:
    floats = map(float, fp)
print("maximum", max(floats))
print("minimum", min(floats))

相关问题 更多 >