alesja
Янв. 25, 2011 17:29:51
Python. задание с массивами, нужно сделать программу из 3 под заданий, проблема с первым.
дан текстовый фаил с цифрами(матрица), пользователь вводит число и нужно наити арифметическое среднее чисел из фаила, которые меньше числа, которое ввел пользователь и составить из чисел которые меньше введенного новый массив…
главное проблема в том, что я наверное не совсем понимаю в какой вид нужно привести данные из фаила чтобы можно было их сравнивать как цифры, через float? я понимаю что для сравнения должна привести данные к виду чтобы можно было сравнивать их с введенным числом, если я все не правильно понимаю очень прошу поправить и может подсказать где прочитать (читала Саммерфилда но както не очень он мне помог к сожалению)
alexx11
Янв. 25, 2011 17:34:20
alesja ниасилилмногобувкввслучайномпорядке
Андрей Светлов
Янв. 25, 2011 17:37:36
alexx11, я запомню вашу фразу. Оччень правильный ответ :)
alesja
Янв. 25, 2011 17:49:28
у меня проблема с языком..я учу программирование не на русском и не на англ, изза этого куча проблем извените(((
вот схематично начало программы
matr =
fm = open(“arvud.txt”)
for rida in fm:
rida = rida.strip()
number = rida.split()
matr.append(number)
print(linnad)
fm.close()
и программа выдает такой ответ [, ..]
я так понимаю со строкой matr.append(number) надо чтото делать чтобы убрать ковычки
Isem
Янв. 25, 2011 17:54:12
Напишите так:
matr.append( list( map( int, number ) ) ) # вместо matr.append(...)
или так:
matr.append( [int(n) for n in number] )
alesja
Янв. 25, 2011 18:14:30
Isem
спасибо большое если есть время еще один вопрос..
(мне по заданию надо наити среднее арифметическое от чисел которые меньше введенного)
пользователь вводит число, и чтобы легче было находить среднее от чисел которые меньше этого числа, то можно составить матрикс их этих чисел, не подскажете как это сделать, в каком направлении думать?
alesja
Янв. 25, 2011 18:31:31
как я понимаю для этого надо сделать цикл в цикле…один цикл будет сравнивать данное число с каждым из списка, а другой цикл будет при нахождении числа меньше данного, приплюсовывать его в новый список…если не сложно подскажите как сравнивать изначально 1 число со всеми числами из списка.
Isem
Янв. 25, 2011 18:45:16
Удобнее будет работать с числами, если они будут не в виде матрицы, а в виде вектора. То есть не в виде [, ..], а в виде .
Тогда составление вашей “матрицы” будет выглядеть так:
matr += [int(n) for n in number]
Теперь, предположим, у вас есть заданное пользователем число N. Тогда, чтобы получить новый список, содержащий только числа меньшие N, пишем:
lt_N = [n for n in matr if n < N ]
А чтобы получить сумму чисел в списке (для вычисления среднего), достаточно написать:
alesja
Янв. 25, 2011 19:15:31
Isem
огромное вам спасибо!!!я даже представить не могла что все может быть настолько компактно и понятно)
не подскажете, где можно почитать про коды которые имеют такой тип lt_N = ?
это удобно, но к сожалению я такое увидела только тут, у нас все вычисления очень грамоздки, странно что нам не знакомили с такой формой записью…
Isem
Янв. 25, 2011 19:35:19
На здоровье.
В той книжке, о которой вы упоминали (Саммерфилда), все это можно найти.
А конструкция называется: генератор списка.
С помощью этой конструкции чтение данных из файла можно сделать так:
matr = [int(n) for n in open('arvud.txt').read().split()]