15 svar
430 visningar
itsanii4 är nöjd med hjälpen
itsanii4 89
Postad: 23 sep 2021 22:08

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))

Laguna Online 28565
Postad: 23 sep 2021 22:31 Redigerad: 23 sep 2021 22:32

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. 

itsanii4 89
Postad: 24 sep 2021 11:37

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. 

Laguna Online 28565
Postad: 24 sep 2021 12:24

Hur ser programmet ut nu? 

itsanii4 89
Postad: 24 sep 2021 12:38

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. 

Laguna Online 28565
Postad: 24 sep 2021 12:39

Den där loopen du hade kan du lägga runt print i stället. 

itsanii4 89
Postad: 24 sep 2021 12:57

Betyder det att jag ska sätta in for in range precis före print? För det funkar inte heller.

Laguna Online 28565
Postad: 24 sep 2021 13:04

Visa hur det ser ut.

itsanii4 89
Postad: 24 sep 2021 14:31

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))

Laguna Online 28565
Postad: 24 sep 2021 14:34

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å.

itsanii4 89
Postad: 27 sep 2021 20:10

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. 

Dr. G 9349
Postad: 27 sep 2021 20:16

flippblipp(15) kommer nu att returnera "flipp".

Du behöver ändra ordningen på dina if-/elif-satser. 

itsanii4 89
Postad: 27 sep 2021 20:35

Det ändrar inget. Jag undrar hur man får en lista  

Lindehaven 820 – Lärare
Postad: 27 sep 2021 20:55
for n in range(10):
    print(flippblipp(n))

Och du behöver ändra ordningen på dina if/elif som @Dr. G skrev.

itsanii4 89
Postad: 27 sep 2021 21:10

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))

Dr. G 9349
Postad: 27 sep 2021 21:28

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.

Svara Avbryt
Close