Python помогите.Найти наибольшее значение в файле и распечатать значение с именем - PullRequest
0 голосов
/ 06 октября 2018

Мне нужно создать программу, которая открывает файл, затем читает значения внутри файла и затем печатает имя с наибольшим значением.

Файл содержит следующую информацию:

Juan,27
Joe,16 
Mike,29
Roy,10

Теперь у меня есть следующий код:

  UserFile=input('enter file name')
  FileOpen=open(User File,'r')
  for lines in User File:
    data=line.split(",")
    name=data[0]
    hrs=data[1]
    hrs=int(hrs)
    LHRS = 0
    if hrs > LHRS:
    LHRS = hrs
    if LHRS == LHRS:
        print('Person with largest hours is',name)

Распечатывается следующее:

Человек с самыми большими часами - Хуан

Человек с самыми большими часамиМайк

Как я могу сделать так, чтобы он печатал только самое большое?

1 Ответ

0 голосов
/ 06 октября 2018

Несмотря на то, что ваши усилия по использованию первого таймера довольно впечатляющие, вы ничего не можете сделать здесь ... Следите за именем WHILE, отслеживая максимальное значение!Я уверен, что это можно сделать по-вашему, но могу ли я предложить альтернативу?

import operator

Давайте прочитаем в файле, как я сделал.Это хорошая практика, этот метод обрабатывает закрытие файла, которое может стать причиной многих проблем, если не будет выполнено правильно.

with open('/Users/abhishekbabuji/Desktop/example.txt', 'r') as fh:
    lines = fh.readlines()

Теперь, когда у меня есть каждая строка в списке с именем lines, он также имеет этораздражает \n в нем.Давайте заменим это пустым пробелом ''

lines = [line.replace("\n", "") for line in lines]

Теперь у нас есть такой список.['Name1, Value1', 'Name2, Value2'..] Что я собираюсь сделать сейчас, так это для каждого строкового элемента в моем списке взять первую часть в качестве ключа, а целочисленную часть второй части в качестве значения для моего словаря с именем example_dict.Так что в 'Name1, Value1', Name1 - это элемент в индексе 0, а Name2 - это мой элемент в индексе 1, когда я превращаю его в список, как я сделал ниже, и добавляю пару ключ-значение всловарь.

example_dict = {}
for text in lines:
    example_dict[text.split(",")[0]] = int(text.split(",")[1])
print(example_dict)

Дает:

{'Juan': 27, 'Joe': 16, 'Mike': 29, 'Roy': 10}

Теперь, получите ключ со значением max и распечатайте его.

largest_hour = max(example_dict.items(), key=operator.itemgetter(1))[1]

highest_key = []
for person, hours in example_dict.items():
    if hours == largest_hour:
        highest_key.append((person, hours))

for pair in highest_key:

    print('Person with largest hours is:', pair[0])    
...