以下代码返回不正确的最大值:
maximum = 0
f =open("data.dat", "r")
for line in f:
global maximum
fields = line.split()
classcode = fields[0]
name = fields[1]
scr = fields[2]
maximum=max(scr)
print(classcode, name, scr)
f.close()
print("maximum=", maximum)
数据文件是
1 test2 100
1 test1 100
1 test3 20
1 test4 60
1 test5 33
我得到的结果是
1 test2 100
1 test1 100
1 test3 20
1 test4 60
1 test5 33
maximum= 3
任何想法为什么我得到错误的价值将不胜感激
答案 0 :(得分:1)
您正在将max()
应用于每个值; max()
无法将该值与之比较。实际上,它从scr
中找到一个具有最高值的字符,它只是一个字符串(一系列字符)。在您的上一个scr
值,字符串'33'
中,两个字符都具有相同的值,因此它选择了一个'3'
。
收集列表中的值(首先转换为整数后),然后在该列表上调用max()
会更有效。然后它可以与之比较:
scores = []
for line in f:
fields = line.split()
classcode = fields[0]
name = fields[1]
scr = int(fields[2])
scores.append(scr)
print(classcode, name, scr)
maximum = max(scores)
print("maximum=", maximum)
答案 1 :(得分:1)
maximum=max(scr)
行没有按照您的想法行事。它会比较字符串scr
中的字符值。
我认为你想要的是maximum = max(int(scr), maximum)
。这将选择较大的当前值或旧的最大值,并处理整数而不是字符串。