首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >for循环中最大浮点数的意外值(Python)

for循环中最大浮点数的意外值(Python)
EN

Stack Overflow用户
提问于 2017-06-21 01:33:20
回答 2查看 68关注 0票数 0

所以,我正在尝试测试一个不同程序的一部分,我遇到了一个我无法理解的输出

代码语言:javascript
运行
复制
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(节拍)来查看我得到的所有值,我得到的值范围是3-9。怎么一回事?如果我去掉了max函数,它会完美地打印值。

EN

回答 2

Stack Overflow用户

发布于 2017-06-21 01:38:37

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

代码语言:javascript
运行
复制
max("3", '123', '200', '100')
# 3

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

代码语言:javascript
运行
复制
row = [int(x) for x in row]

来转换它们。

代码语言:javascript
运行
复制
row = ["3", '123', '200', '100']
row = [int(x) for x in row]
print(max(row))

# 200
票数 0
EN

Stack Overflow用户

发布于 2017-06-21 01:47:44

你的问题在这里:

代码语言:javascript
运行
复制
for row in songs:
    tempo=row[3]

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

代码语言:javascript
运行
复制
return max(max(songs))

这将给你带来最大的价值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44659599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档