Gra w rozwiązywanie anagramu

0

Witam, przerabiam książkę o programowaniu w Pythonie i na końcu rozdziału, jest zadanie, aby poprawić program Wymieszane litery w taki sposób, żeby mieć możliwość podpowiedzi i punktacje, zrobiłem to po swojemu prosto na ifach, wszystko jest ok tylko, tylko, że pierwszy if działa a drugi jest ignorowany, gdy program się pyta czy chcę drugą podpowiedź, i ja podam odpowiedź tak to, po prostu przechodzi do pętli.

# wymieszane litery
# komputer wybiera losowo slowo, a potem miesza jego litery
import random

WORDS = ("python","anagram","łatwy","skomplikowany","odpowiedź","ksylofon")
word = random.choice(WORDS)
print (word)

correct = word

# utworz pomieszana wersje slowa
jumble =""
zmienna1 = ""
zmienna2 = "" 
letters = len(word)
letters2 = word[0:2]
guess = ""
while word:
    position = random.randrange(len(word))
    jumble += word[position]
    word = word[:position] + word[(position + 1):]

print (jumble)


# rozpocznij grę
print(
"""
           Witaj w grze 'Wymieszane litery'!
        
   Uporządkuj litery, aby odtworzyć prawidłowe słowo.
(Aby zakończyć zgadywanie, naciśnij klawisz Enter bez podawania odpowiedzi.)
"""
)
print("Zgadnij, jakie to słowo:", jumble)
if jumble:
    zmienna1 = input("Czy chcesz skorzystać z podpowiedźi? Jeśli chcesz to napisz tak: ") 
if zmienna1 == "tak":
    print("Mogę ci podpowiedzieć, że to słowo ma: ", letters, "liter")
elif zmienna1 == "nie":
    print("Spróbuj odgadnąć bez podpowiedzi")
    

guess = input("\nTwoja odpowiedź: ")
if guess != correct and guess != "":
    print("Czy chcesz skorzystać z drugiej podpowiedźi?")
zmienna2 == input("Jeśli chcesz skorzystać z drugiej podpowiedźi napisz tak: ")
if zmienna2 == "tak":
    print("Mogę ci jeszcze podpowiedzieć, że pierwsze dwie litery tego słowa to: ",letters2) 
elif zmienna2 == "nie":
    print("Spróbuj odgadnąć bez podpowiedzi")

while guess != correct and guess != "":
    print("Niestety, to nie to słowo.")
    guess = input("Twoja odpowiedź: ")
    

    
if guess == correct:
    print("Zgadza się! Zgadłeś!\n")
if guess == correct and zmienna1 == "tak":
    print("Brawo zgadłeś ale tracisz 1 punkt za podpowiedź")
elif guess == correct and zmienna1 == "tak" and zmienna2 == "tak":
    print("Brawo zgadłeś ale wykorzystałeś aż dwie podpowiedźi i tracisz kolejny punkt")


print("Dziękuję za udział w grze.")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
1

Już lepiej:)

jest zadanie, aby poprawić program Wymieszane litery w taki sposób, żeby mieć możliwość podpowiedzi i punktacje

A mógłbyś coś więcej, co to za zadanie?

0

Jest to zadanie z książki, Popraw program Wymieszane litery tak, żeby każdemu słowu towarzyszyła podpowiedź. Gracz powinien mieć możliwość zobaczenia podpowiedzi, jeśli utknie w martwym punkcie. Dodaj system punktacji, który nagradza graczy rozwiązujących anagram bez uciekanie się do podpowiedzi. Rozwiązałem problem z tym ifem, bo był tam znak == przy input, i dlatego nie działał, nie działają mi teraz ostatnie linie kodu mianowicie:

if guess == correct:
****print("Zgadza się! Zgadłeś!\n")
if guess == correct and zmienna1 == "tak":
****print("Brawo zgadłeś ale tracisz 1 punkt za podpowiedź")
if guess == correct and zmienna1 == "tak" and zmienna2 == "tak":
****print("Brawo zgadłeś ale skorzystałeś z dwóch podpowiedzi i tracisz 2 punkty")

po, przyjęciu propozycji dwóch podpowiedzi, program owszem gratuluje mi, że odgadłem hasło, ale pisze:

Brawo zgadłeś ale tracisz 1 punkt za podpowiedź
Brawo zgadłeś ale skorzystałeś z dwóch podpowiedźi i tracisz 2 punkty
Dziękuję za udział w grze.

a chciał bym, żeby program wybierał między tymi dwoma warunkami a nie pisał obydwa.

0
dedek2 napisał(a):

po, przyjęciu propozycji dwóch podpowiedzi, program owszem gratuluje mi, że odgadłem hasło, ale pisze:

Brawo zgadłeś ale tracisz 1 punkt za podpowiedź
Brawo zgadłeś ale skorzystałeś z dwóch podpowiedźi i tracisz 2 punkty
Dziękuję za udział w grze.

Sorry ale kłamiesz, w kodzie masz elif na te dwa komunikaty więc albo to nie ten kod albo nie te komunikaty.
Generalnie muszą być 3 warunki połączone elif:
guess != correct - nie zgadł
zmienna2 == "tak" - skorzystał z 2-ch podpowiedzi
zmienna1 == "tak" - skorzystał z 1-ej podpowiedzi
oraz else - nie korzystał z podpowiedzi

0

OK, w końcu zrobiłem myślę tak jak trzeba, podaję moje wypociny jak by ktoś kiedyś potrzebował.

# wymieszane litery
# komputer wybiera losowo słowo, a potem miesza jego litery

import random

WORDS = ("python","anagram","łatwy","skomplikowany","odpowiedź","ksylofon")
word = random.choice(WORDS)
print (word)

correct = word

# utworz pomieszana wersje slowa
jumble =""
zmienna1 = ""
zmienna2 = "" 
letters = len(word)
letters2 = word[0:2]
guess = ""
while word:
****position = random.randrange(len(word))
****jumble += word[position]
****word = word[:position] + word[(position + 1):]

print (jumble)


# rozpocznij grę
print(
"""
           Witaj w grze 'Wymieszane litery'!
        
   Uporządkuj litery, aby odtworzyć prawidłowe słowo.
(Aby zakończyć zgadywanie, naciśnij klawisz Enter bez podawania odpowiedzi.)
"""
)
print("Zgadnij, jakie to słowo:", jumble)
if jumble:
****zmienna1 = input("Czy chcesz skorzystać z podpowiedźi? Jeśli chcesz to napisz tak: ") 
if zmienna1 == "tak":
****print("Mogę ci podpowiedzieć, że to słowo ma: ", letters, "liter")
elif zmienna1 == "nie":
****print("Spróbuj odgadnąć bez podpowiedzi")
    
guess = input("\nTwoja odpowiedź: ")
if guess:
****print("Czy chcesz skorzystać z drugiej podpowiedźi?")
zmienna2 = input("Jeśli chcesz skorzystać z drugiej podpowiedźi napisz tak: ")
if zmienna2 == "tak":
****print("Mogę ci jeszcze podpowiedzieć, że pierwsze dwie litery tego słowa to: ",letters2) 
elif zmienna2 == "nie":
****print("Spróbuj odgadnąć bez podpowiedzi")

while guess != correct and guess != "":
****print("Niestety, to nie to słowo.")
****guess = input("Twoja odpowiedź: ")
    

    
if guess == correct and zmienna1 == "nie" and zmienna2 == "nie":
****print("Zgadza się! Zgadłeś bez podpowiedźi i otrzymujesz 3 punkty\n")
elif guess == correct and zmienna1 == "tak" and zmienna2 == "nie":
****print("Brawo zgadłeś ale tracisz 1 punkt za podpowiedź w sumie otrzyjmujesz 2 punkty")
elif guess == correct and zmienna1 == "tak" and zmienna2 == "tak":
****print("Brawo zgadłeś ale wykorzystałeś aż dwie podpowiedźi i tracisz 2 punkty w sumie otrzymujesz tylko 1 punkt")
elif guess == correct and zmienna1 == "nie" and zmienna2 == "tak":
****print("Po co ci podpowiedź jak już odgadłeś słowo")
elif guess == "" and zmienna1 == "" and zmienna2 == "":
****print("Nie podałeś żadnej odpowiedźi")


print("Dziękuję za udział w grze.")
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

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