
b0g3r
30.09.2016
23:04:48
(наверное)

F
01.10.2016
12:16:31
Ребят, такой вопрос, не по питону. Хостер локнул сервак, говорит атака с него велась. куда смотреть в первую очередь, как вырезать из системы теперь их?

twwlf
01.10.2016
12:30:15
в pinned message

Google

Zart
01.10.2016
12:52:26
курить логи, проверять пакаджи, вот это всё. а лучше переставить нахер с нуля, сбакапив данные..

finkel
01.10.2016
12:54:35

F
01.10.2016
12:54:50
лол

finkel
01.10.2016
12:56:52

Zart
01.10.2016
12:58:07
всегда надо начинать с логов, да


Arthur
01.10.2016
18:19:20
чувачки, я тут со степиком все кувыркаюсь, условие задачи:
Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список "1 3 5 6 10", то на выход ожидается список "13 6 9 15 7" (без кавычек).
Если на вход пришло только одно число, надо вывести его же.
Вывод должен содержать одну строку с числами нового списка, разделёнными пробелом.
Мой код:
a = [int(i) for i in input().split()]
for i in range(0, len(a)):
if 0 < len(a) < 2:
print(a[0])
elif i == 0:
print(a[-1] + a[+1], end=' ')
elif i == -1:
print(a[-2] + a[0], end=' ')
else:
print(a[i - 1] + a[i + 1], end=' ')
все считает, как надо, но после итогового списка выдает ошибку:
print(a[i - 1] + a[i + 1], end=' ')
IndexError: list index out of range


Zart
01.10.2016
18:22:09
это наверняка на тесте где на вход подано лишь одно число
дальше думай

Arthur
01.10.2016
18:22:41
а почему из последний строчки пишет?
ошибка
походу догнал

Zart
01.10.2016
18:23:22
a[-1] a[+1] - это чоа...

Igor
01.10.2016
18:23:38
потому что проблема с индексом только на ней появилась
учти, что
elif i == 0:
print(a[-1] + a[+1], end=' ')
+1 необязательно писать
можно просто a[1]

Google

Igor
01.10.2016
18:23:52
если это, конечно, то, что ты имел в виду, а не проебавшаяся i, например )

Arthur
01.10.2016
18:24:24
это че-то я накосяпорил :D
ахах) даже не заметил)
если да, то это делу не помогло
хотя там же изначально в принципе все верно было
разве нет?

Igor
01.10.2016
18:31:01
i == -1
какое-то бесполезное условие кстати, с учетом того, что ты проходишься по диапазону от 0 до X
проблема в том, что i в цикле меняет свое значение всем индексам от 0 до N (не включая N)
когда элементов больше одного (два или три, например),
i = 0; он принтится
i = 1; - ни одно указанное условие не срабатывает, поэтому выполняется print(a[i - 1] + a[i + 1])

Arthur
01.10.2016
18:31:43
ну а как последний элемент обозначить?

Igor
01.10.2016
18:32:01
последний элемент в массиве a?
a[-1]
(ну, значение этого элемента)

Arthur
01.10.2016
18:32:14
ну

Igor
01.10.2016
18:32:31
ну.
а нахуя условие i == -1-то? :) оно никогда работать не будет
ведь ты делаешь for i in range(0, len(a)):
а скрипт валится потому что ты пытаешься забать элемент массива a[i+1], а такого не будет никогда, потому что i считается в зависимости от размера списка
и последний раз, когда проходишься по циклу, i + 1 выходит за границы списка

Arthur
01.10.2016
18:34:05
походу я тупой))

Igor
01.10.2016
18:34:58
смотри, предположим, юзер ввел "5 10 15"
у нас получилось так
a = [5, 10, 15]
for i in range(0, len(a)):
здесь мы создаем цикл, который пройдется три раза (потому что у нас три элемента в списке)
первый раз он задаст i = 0
тогда a[i] == a[0] == 5
во второй раз он задаст i = 1
тогда a[i] == a[1] == 10
и в третий - i = 2
тогда a[i] == a[2] == 15

Google

Igor
01.10.2016
18:35:56
но ты в коде пишешь
a[i + 1]
и когда цикл проходится в третий раз (когда i = 2)
код выполняется так:
a[i + 1] == a[3] == ОПА БЛЯ НЕТ ТАКОГО ЭЛЕМЕНТА
и питон корчится в агонии

Arthur
01.10.2016
18:36:27
логично
но для этого же как раз условие особое для последнего элемента, типа как он считается
тобишь if i == -1

Igor
01.10.2016
18:37:15
я те грю, i никогда не будет равно -1
a[-1] можно сделать. i == -1 не будет никогда.
ты можешь сделать i = -1, но это глупо/нелогично
как ты можешь узнать индекс последнего элемента в списке?
ты его целых два раза узнаешь в своем коде
подсказка - два раза в этих строчках кода:
a = [int(i) for i in input().split()]
for i in range(0, len(a)):
if 0 < len(a) < 2:
print(a[0])

Arthur
01.10.2016
18:39:06
бля точно
ну типа по len(a)?

Igor
01.10.2016
18:39:09
да :)
кстати, условие 0 < len(a) < 2 - тоже пиздец :)

Arthur
01.10.2016
18:39:30
я уже исправил
сделал просто len(a) == 1

Igor
01.10.2016
18:39:47
?

Arthur
01.10.2016
18:40:03
спасибо, поебемся дальше)

Igor
01.10.2016
18:42:42
бля точно
ну типа по len(a)?
ну ты только учти, что там надо будет еще НЕКОТОРУЮ АРИФМЕТИЧЕСКУЮ ОПЕРАЦИЮ сделать, а не прям тупо воспользоваться

Arthur
01.10.2016
18:42:56
над этим и думаю

Igor
01.10.2016
18:47:24

Google

Arthur
01.10.2016
18:48:03
хз, понимаю, что надо как-то все кроме последнего элемента вычсть, а как это сделать не пойму
не просто же len(a) - 1

Igor
01.10.2016
18:48:39
а что не так с len(a) - 1?

Arthur
01.10.2016
18:48:48
это будет не последний элемент, не?

Igor
01.10.2016
18:49:17
a = [666]
сколько здесь элементов?
как обратиться к первому элементу в списке?

Arthur
01.10.2016
18:49:38
один, a[1]
ой
a[0]

Igor
01.10.2016
18:49:48
a = [2, 4, 6]
здесь тоже ответь на эти два вопроса
и напридумывай себе всяких списков, пока не убедишься

Arthur
01.10.2016
18:50:18
3, a[0], a[1], a[2]

Igor
01.10.2016
18:50:42
че ты паришься, ты был прав :)

Arthur
01.10.2016
18:51:25
че-то походу у меня проблемы со значениями и всей этой штуковиной)

Igor
01.10.2016
18:51:29
len(a) - 1 даст тебе индекс последнего элемента в списке a
я, правда, не понимаю, нахера
но это уже другой вопрос ))

Arthur
01.10.2016
18:52:00
ну,это же для того чтоб задать алгоритм вычисления для последнего элемента?

Igor
01.10.2016
18:52:12
для индекса последнего элемента

Google

Igor
01.10.2016
18:52:29
но само значение последнего элемента можно еще забрать, исползьуя индекс -1
(для этого просто не надо считать длину списка, т.е. len(a), удобнее получается)

Arthur
01.10.2016
18:53:33
нихеря не ясно

Igor
01.10.2016
18:53:44
:(

Arthur
01.10.2016
18:54:04
че ж так туго ?
нам ваще len(a) обязательно в этой задаче?

Igor
01.10.2016
18:55:06
Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список "1 3 5 6 10", то на выход ожидается список "13 6 9 15 7" (без кавычек).
Если на вход пришло только одно число, надо вывести его же.
Вывод должен содержать одну строку с числами нового списка, разделёнными пробелом.

Arthur
01.10.2016
18:55:12
for i in a:
так нельзя?

Igor
01.10.2016
18:55:54
так можно, но тогда i будет равно значениям, а тебе соседи нужны. можно сделать и с использованием for i in a, но надо будет по-другому решать

Arthur
01.10.2016
18:56:41
а как правильнее? или пох?

Igor
01.10.2016
18:56:42

Arthur
01.10.2016
18:57:04
окей, я просто принципиальной разницы не вижу между ними
а она видимо реально большая))

Igor
01.10.2016
18:57:17
а как правильнее? или пох?
пох, но раз ты начал через for i in range(0, len(a)), я б так добил. разве что упростил бы с помощью enumerate(), но если это рано, то нафиг :)

Arthur
01.10.2016
18:57:30
это рано))

Igor
01.10.2016
18:57:57
for i in range(0, 5) сделает так, что i = 0, 1, 2, 3 и, наконец, 4
тогда a[i] будет 1, 3, 5, 6 и 10 соответственно каждый раз, когда цикл проходится
а вот for i in a сделает так, что i = 1, 3, 5, 6 и 10, и индекс тебе надо будет узнавать как-то иначе

Arthur
01.10.2016
19:00:05
беда

Igor
01.10.2016
19:00:06
я бы решал это так.
1) если в списке только один элемент, просто выводим его значение на экран
2) если мы находимся на первом элементе, берем текущий (первый) элемент и прибавляем к нему последний элемент (ты знаешь целых ДВА способа, как его узнать)
3) если мы находимся на последнем элементе, берем текущий (последний) элемент и плюсуем к нему первый элемент
4) если мы находимся на любом другом элементе, ... ну дальше ты знаешь
Эта группа больше не существует