4 svar
386 visningar
jonte12 behöver inte mer hjälp
jonte12 469
Postad: 8 dec 2021 16:58

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?

Peter_ 470 – Avstängd
Postad: 8 dec 2021 17:19 Redigerad: 8 dec 2021 17:38

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.  

Laguna Online 30479
Postad: 8 dec 2021 17:30

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.

Peter_ 470 – Avstängd
Postad: 8 dec 2021 17:38

Vad händer om inmatningen är "    3xy"?

jonte12 469
Postad: 8 dec 2021 17:41
Peter_ skrev:

Vad händer om inmatningen är "    3xy"?

Det blir rätt nu!  Den ger ut "Felaktigt val, försök igen."

Svara
Close