Om användaren matar in en bokstav istället för en siffra....
Jag har skrivt ett program i python där användaren ska mata in ett menyval. Om användaren matar in en sträng istället för en siffra, ska programmet skriva ur "Felaktigt val, försök igen."
I nuläget ser koden ut såhär:
while True:
print("1: Mata in ett nytt resultat")
print("2: Skriv ut tabell med totala poäng")
print("3: Skriv ut nuvarande ledare")
print("0: Avsluta")
menyval=int(input("Mata in ett menyval: "))
if menyval == 1:
add_result(resultat)
elif menyval == 2:
print_result(resultat)
elif menyval == 3:
print_leader(resultat)
elif menyval == 0:
print("Programmet avslutas")
break
else:
print("Felaktigt val, försök igen.")
#break
print()
Men här krashar programmet om man matar in en sträng istället för en siffra. Hur kan jag lösa detta utan undantagshantering?
Att korrekt kunna hantera alla möjliga inmatningar från alla möjliga människor är svårt.
Om jag var din lärare skulle jag dela upp problemet i flera delar, precis som man gör i programmering.
Beroende på hur du tycker/känner/fungerar så börja antingen med kod som du kan få att fungera eller koncentrera dig på den kod som inte riktigt vill vad du vill. I så fall:
Skriv en liten kodsnutt som kollar inmatningen. Kör Single-Step genom koden och (om du hittar fel) rätta koden.
Upprepa tills du är nöjd. Så gör alla professionella programmerare.
Egentligen behöver du inte göra om inmatningen till ett tal. Gör du inte det så kan du ha
if menyval == "1":
osv. istället.
Vad händer om inmatningen är " 3xy"?
Peter_ skrev:Vad händer om inmatningen är " 3xy"?
Det blir rätt nu! Den ger ut "Felaktigt val, försök igen."