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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,005 wizyt
pytanie zadane 27 maja 2018 w Python przez El Lirón Obywatel (1,350 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,350 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,350 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 668 wizyt
pytanie zadane 8 listopada 2018 w C i C++ przez niezalogowany
+1 głos
2 odpowiedzi 504 wizyt
pytanie zadane 24 listopada 2019 w Python przez kingkushlee Gaduła (3,960 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...