Wydruk liczb ujemnych podanych przez użytkownika

Wydruk liczb ujemnych podanych przez użytkownika
P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • 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:około 11 lat
  • Ostatnio:mniej niż minuta
  • Postów:8423
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:około 4 lata
  • Ostatnio:prawie 2 lata
  • 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:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • 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:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • 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:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • 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 :)

K5
@LukeJL: jakbyś jeszcze nie zauważył to zostałeś oznaczony w tym poście.
P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • 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}')
edytowany 1x, ostatnio: pythonowiec74
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
3

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
P7
Tu się zgadzam. Popracuję nad tym :)
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:mniej niż minuta
  • Postów:8423
0

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


P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • 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:około 11 lat
  • Ostatnio:mniej niż minuta
  • Postów:8423
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 ;)


edytowany 1x, ostatnio: LukeJL
P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:75
0
LukeJL napisał(a):

Nie idź ta droga ;)

Spoko :)

RE
  • Rejestracja:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • 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.')
edytowany 1x, ostatnio: reich

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.