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函数列表周围而不是()
,它只是再次显示整个列表,而不是最大数字。
我查看过这个网站上的几个帖子,他们都说要用这种方式或用[]
来做功能,那么我做错了什么?
答案 0 :(得分:0)
您应该使用max
致电()
,而不是[]
。
readlines()
返回字符串列表。要在其上使用max
,您应该将其中的所有内容投放到int
或float
:
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)