2015-01-12 2 views
-2

Как я могу выбрать самый высокий балл каждой строки в текстовом файле, не содержащего х строк не текстовый файл выложен вКак выбрать наивысший балл в строке текстового файла в python?

Richard 3 5 7 
Bob 4 7 8 
Jeff 3 3 5 

ЭСТ.

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

Я основывали свой код на этом, который находит самый высокий из всего текстового файла, но это должно быть сделано для каждой линии текстовый файл:

f = open('data.txt', 'r') 
data = f.readlines() 
for range(2,...): 

    max(data) 
    min(data) 
print max(data), min(data 
+2

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

+0

К сожалению, я потерял код, это может быть жалким оправданием, но, пожалуйста, не помогайте ненависти plz – Richard

+0

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

ответ

0
with open("input.txt") as f: 
    for line in f: 
     spl = line.split() 
     print("Highest score for {} is {}".format(spl[0],max(map(int,spl[1:])))) 

Highest score for Richard is 7 
Highest score for Bob is 8 
Highest score for Jeff is 5 

Если вы хотите определенные столбцы с помощью индексации:

with open("input.txt") as f: 
    for line in f: 
     spl = line.split() 
     print("Highest score for {} is {}".format(spl[0],max(map(int,spl[1]+spl[2])))))) 


Highest score for Richard is 5 
Highest score for Bob is 7 
Highest score for Jeff is 3 
+0

Блестяще спасибо огромное !!!!!!!!!!!!!!!!!!!!!!!!!! – Richard

+0

есть ли способ, которым код может быть изменен, поэтому он только основывает его на указанных столбцах и устанавливает его как varaible? – Richard

+1

Что вы подразумеваете под указанными столбцами? –

0

Решение должно быть примерно так:

with open('data.txt', 'r') as f: 
    for line in f: 
     nums_str = line.split()[1:] 
     nums = [int(n) for n in nums_str] 
     max_in_line = max(nums) 
     min_in_line = min(nums) 
  • Используя синтаксис with ... as ... берет на себя каких-либо исключений и закрывает файл после его прочтения.

  • В большинстве случаев лучше перебирать файл по строкам, а не читать все в памяти, если файл очень большой. Вы можете просто использовать for line in f для повторения каждой строки в файле.

  • Некоторые предложения включены с использованием регулярного выражения для извлечения чисел. Тем не менее, быстрее разбить строку на пробелы, используя функцию split() и взять все, кроме первого элемента, используя [1:] в списке, который возвращается функцией split().

  • Функция split() возвращает список строк, представляющих числа. Вот почему вам нужно отдать их int, используя понимание списка. Тогда получение min и max тривиально.

+0

спасибо, и это только цифры совершенны !!!!!!!!!!!! – Richard

Смежные вопросы