@python_beginnersЭта группа больше не существует

Страница 507 из 1885
b0g3r
30.09.2016
23:04:48
(наверное)

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

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

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[1]
WROOOOOONG

a[0]
RIIIIIGHT

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
3, a[0], a[1], a[2]
ну вот, 3-1 == 2 ведь

че ты паришься, ты был прав :)

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
нам ваще len(a) обязательно в этой задаче?
ну, в твоем коде оно бы пригодилось, даже очень

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) если мы находимся на любом другом элементе, ... ну дальше ты знаешь

Страница 507 из 1885

Эта группа больше не существует Эта группа больше не существует