Из списка чисел удалить все отрицательные числа

Есть по задаче вопрос. Надо из списка чисел удалить все отрицательные числа. Вот пример кода:

input_number = input("Введите число: ").split()
positive_num = 0

for i in input_number:
    if int(i) < 0:
        del i
    positive_num += 1
    
print(positive_num)

А выдаёт вот так:

Введите число: 1 2 -3 4 -5 -6 7

7

Хотя вроде бы должен все положительные вывести


Ответы (3 шт):

Автор решения: NTA
input_number = input("Введите число: ").split(' ')

for i in input_number:
    if int(i) >= 0:
        print(i)

Вот правильный код.
Я так и не понял что вы сделали в своем коде: зачем то удаляете переменную i, ставите счетчик positive_number который вы выводите непонятно зачем, split почему то делит строчку на каждый символ (у вас список с пробелами и минусами отдельно с числами получается). Кажется что код от какой то другой задачи.

→ Ссылка
Автор решения: Zailox
input_number = list(map(int, input("Введите числа: ").split())) #Спрашиваем числа и конвертируем лист строк в лист чисел
positive_num = 0

for i in range(len(input_number)):
    if int(input_number[i]) > 0: #Если обЪект номер i в листе больше нуля, то positive_num увеличивается
        positive_num += 1

print(positive_num)

Более простая в чтении версия:

input_number = input("Введите числа: ").split() #Спрашиваем числа
input_number = list(map(int, input_number)) #конвертируем лист строк в лист чисел
positive_num = 0

len_num = len(input_number) #Узнаём кол-во элементов (чисел) в листе

for i in range(len_num):
    if int(input_number[i]) > 0: #Если объект номер i в листе больше нуля, то positive_num увеличивается
        positive_num += 1

print(positive_num)
→ Ссылка
Автор решения: Alexey Trukhanov

Мы решаем задачу: Надо из списка чисел удалить все отрицательные числа.

Если на выходе Вам нужен список чисел в виде строк, то первую строку Вашего кода можно оставить.

input_number = input("Введите число: ").split(' ')

Если же Вы хотите, чтобы на выходе был список чисел в виде чисел, то надо переписать, например, как указал в соседнем ответе Zailox

input_number = list(map(int, input("Введите числа: ").split()))

Для Вашей задачи счетчик положительных чисел не нужен, можно убрать.

# positive_num = 0

Если Вы настаиваете на применении оператора del (ничего против не имею, я бы использовал метод pop(), но можно и так) то Вам надо перебирать индексы с конца списка, иначе при удалении элементов собьется индексация и Вы получите исключение IndexError.

for i in reversed(range(len(input_number))):
    if int(input_number[i]) < 0:
        del input_number[i]

Итого

Если Вас устраивает, что "числа" будут хранится как строки, то:

input_number = input("Введите число: ").split(' ') 

for i in reversed(range(len(input_number))):
    if int(input_number[i]) < 0: 
        del input_number[i]

print(input_number)

Если требуется, чтобы "числа" были числами, то:

input_number = list(map(int, input("Введите числа: ").split())) 

for i in reversed(range(len(input_number))):
    if input_number[i] < 0: 
        del input_number[i]

print(input_number)
→ Ссылка