打印文本文件中的最低数值

时间:2018-10-16 10:59:25

标签: python

我有一个文本文件,其中包含一些股票及其价格,但没有,我试图打印出价值最低的股票以及公司名称,这是我的代码。

stocks = open("P:\COM661\stocks.txt")

name_lowest = ""
price_lowest = 0

for line in stocks:
    rows = line.split("\t")
    price = float(rows[2])
    if price>price_lowest:
        price_lowest = price
        name_lowest = rows[1]
print(name_lowest + "\t" + str(price_lowest))

我正在尝试浏览文件,并将每个数值与它之前的数值进行比较,看它是高还是低,然后最后它应该保存最低的价格并与名称一起打印公司。 而是打印文件中最后一家公司的名称及其名称。

我该如何解决?

5 个答案:

答案 0 :(得分:2)

您犯了2个错误。 首先被初始化为初始值0 您应该将初始值初始化为python float中的最大可用数字。

import sys
price_lowest  = sys.float_info.max

否则,您可以将其初始化为第一个元素

第二您的if语句应为

if price<price_lowest:

答案 1 :(得分:1)

初始化:

price_lowest = 999999  # start with absurdly high value, or take first one  

加上您的if支票是相反的。
应该是:

if price < price_lowest

答案 2 :(得分:1)

其他人已经提出了解决您当前代码的解决方案。但是,使用Python可以有一个较短的解决方案:

with open('file') as f:
    print min(
        [(i.split('\t')[0], float(i.split('\t')[1])) for i in f.readlines()],
        key=lambda t: t[1]
    )

答案 3 :(得分:0)

您的“如果”逻辑倒退,应为price<lowest_pre

答案 4 :(得分:0)

只需稍作调整,就可以将price_lowestNone开始,然后将其设置为您的第一次遇到,然后从那里进行比较

stocks = open("P:\COM661\stocks.txt")

name_lowest = ""
price_lowest = None

for line in stocks:
    rows = line.split("\t")
    price = float(rows[2])
    if price_lowest = None:
        price = price_lowest
        name_lowest = rows[1]
    elif price < price_lowest:
        price_lowest = price
        name_lowest = rows[1]
print(name_lowest + "\t" + str(price_lowest))