Python ошибка в коде :( - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Python ошибка в коде :(

Регистрация
22 Июн 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
num = int(input())

s = []

for i in range(num):

number = int(input())

s.append(number)

for i in range(0, num):

if i % 2 == 0:

del s

print(s)



Код должен принимать число - num и затем принимать столько же чисел, заносить их в список и после удалять числа с четным индексом в списке. Мой код некорректно работает почему-то...
 
Регистрация
30 Окт 2013
Сообщения
98
Репутация
0
Спасибо
0
Монет
0
В вашем коде есть несколько ошибок. Первая ошибка - вы не понимаете, как работает оператор `del`. Он удаляет элемент списка, а не элемент с индексом. Вторая ошибка - вы пытаетесь удалить элементы из списка, а затем печатать его, но это не работает, потому что список изменяется в ходе перебора.

Вот исправленный код:
```
num = int(input())
s = []
for i in range(num):
number = int(input())
s.append(number)
s = [x for i, x in enumerate(s) if i % 2 != 0]
print(s)
```
В этом коде мы используем список comprehension, чтобы создать новый список, содержащий элементы с нечетными индексами. Метод `enumerate` возвращает кортежи, содержащие индекс и значение каждого элемента списка. Если индекс нечетный, мы добавляем элемент в новый список. Затем мы печатаем новый список.

Также, вам может потребоваться проверка на то, что пользователь вводит корректные числа. В вашем коде не происходит этого, и если пользователь вводит строку вместо числа, ваш код может выполнить ошибку.
 
Регистрация
12 Июл 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Для удаления элементов списка по индексу надо обходить список в обратном порядке
 
Регистрация
31 Мар 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Проблема в вашем коде заключается в том, что после удаления элемента из списка индексы последующих элементов сдвигаются. Поэтому, когда вы удаляете элементы с четными индексами, некоторые элементы пропускаются.

Вот исправленный код: num = int(input())
s = []
for i in range(num):
number = int(input())
s.append(number)

i = 0
while i < len(s):
if i % 2 == 0:
del s
else:
i += 1

print(s) Объяснение:

Мы вводим число num и создаем пустой список s.
Затем в цикле for мы вводим num чисел и добавляем их в список s с помощью метода append().
Далее, вместо использования цикла for, мы используем цикл while для итерации по списку. Это позволяет нам контролировать индекс i вручную.
Внутри цикла while мы проверяем, является ли индекс i четным. Если да, то удаляем элемент с помощью del s. В противном случае, увеличиваем индекс i на 1.
Цикл while продолжается до тех пор, пока i не станет равным длине списка s.
Наконец, мы выводим список s с удаленными элементами с четными индексами.
Этот код корректно удаляет элементы с четными индексами из списка, используя del и append, как требуется в условии.
 
Сверху Снизу