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

Gra wisielec - nie zatrzymuje się po odgadnięciu hasła
AL
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:1
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.

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

edytowany 3x, ostatnio: Ktos
Ktos
Używaj znaczników ``` do oznaczania bloków kodu i nadawaj sensowne tytuły. Tutaj poprawiłem.
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
1

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

SE
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:318
1
  1. input() nie wymaga rzutowania na str.
  2. można dodać zmienną guessed (odgadnięte)
Kopiuj
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:

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

edytowany 4x, ostatnio: Serechiel

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.