Gra wisielec - nie zatrzymuje się po odgadnięciu hasła

0

Witam, pytanie poczatkujacego. Tworze minigre wisielec w pythonie i wszystko zdaje sie skladac w calosc . Poza tym , ze po odgadnieciu hasla nie zatrzymuje sie.

lista = []
print ("Gra wisielec!")

print("Wpisz slowo do odgadniecia: ")
slowo=str(input())

dl = len(slowo)
pustemiejsca = "_"*dl
szanse = 5

print (pustemiejsca, "[", dl, "liter ] , (w tym mozliwa spacja).")
print ("Podaj literki by zgadnąć słowo.\n")



while True:
    print(f"Uzyte dotychczas literki to: {lista}")
    litera = str(input())
    lista.append(litera)

    if litera in slowo:
        for i in range(len(slowo)):

            if litera == slowo[i]:
                pustemiejsca_list = list(pustemiejsca)
                pustemiejsca_list[i] = slowo[i]
                pustemiejsca = "".join(pustemiejsca_list)

            if not "_" in pustemiejsca:
                print(f"Gratuluje! Wygrałeś pozostawiajac {szanse} szans. ")
                break           # dlaczego nie dziala?


    else:

        szanse = szanse - 1
        print ("Zła literka. Tracisz szansę (masz obecnie:", szanse, "szans)")
    print (pustemiejsca)
    if(szanse==0):
        print("Szukanym słowem było: " + slowo)
        break

Wydaje mi sie, ze ten break powinien zastopowac. Z gory dziekuje za pomoc i prosze o wyrozumialosc dla laika ;))

1

Chcesz przerwać pętlę while z linii 14 czy pętlę for z linii 20?

1
  1. input() nie wymaga rzutowania na str.
  2. można dodać zmienną guessed (odgadnięte)
guessed = False
while not guessed: #zamiast True
....
           if not "_" in pustemiejsca:
                print(f"Gratuluje! Wygrałeś pozostawiajac {szanse} szans. ")
                guessed = True           # i to wyjdzie z pętli

Opcja 2:

 if not "_" in pustemiejsca:
     print(f"Gratuluje! Wygrałeś pozostawiajac {szanse} szans. ")
     break           # dlaczego nie dziala?

Nie działa, bo jest w złym miejscu.

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