T-106.1212 Grundkurs i programmering

Rond 4, uppgift 1

Nivå och poängvärde:B 80
Kort beskrivning:Skoj och lek med listorna fortsätter.
Vad vi lär oss:Att skapa egna enkla funktioner och att använda pseudokod.
Frihet i implementationen:Liten. Här följer man instruktionerna till punkt och pricka.
Realism:Låg.
Utmaning:Inte en av de lättare uppgifterna. Att tolka instruktionerna kan orsaka lite huvudbry.
Arbetsmängd:Tämligen lätt. De flesta tar en timme eller två.

Obs!

Vi fortsätter på "Hänga Gubbe", från uppgift 2.5.

Uppgiftsbeskrivning

I filen hanging_man.py borde du ha resultatet av förra veckans "Hänga Gubbe"-uppgift. Vi fortsätter jobba på projektet.

  1. Skapa en funktion find_hits som:
    1. Tar någonting som parameter: fundera själv vad det kan vara!
    2. Söker upp var i ordet den gissade bokstaven förekommer.
      • Uppdaterar en lista (som i början består av ett antal understreck, lika många som det finns bokstäver i ordet) så att den gissade bokstaven ersätter de understreck som representerar den bokstaven (om den finns över huvudtaget). T.ex. ['_','_','_','_'] -> ['_','_','t','t'] om ordet är "katt" och spelaren gissar "t".
    3. Returnerar True om bokstaven finns i ordet, annars returnerar den False.
  2. Definiera två variabler till i play-funktionen:
    1. en lista vars element är understreck ("_"), som representerar bokstäverna i ordet som ska gissas. Dessa streck ersätts av bokstäver när de gissas.
    2. en tom sträng, som kommer att innehålla alla gissade bokstäver. Detta för att spelaren också straffas av att gissa samma bokstav två gånger (även om den finns i ordet). T.ex. om spelaren har gissat "a", "u" och "e" så är strängen "aue".
  3. Skriv alltid ut listan i början av while-slingan. Ändra listan till en sträng, så ser utskriften bättre ut. Till detta kan användas metoden join, som används t.ex. så här: skiljetecken.join(lista).
    1. skiljetecken är alltså en sträng eller en variabel som innehåller en sträng. Denna sträng placeras som skiljetecken mellan elementen i listan. I detta fall vill vi att listans element ska skrivas ut fast i varann, så skiljetecken kan ersättas med en tom sträng ''.
    2. lista är en lista som vi vill konvertera till en sträng.
    3. Skriv ut i början av raden: 'Word to guess:'
  4. När spelaren har bestämt sig för att gissa en bokstav och programmet har bett om och sparat bokstaven, ta bort koden som skriver ut "You guessed" osv. och lägg till följande funktionalitet i den delen av koden:
    om den givna bokstaven redan finns bland tidigare gissade bokstäver, så
          skriv ut texten: '<bokstav> already used.'
          subtrahera ett från antalet tillåtna felgissningar
    annars:
          anropa funktionen som undersöker om den givna bokstaven finns i ordet
          om bokstaven inte är i ordet och det ännu finns åtminstone en tillåten felgissning:
                skriv ut en tom rad samt texten 'Miss'
                subtrahera ett från antalet tillåtna felgissningar
    lägg till den gissade bokstaven till de andra redan gissade bokstäverna
    gör listan till en sträng med join() och gör det till det senast gissade ordet
          
  • Testa programmet
  • Om du lämnar kvar din testningskod då du lämnar in programmet, kom ihåg att skilja den åt med en "if __name__ == '__main__'" -rad Då du testar programmet, borde det skriva ut följande:
    
    Word to guess: ____
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    r
    
    Miss
    XXXXXXXXX
    
    Word to guess: ____
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    t
    XXXXXXXXX
    
    Word to guess: t___
    
    
    Några omgångar fram:
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    a
    XXXXXXX
    
    Word to guess: toa_
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    d
    XXXXXXX
    
    Correct guess!
    
    Om alla tillåtna felgissningar är använda, slutar spelet:
    
    Word to guess: to__
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    c
    
    Miss
    X
    
    Word to guess: to__
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    m
    
    Miss
    
    You ran out of time.
    
    Rätt gissning av ordet:
    
    Word to guess: ____
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    y
    
    Miss
    XXXXXXXXX
    
    Word to guess: ____
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    d
    XXXXXXXXX
    
    Word to guess: ___d
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    a
    XXXXXXXXX
    
    Word to guess: __ad
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    w
    Guess the word:
    toad
    XXXXXXXXX
    
    Correct guess!
    
    Att gissa ordet fel ser likadant ut som att gissa bokstaven fel:
    
    Word to guess: ____
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    l
    Give your guess:
    t
    XXXXXXXXXX
    
    Word to guess: t___
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    w
    Guess the word:
    time
    XXXXXXXXX
    
    Word to guess: t___
    
    Options:
    l  guess a letter
    w  guess the word
    i  instructions
    q  quit
    
    Give your choice (l/w/i/q):
    

    Inlämning

    Lämna in hanging_man.py i Goblin.