Wydruk liczb ujemnych podanych przez użytkownika

Wydruk liczb ujemnych podanych przez użytkownika
P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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 ::)

Kopiuj
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')

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
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.

randomize111
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 137
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.

RE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
3

moja propozycja

Kopiuj
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')
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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 : )

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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 :)

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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ę :)

Kopiuj
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}')
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
3

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

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
0

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

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
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 ;)

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0
LukeJL napisał(a):

Nie idź ta droga ;)

Spoko :)

RE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
1

Na szybko przerobiłem kod ...

Kopiuj
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

Kopiuj
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ć

Kopiuj
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:

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.