如何使用python在文件中找到min和max值的第一个实例?

时间:2014-02-23 23:28:55

标签: python

我正在使用具有以下格式的多行数据的文件:

Niger                                              WB_LI   37 Africa                    2000

第一列是国名,第二列是收入水平,第三列是接种疫苗的人的百分比,第五列是年份。我试图找出最大值。给用户一年和收入水平的最小百分比。我也试图在文件中第一次找到这两个值出现的行。到目前为止我编写的代码给出了正确的最小值和最大值,但没有给出第一次出现的行。例如,如果有一堆零,我应该能够打印出第一个具有前0%的国家,而不是最后一个具有0%的国家。我的代码是:

#looping through each line
for line in input_file:
            #checking for user input(income level and year) in each line
            if 'WB_LI' in line and year in line:
                #printing lines that matches user input
                print(line)
                total+=int(line[58:61])
                count_instance+=1
                if int(line[58:61])>int(max_value):
                       max_value=(line[58:61])
                if max_value in line:
                    max_line=line
                if int(line[58:61])<int(min_value):
                    min_value=(line[58:61])
                if min_value in line:
                    min_line=line

如果有人能给我一些建议来修复我的代码,我真的很感激。感谢。

注意:我不允许使用列表,字典或元组。我只有一个文件,我可以打开或关闭或读写文件。

1 个答案:

答案 0 :(得分:1)

你快到了;当在该行中找到最大值或最小值时存储该行,而不是在找到新的最大值或最小值时存储该行,而是在同一if语句中:

for line in input_file:
    if 'WB_LI' in line and year in line:
        #printing lines that matches user input
        percentage = int(line[58:61])
        total += percentage
        count_instance+=1
        if percentage > max_value:
            max_value = percentage
            max_line = line
        if percentage < min_value:
            min_value = percentage
            min_line = line

为方便起见,此代码解析了每行一次的百分比。