Wydruk liczb ujemnych podanych przez użytkownika

0

Mam małą zagwozdkę dotyczącą wydrukowanie na ekranie liczb ujemnych podanych przez użytkownika. Programik bardzo krótki, myślałem że nie będę tu miał problemu A jednak nie drukuje mi liczb ujemnych. Jak nie wpiszę liczb ujemnych, to prawidłowo mam komunikat , że brak liczb ujemnych. Gdzie tu robię błąd. Proszę o podpowiedzi, nie o gotowca ::)

liczby = []

for i in range(1,6):
    druk = int(input(f'Wpisz {i} liczbę: '))
    liczby.append(druk)

if druk < 0:
    print(f'Liczby ujemne to: {druk}')
else:
    print('Brak licz ujemych')

4

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

4

Logika programu jest błędna, bo teraz to sprawdzasz czy ostatnia wpisana liczba jest ujemna i jeśli tak to ją wypisujesz, a w innym przypadku wypisujesz napis że brak liczb ujemnych (chociaż mogły pojawić się wcześniej). Więc musisz jakoś przerobić program, np. dodawaj do tablicy liczby tylko jak będą ujemne i później je wyprintujesz.

3

moja propozycja

liczby = ([int(input("Podaj {0} cyfre/liczbe: ".format(x+1))) for x in range(0,6)])
ujemne = [x for x in liczby if x < 0]
print(ujemne) if ujemne else print ('brak elementow do wyswietlania')
1

zmienna druk przyjmuje wartość ostatniej wpisanej liczby, więc to nie ją chcesz wydrukować (jak rozumiem chcesz wydrukować odpowiedź po przyjęciu wszystkich liczb). zastanów się gdzie są przechowywane te wpisane liczby i jak wyciągnąć z nich ujemne : )

0
LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

LukeJL napisał(a):

I czy na pewno wcięcia masz dobrze?
Ten if else wyglada tak jakbyś chciał go umieścić w środku pętli, a umieszczasz go na zewnątrz.

@LukeJL:
Z wcięciami kombinowałem na różne sposoby przedtem, zanim dałem kod na forum :) Spróbuję przerobić w inny sposób ten cały kod, choć kolega @reich podał już gotowca "niepotrzebnie". @randomize111 dzięki za podpowiedz/wyjaśnienie. Temat zamykam :)

0
randomize111 napisał(a):

Logika programu jest błędna, bo teraz to sprawdzasz czy ostatnia wpisana liczba jest ujemna i jeśli tak to ją wypisujesz, a w innym przypadku wypisujesz napis że brak liczb ujemnych (chociaż mogły pojawić się wcześniej). Więc musisz jakoś przerobić program, np. dodawaj do tablicy liczby tylko jak będą ujemne i później je wyprintujesz.

Na szybko przerobiłem kod , kierując się twoimi podpowiedziemi :) Prawie o to mi chodziło :) Jeszcze pobawię się :)

liczby = []

for i in range(1,6):
    druk = int(input(f'Wpisz {i} liczbę: '))

    if druk < 0:
        liczby.append(druk)
    
print(f'Liczby ujemne to: {liczby}')
3

Nazywanie zmiennych od du... z sufitu jest autosabotarzem.

0

dokładnie. Czemu druk, a nie liczba, number czy n?

0

@LukeJL:
Miałem na myśli, tak zwane: wypisanie liczb na ekranie, nazwę wymyśliłem druk (jako drukowania tekstu).... Ale przejdę ma nazewnictwo angielskie w końcu, jeśli chodzi o nazywanie zmiennych, ewentualnie będę na nazywał zmienne jako a,b,n itp .. po prostu żeby to miało ręce i nogi

3

Miałem na myśli, tak zwane: wypisanie liczb na ekranie, nazwę wymyśliłem druk (jako drukowania tekstu)....

Zmienna powinna byc czytelna, a nie taka, że trzeba się zastanawiać co autor ma na mysli

No i liczba jako taka nie ma nic wspólnego z tym, ze zaraz robisz print. Co jeśli zamiast print, chciałbyś zapisac liczbę do pliku? Zmieniłbyś nazwę zmiennej z liczbą na plik? Nie idź ta droga ;)

0
LukeJL napisał(a):

Nie idź ta droga ;)

Spoko :)

1

Na szybko przerobiłem kod ...

liczby = []

for i in range(1,6):
    druk = int(input(f'Wpisz {i} liczbę: '))

   if druk < 0:
        liczby.append(druk)
    
print(f'Liczby ujemne to: {liczby}')

to wszystko można sprowadzić do 1 linijki

print(list(filter(lambda i: i<0, [int(input("Podaj {0} cyfre/liczbe: ".format(i+1))) for i in range(0,6)])))

zamiast wyświetlać

print(f'Liczby ujemne to: {liczby}')

powinieneś sprawdzić czy w liście znajdują się jakieś elementy, lub czy lista jest pusta. Może to wyglądać np. tak:

if warunek:
    print(f'Liczby ujemne to: {liczby}')
else:
    print(f'lista nie zawiera żadnych elementów.')

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