Найти - Пользователи
Полная версия: Помогите новичку
Начало » Python для новичков » Помогите новичку
1 2 3 4 5
angree77
py.user.next
Ты и задание неправильно составил, и код неправильно написал. Тебе нужно исправить и то, и другое.
разьясни о великий гуру хотя бы на примере с одним столбцом или одной строкой как правильно складывать, я же говорю я новичек в этом деле, не хватает опыта, везде про рэндж написано одно и тоже… range(start, stop, step) шаг 1 он будет перебирать каждый символ, шаг 2 перебирает через символ, так чтоли?
Yuri197
Вы когда такие конструкции:
m[i - 1]
,
m[i][j + 1]
и.т.д, делаете, сверяйте их с длиной списка (-ов), перед тем, как обращаться к спискам. Иначе, особенно учитывая, что списки у вас вложенные, действительно черт ноги переломает, даже с отладчиком.
doza_and
:):)
angree77
разьясни о великий гуру хотя
Эк вас проняло.
angree77
я попросил объяснить почему так происходит
angree77
Вам вместо того чтобы выписать лекарство сказал
Я вам предельно конкретно посоветовал. Научитесь в отладчике локализовывать ошибку с точностью до оператора а не до строки. Это юные питонисты 12-13 лет за 5 минут осваивают.
angree77
как раз таки отладчиком я и поймал эту ошибку и именно эту строку
Это влечет еще один совет, читайте что вам в консоли интерпретатор пишет. Отладчик не нужен чтобы понять на какой строке ошибка, это в консоли всегда выводится. Ктож мог подумать что вы для этого отладчик используете.
angree77
я попросил объяснить почему так происходит
А тут нечего объяснять, все написано “index out of range” тут и добавить нечего.
angree77
строкой как правильно складывать, я же говорю я новичек в этом деле,
Это конструктив. Вертаемся к совету 2 который вы невнимательно прочитали.
Чтобы вам посоветовали как решить задачу, вам надо ЯСНО написать что вы хотите сделать.

Ну не знаю помогут советы на этот раз или нет. Это уж ваши тогда проблемы.


py.user.next
angree77
разьясни о великий гуру хотя бы на примере с одним столбцом или одной строкой как правильно складывать
Напиши задание. Не надо кодом его описывать, код у тебя всё равно неправильный. Любое задание можно описать словами.

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

Классические этапы разработки программы включают в себя пункты:
1) Словесное описание алгоритма.
2) Построение блок-схемы по словесному описанию алгоритма.
3) Написание псевдокода по построенной блок-схеме.
4) Написание кода по написанному псевдокоду.

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


tags: development stages
angree77
py.user.next
Напиши задание.
Попробуем с чистого листа:
Дано: на вход через stdin подаются числа произвольно ввод заканчивается введением слова end
Например:
1 2 3
4 5 6
7 8 9
end
на выходе должна получится тоже матрица такого же размера, но элементы матрицы получаются из суммы соседних элементов, для центрального элемента 5 на выходе должно получится (4+6+2+8) т.е. 20 для крайних элементов например для 1 соседи будут 2 и 3 по горизонтали и 4 и 7 по вертикали т.е. в сумме будет 16 и так заполняем по элементно с этапами сложения
(2+3+4+7) (1+3+5+8) (1+2+6+9)
(5+6+1+7) (4+6+2+8) (4+5+3+9)
(8+9+4+1) (7+9+5+2) (7+8+3+6)
или
16 17 18
19 20 21
22 23 24
матрица на входе может быть любого произвольного размера может 1х1 ,т.е всего один элемент подаваться на вход, для одного элемента соседями он сам и будет являтся
т.е. к примеру для 1 на входе будет 4 на выходе т.к. он сам себе сосед и складывая его 4 раза получаем 4
для матрицы типа столбец например
1
3
5
6
end
результат на выходе должен быть для 1 горизонтальные соседи это она сама вертикальные 3 и 6
для 3-ки горизонтальные опять же она сама 3-ка вертикальные 1 и 5
на выходе имеем
11
12
19
20
для строки аналогично только вертикальные соседи будут для элементов сами элементы…
теперь задача должна быть понятна даже школьнику
py.user.next
Для входной матрицы
1 2
3 4

Результат какой?

(2+2+3+3) (1+1+4+4)
(1+1+4+4) (3+3+2+2)
Такой?
angree77
py.user.next
Результат какой?

(2+2+3+3) (1+1+4+4)
(1+1+4+4) (3+3+2+2)
ага все правильно для 1 сосед с права 2-ка, сосед слева (это получается -1 элемент) опять таки 2-ка
сосед снизу 3-ка сосед сверху (опять таки -1 элемент) 3-ка ну и для остальных элементов так же
py.user.next
  
>>> def f(m):
...     out = []
...     rows, cols = len(m), len(m[0])
...     for i in range(rows):
...         out.append([])
...         for j in range(cols):
...             value = 0
...             if i == 0 and i + 1 == rows:
...                 value += m[i][j] + m[i][j]
...             elif i == 0:
...                 value += m[-1][j] + m[i + 1][j]
...             elif i + 1 == rows:
...                 value += m[0][j] + m[i - 1][j]
...             else:
...                 value += m[i - 1][j] + m[i + 1][j]
...             if j == 0 and j + 1 == cols:
...                 value += m[i][j] + m[i][j]
...             elif j == 0:
...                 value += m[i][-1] + m[i][j + 1]
...             elif j + 1 == cols:
...                 value += m[i][0] + m[i][j - 1]
...             else:
...                 value += m[i][j - 1] + m[i][j + 1]
...             out[i].append(value)
...     return out
... 
>>> f([[1]])
[[4]]
>>> f([[1, 2]])
[[6, 6]]
>>> f([[1, 2, 3]])
[[7, 8, 9]]
>>> f([[1], [2]])
[[6], [6]]
>>> f([[1], [2], [3]])
[[7], [8], [9]]
>>> f([[1, 2], [3, 4]])
[[10, 10], [10, 10]]
>>> f([[1, 2, 3], [4, 5, 6]])
[[13, 14, 15], [13, 14, 15]]
>>> f([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
[[16, 17, 18], [19, 20, 21], [22, 23, 24]]
>>>
angree77
Спасибо Добрый человек…. С функцией выглядит более компактно, я сегодня как раз по функциям читал мануалы
После некоторой доработки кода и вывод в удобоваримом чтении матриц
m = []                                                                                      
while True:
lst = [str(i) for i in input().split()]
if lst[0] == 'end':
break
m.append(lst)
for i in range(len(m)):
for j in range(len(m[0])):
m[i][j] = int(m[i][j])
out = []
rows, cols = len(m), len(m[0])
for i in range(rows):
out.append([])
for j in range(cols):
value = 0
if i == 0 and i + 1 == rows:
value += m[i][j] + m[i][j]
elif i == 0:
value += m[-1][j] + m[i + 1][j]
elif i + 1 == rows:
value += m[0][j] + m[i - 1][j]
else:
value += m[i - 1][j] + m[i + 1][j]
if j == 0 and j + 1 == cols:
value += m[i][j] + m[i][j]
elif j == 0:
value += m[i][-1] + m[i][j + 1]
elif j + 1 == cols:
value += m[i][0] + m[i][j - 1]
else:
value += m[i][j - 1] + m[i][j + 1]
out[i].append(value)
for i in range(len(m)):
for j in range(len(m[0])):
print(out[i][j],end=' ')
print()
запутался не много с выводом из функции переделал без нее
angree77
Добрый день Уважаемые!
Возник одни вопрос залип на нем конкретно, задача на вход stdin подаются слова
Могут как с маленькой буквы так и с большой, на выходе надо посчитать повторяющиеся слова,
например вход:
Вася, Петя, Маша, пошел, вася, гости, петя, гости
выход:
петя 2
вася 2
пошел 1
маша 1
гости 2
Алгоритм решения продумал уже но залип с одной командой перевода в нижний регистр списка, решается функцией через словарь и увеличением значения где ключи это: вася, петя, маша, пошел, вася, гости, петя, гости, если ключ совпадает значение value увеличивается на 1-ку
words = input().split()

def count_word(d):
d = dict.fromkeys(words,0) #создается словарь с нулевыми значениями value
for key in words:
if key in d:
value += 1
else:
d[key] = 1
print(d)
return d


print(count_word(words))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB