无法使最大功能正常工作

时间:2015-10-31 20:04:13

标签: python

print('File Number Analyzer')
with open("randomNumbers.txt", 'r') as f:
    randomNumbers=f.readlines()
print(randomNumbers)
maxN = max[randomNumbers]
print(maxN)

该程序的目的是利用由我设计的另一个程序创建的文件,该程序具有随机数列表。

我能够毫无问题地显示列表,但是当尝试使用max函数查找列表中的最大数量时,我会收到一条错误,指出max函数不是可订阅的,或者我是否使用{ {1}}在max函数列表周围而不是(),它只是再次显示整个列表,而不是最大数字。

我查看过这个网站上的几个帖子,他们都说要用这种方式或用[]来做功能,那么我做错了什么?

3 个答案:

答案 0 :(得分:0)

  1. 您应该使用max致电(),而不是[]

  2. readlines()返回字符串列表。要在其上使用max,您应该将其中的所有内容投放到intfloat

    maxN = max([int(num) for num in randomNumbers])
    print(maxN)
    

答案 1 :(得分:0)

您似乎有一个str列表,而不是int列表。如果我没记错的话,Max对字符串不会正常工作。您需要将randomNumbers转换为int的列表。替换

randomNumbers=f.readlines()

用这个

randomNumbers = [int(i) for i in f.readlines()]

它应该有效。

像这样呼叫max

max(randomNumbers)

不要使用方括号来调用函数。

答案 2 :(得分:0)

您的问题取决于文件的设置方式。

您正在处理以空格分隔的文件:

1 2 3 4 5 6

因此,当您使用readlines时会发生的事情是您的内容会像这样回复:

['1 2 3 4 5 6 7']

包含内容的字符串的列表。这不是你想要的。你想要这样的东西:

['1', '2', '3', etc...]

如果您不想修改文件内容,我建议您使用read()代替readlines(),这将为您提供字符串而不是列表。从那里开始,在字符串上使用split(),默认情况下使用空格作为分隔符,从字符串中创建列表。

此外,您应该确保将数据类型转换为int。所以最简单的方法是使用理解来创建一个整数列表。

因此,您必须更改的唯一代码行是您阅读文件的方式,并确保其他人提到过,您使用的是max()而不是max[]

创建如下文件后:

1 2 3 4 5 6 7 8 9 10
print('File Number Analyzer')
with open("t.txt", 'r') as f:
    randomNumbers = [int(i) for i in f.read().split()]
print(randomNumbers)
maxN = max(randomNumbers)
print(maxN)