Форум сайта python.su
Python. задание с массивами, нужно сделать программу из 3 под заданий, проблема с первым.
дан текстовый фаил с цифрами(матрица), пользователь вводит число и нужно наити арифметическое среднее чисел из фаила, которые меньше числа, которое ввел пользователь и составить из чисел которые меньше введенного новый массив…
главное проблема в том, что я наверное не совсем понимаю в какой вид нужно привести данные из фаила чтобы можно было их сравнивать как цифры, через float? я понимаю что для сравнения должна привести данные к виду чтобы можно было сравнивать их с введенным числом, если я все не правильно понимаю очень прошу поправить и может подсказать где прочитать (читала Саммерфилда но както не очень он мне помог к сожалению)
Офлайн
alesja ниасилилмногобувкввслучайномпорядке
Офлайн
alexx11, я запомню вашу фразу. Оччень правильный ответ :)
Офлайн
у меня проблема с языком..я учу программирование не на русском и не на англ, изза этого куча проблем извените(((
вот схематично начало программы
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) надо чтото делать чтобы убрать ковычки
Отредактировано (Янв. 25, 2011 17:50:19)
Офлайн
Напишите так:
matr.append( list( map( int, number ) ) ) # вместо matr.append(...)
matr.append( [int(n) for n in number] )
Отредактировано (Янв. 25, 2011 17:57:01)
Офлайн
Isem
спасибо большое если есть время еще один вопрос..
(мне по заданию надо наити среднее арифметическое от чисел которые меньше введенного)
пользователь вводит число, и чтобы легче было находить среднее от чисел которые меньше этого числа, то можно составить матрикс их этих чисел, не подскажете как это сделать, в каком направлении думать?
Офлайн
как я понимаю для этого надо сделать цикл в цикле…один цикл будет сравнивать данное число с каждым из списка, а другой цикл будет при нахождении числа меньше данного, приплюсовывать его в новый список…если не сложно подскажите как сравнивать изначально 1 число со всеми числами из списка.
Офлайн
Удобнее будет работать с числами, если они будут не в виде матрицы, а в виде вектора. То есть не в виде [, ..], а в виде .
Тогда составление вашей “матрицы” будет выглядеть так:
matr += [int(n) for n in number]
lt_N = [n for n in matr if n < N ]
s = sum( lt_N )
Отредактировано (Янв. 25, 2011 18:46:02)
Офлайн
Isem
огромное вам спасибо!!!я даже представить не могла что все может быть настолько компактно и понятно)
не подскажете, где можно почитать про коды которые имеют такой тип lt_N = ?
это удобно, но к сожалению я такое увидела только тут, у нас все вычисления очень грамоздки, странно что нам не знакомили с такой формой записью…
Офлайн
На здоровье.
В той книжке, о которой вы упоминали (Саммерфилда), все это можно найти.
А конструкция называется: генератор списка.
С помощью этой конструкции чтение данных из файла можно сделать так:
matr = [int(n) for n in open('arvud.txt').read().split()]
Отредактировано (Янв. 25, 2011 20:08:10)
Офлайн