ForLoop(Python)中浮点最大值的意外值

2024-05-18 08:43:53 发布

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

所以,我试着测试另一个程序的一部分,我遇到了一个我很难理解的输出

def load_asn1_data(filename='songdata.csv'):
    import csv
    reader=csv.reader(open(filename,'r'))
    songs=[]
    for r in reader:
        songs.append(r)
    return songs
def returnsong(songs):
    for row in songs:
        tempo=row[3]
    print max(tempo)

returnsong(load_asn1_data(filename='songdata.csv'))

我无法显示我的csv文件的所有速度值,但它们都在100-200 bpm范围内。但是,如果我运行这个,我的输出是8。我甚至试着缩进我的print max(tempo)来查看我得到的所有值,我得到的值范围是3-9。怎么回事?如果我去掉max函数,它会完美地打印值。你知道吗


Tags: csvinfordatadefloadfilenamemax
2条回答

row的元素是字符串,因此它们按字母顺序排序:

max("3", '123', '200', '100')
# 3

如果行仅包含整数,则可以执行以下操作:

row = [int(x) for x in row]

去转化他们。你知道吗

row = ["3", '123', '200', '100']
row = [int(x) for x in row]
print(max(row))

# 200

你的问题在这里:

for row in songs:
    tempo=row[3]

你告诉它识别第三个索引,然后从这三个数字中找出最大值。所以要解决这个问题,你甚至不需要那个函数。在return语句的第一个函数中,使用:

return max(max(songs))

这会让你得到最大的价值。你知道吗

相关问题 更多 >