从文件中获取最小数量并打印。蟒蛇

时间:2013-05-09 16:03:13

标签: python eclipse list min

我遇到了Python程序的问题。 我想从文件中获取一个列表并打印最低的数字。 例如

showFile = open("company.txt", 'r')
        for line in showFile:
            tokens = line.split(',')
            minValue = min(tokens[:2])
            print("the lowest is", minValue)

并输出 -

the lowest is  33
the lowest is  18.5
the lowest is  22

这是company.txt -

'Huggies', 33, 84
'Snugglers', 18.5, 72
'Baby Love', 22, 96

我很自信,所以任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

现在,您在每行中分别找到最小的数字。有点。如果你想要文件中最低的单个数字,你应该将每行中的数字或最小数字收集到一个列表中,并在for循环之外的那个列表上调用min()。

另一个问题是,您使用tokens[:2]检查数字的方式。在此之后粘贴print tokens语句,你会发现你正在切断每行的第二个数字。如果目标是切断公司名称,则使用[1:]。这是保留此tokens[:2]行的其他答案的问题。它们似乎有效,但只是因为最低的数字恰好出现在第一列中。调用min(tokens[1:])也会将数字评估为字符串,这可能会产生意外结果,并且仍然包含空格,如' 18.5\n'。要将数字作为数字进行比较,请将它们包装在float()中。

总之,这样的事情:

showFile = open("company.txt", 'r')
numbers = []
for line in showFile:
    tokens = line.split(',')
    numbers.append(min(float(t) for t in tokens[1:]))

minValue = min(numbers)
print("the lowest is ", minValue)

答案 1 :(得分:0)

如果您要做的是获取整个文件的最低值,而不是每行,则只需执行以下操作:

myLowNumbers = []
showFile = open("company.txt", 'r')
        for line in showFile:
            tokens = line.split(',')
            minValue = min(tokens[:2])
            myLowNumbers.append(minValue)
print min(myLowNumbers)

这将继续将每行中的最小数字添加到列表中,然后在循环完成后从列表中返回最小值。当然有更优雅的方法,但在提供更多信息之前,这是我能提供的最佳方式。

顺便说一句,不要忘记致敬通过“投票”正确答案批准正确答案 - 欢迎来到SO。

答案 2 :(得分:0)

你并没有真正比较任何数字。

这不是超级优雅,但它有效。

showFile = open("company.txt", 'r')
lowest = None
for line in showFile:
    tokens = line.split(',')
    value = min(tokens[:2])
    if lowest == None: 
        lowest = value #set lowest value to first number found
    if value < lowest:
        lowest = value

print("the lowest is", lowest)

(我也认为你使用的是Python 3.x,我使用的是2.6,只是提升了一些东西并不完全排队)