• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla While nie chce się przerwać

Object Storage Arubacloud
0 głosów
778 wizyt
pytanie zadane 27 maja 2018 w Python przez El Lirón Obywatel (1,320 p.)
edycja 27 maja 2018 przez HaKIM

Witajcie! Uczę się Pythona i mam problem z pętlą while. Program jaki napisałem ma na celu pytać użytkownika o decyzję ws zakupu i zależnie od odpowiedzi modyfikować jego ekwipunek oraz ilość pieniędzy. Niestety, program ciągle pyta o decyzję, zamiast przejść dalej. Chciałbym, aby po odpowiedzi "t" lub "n" pętla się przerwała. Co robię źle?

eq = ["lina", "nóź", "siekiera"]
hajs = 50
def pokaz():
    print("Ekwipunek zawiera: ", eq)
    print("Posiadasz ", hajs, " miedziaków")
pokaz()
print("Odwiedzasz handlarza.")
dezycja = []
while dezycja != "t" or "n":
    decyzja = input("Czy chcesz kupić krzesiwo za 30 miedziaków? (t/n): ")
    if decyzja == "t":
        hajs -= 30
        eq.append("krzesiwo")
        print("Kupiłeś krzesiwo za 30 miedziaków")
    elif decyzja == "n":
        print("Rezygnujesz za zakupu")
    else:
        print("Wybierz t lub n: ")
pokaz()
print("Dziękuję!")

 

komentarz 27 maja 2018 przez Secrus Nałogowiec (32,880 p.)
"dezycja" (linia 9)
komentarz 27 maja 2018 przez El Lirón Obywatel (1,320 p.)
Dzięki!

1 odpowiedź

+2 głosów
odpowiedź 27 maja 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 11 lipca 2018 przez El Lirón
 
Najlepsza

Nie analizowałem zbytnio Twojego kodu, ale do przerwania działania pętli możesz zastosować instrukcję break: https://docs.python.org/3.6/tutorial/controlflow.html

Może w Twoim przypadku będzie to dobre rozwiązanie? wink

Swoją drogą, bo tak teraz zajrzałem w kod - raz używasz nazwy dezycja, później decyzja - nie wiem czy tak chciałeś, ale to raczej słaby pomysł - obydwie nazwy wyglądają bardzo podobnie i można się pomylić.

A inna rzecz to taka, że:

while dezycja != "t" or "n":

powinieneś zamienić raczej na:

while dezycja != "t" and dezycja != "n":

 

komentarz 27 maja 2018 przez El Lirón Obywatel (1,320 p.)
Dziękuję! To może być ten błąd

Zmiana na while dezycja != "t" and dezycja != "n"  to był klucz do rozwiązania sprawy. Jeszcze raz dziękuję! :)
komentarz 27 maja 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie ma za co, cieszę się, że mogłem pomóc. smiley

Podobne pytania

0 głosów
0 odpowiedzi 498 wizyt
pytanie zadane 8 listopada 2018 w C i C++ przez niezalogowany
+1 głos
2 odpowiedzi 406 wizyt
pytanie zadane 24 listopada 2019 w Python przez kingkushlee Gaduła (3,960 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...