Из списка чисел удалить все отрицательные числа
Есть по задаче вопрос. Надо из списка чисел удалить все отрицательные числа. Вот пример кода:
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 шт):
input_number = input("Введите число: ").split(' ')
for i in input_number:
if int(i) >= 0:
print(i)
Вот правильный код.
Я так и не понял что вы сделали в своем коде: зачем то удаляете переменную i
, ставите счетчик positive_number
который вы выводите непонятно зачем, split
почему то делит строчку на каждый символ (у вас список с пробелами и минусами отдельно с числами получается). Кажется что код от какой то другой задачи.
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)
Мы решаем задачу: Надо из списка чисел удалить все отрицательные числа.
Если на выходе Вам нужен список чисел в виде строк, то первую строку Вашего кода можно оставить.
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)