Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2011 17:29:51

alesja
От:
Зарегистрирован: 2010-10-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

Python. задание с массивами, нужно сделать программу из 3 под заданий, проблема с первым.
дан текстовый фаил с цифрами(матрица), пользователь вводит число и нужно наити арифметическое среднее чисел из фаила, которые меньше числа, которое ввел пользователь и составить из чисел которые меньше введенного новый массив…
главное проблема в том, что я наверное не совсем понимаю в какой вид нужно привести данные из фаила чтобы можно было их сравнивать как цифры, через float? я понимаю что для сравнения должна привести данные к виду чтобы можно было сравнивать их с введенным числом, если я все не правильно понимаю очень прошу поправить и может подсказать где прочитать (читала Саммерфилда но както не очень он мне помог к сожалению)



Офлайн

#2 Янв. 25, 2011 17:34:20

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

alesja ниасилилмногобувкввслучайномпорядке



Офлайн

#3 Янв. 25, 2011 17:37:36

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

массивы, текстовые фаилы

alexx11, я запомню вашу фразу. Оччень правильный ответ :)



Офлайн

#4 Янв. 25, 2011 17:49:28

alesja
От:
Зарегистрирован: 2010-10-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

у меня проблема с языком..я учу программирование не на русском и не на англ, изза этого куча проблем извените(((
вот схематично начало программы
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)

Офлайн

#5 Янв. 25, 2011 17:54:12

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

Напишите так:

matr.append( list( map( int, number ) ) ) # вместо matr.append(...)
или так:
matr.append( [int(n) for n in number] )



Отредактировано (Янв. 25, 2011 17:57:01)

Офлайн

#6 Янв. 25, 2011 18:14:30

alesja
От:
Зарегистрирован: 2010-10-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

Isem
спасибо большое если есть время еще один вопрос..
(мне по заданию надо наити среднее арифметическое от чисел которые меньше введенного)

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



Офлайн

#7 Янв. 25, 2011 18:31:31

alesja
От:
Зарегистрирован: 2010-10-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

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



Офлайн

#8 Янв. 25, 2011 18:45:16

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

Удобнее будет работать с числами, если они будут не в виде матрицы, а в виде вектора. То есть не в виде [, ..], а в виде .
Тогда составление вашей “матрицы” будет выглядеть так:

matr += [int(n) for n in number]
Теперь, предположим, у вас есть заданное пользователем число N. Тогда, чтобы получить новый список, содержащий только числа меньшие N, пишем:
lt_N = [n for n in matr if n < N ]
А чтобы получить сумму чисел в списке (для вычисления среднего), достаточно написать:
s = sum( lt_N )



Отредактировано (Янв. 25, 2011 18:46:02)

Офлайн

#9 Янв. 25, 2011 19:15:31

alesja
От:
Зарегистрирован: 2010-10-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

Isem
огромное вам спасибо!!!я даже представить не могла что все может быть настолько компактно и понятно)
не подскажете, где можно почитать про коды которые имеют такой тип lt_N = ?
это удобно, но к сожалению я такое увидела только тут, у нас все вычисления очень грамоздки, странно что нам не знакомили с такой формой записью…



Офлайн

#10 Янв. 25, 2011 19:35:19

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

массивы, текстовые фаилы

На здоровье.
В той книжке, о которой вы упоминали (Саммерфилда), все это можно найти.
А конструкция называется: генератор списка.
С помощью этой конструкции чтение данных из файла можно сделать так:

matr = [int(n) for n in open('arvud.txt').read().split()]



Отредактировано (Янв. 25, 2011 20:08:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version