val=input("Välj (A/B/C): ").strip()whilevalnotin["A","B","C"]:print("Svara A, B eller C")val=input("Välj (A/B/C): ")ifval=="a":print("Du valde A!")elifval=="B":print("Du valde B!")elifval=="C":print("Du valde C!")else:print("Oväntat val")print(sluttext)
# Fix 1: Normalisera inmatningen i ett och samma format (t.ex. versalt)val=input("Välj (A/B/C): ").strip().upper()# Fix 2: Validera konsekvent mot samma format och strippa varje gång i loopenwhilevalnotin{"A","B","C"}:print("Svara A, B eller C")val=input("Välj (A/B/C): ").strip().upper()# Fix 3: Jämför mot samma fall som du normaliserat tillifval=="A":sluttext="Du valde A!"elifval=="B":sluttext="Du valde B!"elifval=="C":sluttext="Du valde C!"# Fix 4: else-grenen behövs inte längre – alla andra fall stoppas av valideringen# Fix 5: Definiera variabeln innan du skriver ut denprint(sluttext)
Steg för steg – bygg upp spelet
Steg 1: Enkelt skelett
En loop för att spela om, en funktion för att fråga och validera svar.
deffråga(prompt,giltiga):s=""whilesnotingiltiga:s=input(prompt).lower().strip()returnsdefspela():print("Välkommen till Grottan!")poäng=0val1=fråga("Väljer du vänster eller höger? (v/h): ",{"v","h"})ifval1=="v":print("Du hittar en skattkista.")val=fråga("Öppna den? (j/n): ",{"j","n"})ifval=="j":print("SLUT: Du blir rik!")poäng+=1else:print("SLUT: Du går därifrån, fattig men trygg.")else:print("En drake blockerar vägen!")val=fråga("Smyg förbi eller spring? (s/r): ",{"s","r"})ifval=="s":print("SLUT: Du smyger förbi draken – vilken ninja!")poäng+=1else:print("SLUT: Draken ser dig… Game over.")returnpoängwhileTrue:p=spela()print(f"Du fick {p} poäng.\n")igen=input("Spela igen? (j/n): ").lower().strip()ifigen!="j":break
Steg 2: Inventarie (lista)
Lägg till en ryggsäck. Vissa val ger föremål – som kan användas senare.
print("Välkommen till Grottan!")val1=input("Väljer du vänster eller höger? (v/h): ").lower().strip()whileval1notin("v","h"):print("Skriv v eller h.")val1=input("Väljer du vänster eller höger? (v/h): ").lower().strip()ifval1=="v":print("Du hittar en skattkista.")val=input("Öppna den? (j/n): ").lower().strip()whilevalnotin("j","n"):print("Skriv j eller n.")val=input("Öppna den? (j/n): ").lower().strip()ifval=="j":print("SLUT: Du blir rik!")else:print("SLUT: Du går därifrån, fattig men trygg.")else:print("En drake blockerar vägen!")val=input("Smyg förbi eller spring? (s/r): ").lower().strip()whilevalnotin("s","r"):print("Skriv s eller r.")val=input("Smyg förbi eller spring? (s/r): ").lower().strip()ifval=="s":print("SLUT: Du smyger förbi draken – vilken ninja!")else:print("SLUT: Draken ser dig… Game over.")
Byt text och val till din egen berättelse.
Vanliga misstag
Ingen validering: spelet kraschar på oväntat svar.
Dubblerad kod: använd funktioner för återanvändning.
Otydlig text: var tydlig med vilka svar som gäller (t.ex. “(j/n)”).
Förslag på förbättringar
Spara poäng eller liv i en variabel
Lägg till ett “inventarie” (lista) som ändras efter val
Slumpa händelser (import random) – kommer i kapitel 6