15 svar
95 visningar
itsanii4 13
Postad: 23 sep 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 16528
Postad: 23 sep 22:31 Redigerad: 23 sep 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 13
Postad: 24 sep 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 16528
Postad: 24 sep 12:24

Hur ser programmet ut nu? 

itsanii4 13
Postad: 24 sep 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 16528
Postad: 24 sep 12:39

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

itsanii4 13
Postad: 24 sep 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 16528
Postad: 24 sep 13:04

Visa hur det ser ut.

itsanii4 13
Postad: 24 sep 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 16528
Postad: 24 sep 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 13
Postad: 27 sep 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 Online 7029
Postad: 27 sep 20:16

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

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

itsanii4 13
Postad: 27 sep 20:35

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.

itsanii4 13
Postad: 27 sep 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 Online 7029
Postad: 27 sep 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