Python - lista

0

Witam. Mam na ogół prosty problem ale im dłużej patrzę na projekt tym ciężej mi jest go rozwiązać. Mianowicie chodzi o to, żeby program po podaniu liczb do listy wypisać te mniejsze od x liczby.

numbers = []
amount = int(input('How many numbers do you want to add to the list? '+'\n'))
for number in range(0, amount):
    numbers.insert(number, int(input('Enter the number: '+'\n')))
less_than = int(input('Number less than what I have to write?'+'\n'))
i = 0
while int(i) < amount-1:
    if numbers[i] < less_than:
        continue
    elif numbers[i] >= less_than:
        del numbers[i]
    i = i + 1
print('These numbers are :')
for i in range(len(numbers)):
    print(numbers[i])

Problemem jest to, że wyskakuje bład o złym indeksowaniu, ale nie mogę znaleźć w jaki sposób on zachodzi.

2

Wydaje mi się , że jeśli już dla pierwszego elementu będzie spełniony If w pętli to pętla będzie nieskończona,bo nie dojdzie do zwiększenia i o jeden, bo continue będzie szło do kolejnej iteracji więc caly czas będzie się porównywalo to samo.
Problem z złym indeksowaniem pewnie wynika z tego , że jak usuwasz elementy poleceniem del, a zwiekszasz index to dochodzi do przypadku ze lista zawiera mniej elementów niż ma wartość iteratora który uzywasz jako index,

Spróbuj może rozwiązać to zadanie używając pętli for, powinno być łatwiej.
Np w taki sposób:

def number_lower_than_x(x, data):
    return [i for i in data if i < x]


data_ = list(map(int, input('Wprowadz liczy oddzielone przecinkiem:').split(',')))
x_ = int(input('Wprowadz prog:'))
print(number_lower_than_x(x_, data_))

Chociaż nie wiem czy jest on najwydajniejszy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1