Spela igen funktion fungerar inte
Jag ska skapa ett spel som kallas 21an. Spelet går ut på att två personer turas om med att välja mellan siffrorna 1 och 2, detta värde läggs till i en gemensam pott. Den spelare som når 21 vinner! Man ska även få spela igen, men det fungerar inte. Såhär ser hela min kod ut:
print("Väkommen till 21an! Spelet går ut på att du och en annan turas om med att välja mellan siffrorna 1 och 2 detta värde läggs till i en gemensam pott. Den spelare som når 21 vinner!")
play_again = str("ja")
talsumma = 0
spelare = True
Avinster = 0
Aförluster = 0
Bvinster = 0
Bförluster = 0
while play_again == "ja" :
while talsumma < 21:
while spelare == True:
a = int(input("Spelare A: Vänligen skriv in 1 eller 2:"))
if a < 1 or a > 2:
a = int(input("Du måste skriva in 1 eller 2, försök igen:"))
else:
talsumma += a
print("Talsumman är nu " + str(talsumma))
spelare = False
while talsumma < 21 and spelare == False:
b = int(input("Spelare B: Vänligen skriv in 1 eller 2:"))
if b < 1 or b > 2: #Fixa så att man inte heller får skriva en bokstäver--------------------------------------------------------------------------
b = int(input("Du måste skriva in 1 eller 2, försök igen:"))
else:
talsumma += b
print("Talsumman är nu " + str(talsumma))
spelare = True
if talsumma == 21 and spelare == False:
print("Grattis spelare A, du vann!")
Avinster +=1
Bförluster += 1
elif talsumma == 21 and spelare == True:
print("Grattis spelare B, du vann!")
Bvinster += 1
Aförluster += 1
play_again = input('Vill du spela igen? ja/nej ')
if(play_again == "nej"): #fixa så att man faktiskt får spela igen om man svarar ja
break
-----------------------(Slut på koden)----------------------
När jag svarar nej på play again fungerar det som det ska, men när jag svarar ja säger koden bara "Grattis spelare A/B, du vann! och frågar igen.
Har ni lärt er om try/catch?
Laguna skrev:Har ni lärt er om try/catch?
Nej, inte än är hittils ganska ny till programmering. Detta är min andra uppgift :)
I stället för att göra om det inlästa till ett tal direkt med int() kan du först kolla om det är antingen strängen "1" eller "2" och förkasta allt annat.
Sen kan du göra det till ett tal med int() så det går att göra aritmetik med det.
Tillägg: 13 mar 2022 22:50
Jag märker att jag svarade på frågan du ställde i din andra tråd, inte i den som du ställde här. Jag blsndade ihop trådarna.