skapa en lista
Är en nybörjare och använder thonny just nu. Det vi ska göra är att skapa ett spel kallat för flippblipp. Jag klistrar in reglerna nedan.
För alla tal som är jämnt delbara med 3 får man inte säga detta tal utan måste i stället säga ordet flipp.
För alla tal som är jämnt delbara med 5 får man inte säga detta tal utan måste i stället säga ordet blipp.
För alla tal som är jämnt delbara med både 3 och 5 får man inte säga detta tal utan måste i stället säga ordet flipp blipp.
För alla tal som varken är jämnt delbara med 3 eller 5 säger man detta tal.
Det jag vill göra är att skapa en lista från 1-10 och samtidigt gå efter reglerna. Nått liknande som detta...
1
2
flipp
4
blipp
flipp
7
8
flipp
blipp
Men jag lyckas inte få fram detta när jag kör min kod! :(
(mitt kod ser ut såhär just nu)
def flippblipp (n):
for n in range (n):
if n % 3== 0:
return ("flipp")
elif n % 5== 0:
return ("blipp")
elif n % 3== 0 and n % 5== 0:
return ("flippblipp")
else:
return (n)
print (flippblipp(11))
Det som händer när du anropar flippblipp(11) är att den börjar med n = 0, kollar om det är delbart med 3, och det är det, så den returnerar "flipp". Sedan är funktionsanropet färdigt. Du har hoppat ut ur funktionen och därmed ur loopen.
Det finns ett sätt att skriva funktionen så att den funkar som du tänker, men du måste ändå ändra huvuddelen av programmet. Lägg print inuti en loop i stället.
Du kan börja med att ändra funktionen så den tar bara det n som den fick och inte loopar.
Menar du att jag ska ta bort ( for n in range (n):) eftersom spelet funkar som den ska utan den koden. Men då kommer fortfarande inte listan fram.
Hur ser programmet ut nu?
def flippblipp (n):
if n % 3== 0:
return ("flipp")
elif n % 5== 0:
return ("blipp")
elif n % 3== 0 and n % 5== 0:
return ("flippblipp")
else:
return (n)
print (flippblipp(10))
Eftersom n=10 pga print (flippblipp(10)) så får jag blipp då 10 är delbart med 5.
Den där loopen du hade kan du lägga runt print i stället.
Betyder det att jag ska sätta in for in range precis före print? För det funkar inte heller.
Visa hur det ser ut.
def flippblipp (n):
#for n in range (n):
if n % 3== 0:
return ("flipp")
elif n % 5== 0:
return ("blipp")
elif n % 3== 0 and n % 5== 0:
return ("flippblipp")
else:
return (n)
for n in range (n):
print (flippblipp(10))
Du får ju göra nånting med n i loopen. Varje gång du anropar med 10 får du samma sak.
Använd förresten kodverktyget (som ser ut som {;}) så går det att indentera rätt också.
Vet att jag behöver göra någonting med n i loopen, men vet inte exakt vad och därför behöver jag hjälp.
flippblipp(15) kommer nu att returnera "flipp".
Du behöver ändra ordningen på dina if-/elif-satser.
Det ändrar inget. Jag undrar hur man får en lista
for n in range(10):
print(flippblipp(n))
Och du behöver ändra ordningen på dina if/elif som @Dr. G skrev.
Har ändrat ordningen, är det rätt?
def flippblipp (n):
for n in range (10):
if n % 3== 0 and n % 5== 0:
return ("flippblipp")
elif n % 3== 0:
return ("flipp")
elif n % 5== 0:
return ("blipp")
else:
print (flippblipp(n))
flippblipp(n) ska returnera "flipp", "blipp", "flippblipp" eller ett tal. Den behöver ingen for-loop, men if-/elif-/else-satsen.
Sedan får du anropa flippblipp i en for-loop.