Mitt första multiplikationsprogram
Tjena! Jag har precis börjar intressera mig för programmering och skulle programmera en egen liten "multiplikationstränare".
from random import *
from time import *
def prod(p):
if (p) == (a * b):
print('Rätt!')
return True
else:
print('Fel! Försök igen.')
return False
a = randint(1,10)
b = randint(1,10)
while True:
#a = randint(1,10)
#b = randint(1,10)
p = int(input(f' Vad är produkten av {a} och {b}? '))
if prod(p) == True:
sleep(2)
Mitt problem ligger i att om jag gissar fel produkt, så ger den mig två nya heltal. Jag vill att den ska loopa på samma heltal tills de blir rätt. Hur löser jag detta problem?
Anledningen till de kommenterade randint:erna är för att första gången jag körde programmet så genererades bara två tal sen slutade det så jag flyttade in de i while-loopen. Sedan flyttade jag ut de av någon anledning, (kommer inte ihåg varför) men det fungerar ändå.
Tack på förhand!
Ary
Du kan ha en while-loop inuti den befintliga while-loopen efter att du tilldelat a och b slumptal. Den inre whileloopen loopar tills programmet får rätt svar.
Så efter sleep(2) lägger jag till en while True, men vad händer efter den? Jag skrev såhär:
while True:
if prod(p) != True:
Men vad skriver jag därunder? Jag vet inte kommandot för att fortsätta. Jag testade continue, men då fastnar den på samma heltal så även efter du har skrivit rätt så kommer bara samma tal upp.
Som koden ser ut i frågan kan det inte bli nya slumptal om man svarar fel.
Jag programmerar inte python men i princip:
while (true) {
// generate a and b
a = ...;
b = ...;
while (true) {
// get user input
p = ...;
// check answer:
if (prod(a, b, p) == true)
break;
}
}
Har lagt till a och b i prod()-metoden som kontrollerar för att slippa ha globala variabler men funkar även utan detta.
Den yttre loopen är för att få nya tal när man svarat rätt.
Nu fungerade det! Tack för hjälpen :-)