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

Python. Помогите найти ошибку

rascol111

New member
19.04.2020
1
0
BIT
0
Всем привет! Занимаюсь изучением пайтона по курсу.
По заданию написал этот код:
Python:
num = ['1', '1', '2', '2', '3', '3']
s = []
for n in num:
    if num.count(n) > 1:
        s.append(n)
        num.remove(n)
        while n in num:
            num.remove(n)
s.sort()
print(*s)
Проблема в том что программа не видит последние тройки.
Помогите найти ошибку. Заранее спасибо!
 
Изменение списка во время интерирования по тому же самому списку - плохая идея. Java в подобном случае вылетает с ошибкой

Этот код должен работать. Он не меняет начальный список
Python:
num = ['1', '1', '2', '2', '3', '3']
s = []
for n in num:
    if n not in s:
        s.append(n)
s.sort()
print(s)
 
Python:
num = ['1', '1', '2', '2', '3', '3']
s = []
for n in num: # Здесь n это индекс
    if num.count(n) > 1:
        s.append(n)
        num.remove(n) # здесь ты удаляешь значения тем самым уменьшаешь список соответственно и кол-во индексов
        while n in num:
            num.remove(n) # здесь ты удаляешь значения тем самым уменьшаешь список соответственно и кол-во индексов
s.sort()
print(*s)
Не видит потому, что у тебя цикл заканчивается
у тебя список 1.1.2.2.3.3
индексы получаются 0 - 1. 1 - 1. 2 - 2. 3 - 2. 4 - 3. 5 - 3.
после того как ты удалил две единицы и две двойки, то кол-во символов в твоем списке уменьшилось, следовательно индексы поменялись, и стали
0 - 3. 1 -3. а цикл продолжил идти дальше значение n = 2, а таких индексов у тебя нет следовательно цикл закончился.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!