Level 2Python: Tilfeldig

Skrevet av: Omsett frå microbit-micropython.readthedocs.io

Oversatt av: Stein Olav Romslo

Kurs: Microbit
Tema: Elektronikk, Tekstbasert
Fag: Programmering, Matematikk
Klassetrinn: 5.-7. klasse, 8.-10. klasse, Videregående skole
Bilde av BokmålPå Bokmål

Denne oppgåva er ein del av oppgåvesamlinga "Programmering i micro-python" og byggjer vidare på Python: Knappar.

Me tilrår at du lastar ned og skriv koden din i mu editor når du jobbar med desse oppgåvene. Instruksjonar for korleis ein lastar ned Mu finn du på nettsida via linken.

Når Mu er installert kan du kople micro:biten din til datamaskinen via ein USB-kabel. Skriv koden din i editor-vindauget og trykk på “Flash”-knappen for å laste koden over på micro:biten. Dersom det ikkje fungerer, sørg for at micro:biten har dukka opp som ei USB-eining på datamaskinen din.

Introduksjon

Er du lei av at micro:bit-en din gjer det same kvar gong? Kanskje vil du at utfallet skal bli litt meir spanande? I denne oppgåva skal me lære korleis me kan få eininga til å oppføre seg tilsynelatande tilfeldig.

MicroPython har ein random-modul som gjer det enkelt å inkludere tilfeldigheiter og litt kaos inn i koden din. Til dømes er dette kode for å scrolle eit tilfeldig namn over displayet:

from microbit import *
import random

namn = ["Mari", "Yolanda", "Jakob", "Sofie", "Kushal", "Mei Xiu", "William" ]

display.scroll(random.choice(names))

Lista (namn) inneheldt sju namn som er definert som tekstar. Den siste linja består av nøsta funksjonar (tenk på det som ein "lauk", slik me har nemnt tidlegare). Metoden random.choice tek inn lista namn som argument, og returnerer eit tilfeldig element. Dette elementet blir argumentet til display.scroll.

checkPrøv sjølv

Tilfeldige tal

Tilfeldige tal er veldig nyttige og er vanlege i spel. Veit du om andre plassar me brukar terningar?

MicroPython kjem ferdig utrusta med ei rekkje nyttige metodar for å lage tilfeldige tal. Her ser du korleis du kan lage ein enkel terning:

from microbit import *
import random

display.show(str(random.randint(1, 6)))

Kvar gong me startar micro:bit-en på nytt, så viser displayet eit tal mellom 1 og 6. Du har begynt å bli kjent med omgrepet nøsting, så det er viktig å hugse på at random.randint returnerer eit heiltal mellom to argument, inkludert endepunkta. Argumentet heiter ranint, ei forkorting for random integer, og integer tyder heiltal. Merk at sidan display.show forventar tekst så må me bruke str-funksjonen til å gjere om talverdien til ein tekst (til dømes å endre 6 til "6").

Viss du veit at du alltid vil ha eit tal mellom 0 og N, så kan me bruke random.randrange-metoden. Den tek inn eit tal N, og returnerer eit tilfeldig tal opp til, men ikkje inkludert verdien til argumentet N. Dette er altså litt forskjellig frå random.randint.

Nokre gonger treng du eit desimaltal. Programmerarar kallar gjerne desse for flyttal, og det er mogleg å generere slike tal ved å bruke random.random-metoden. Dette returnerer ein verdi mellom 0.0 og 1.0 inkludert endepunkta. Viss du treng større tilfeldige desimaltal kan du leggje saman resultata frå random.randrange og random.random slik som dette

from microbit import *
import random

answer = random.randrange(100) + random.random()
display.scroll(str(answer))

checkPrøv sjølv

Kaostilstandar

Når datamaskina di lagar tilfeldige tal er dei ikkje heilt tilfeldige. Dei gir berre tilsynelatande tilfeldige resultat gitt ein starttilstand (gjerne kalla seed på engelsk). Tilstanden er ofte laga frå tilnærma tilfeldige tal, slik som temperaturen i datamaskina di, muserørslene dei siste minutta eller klokkeslettet. Alle desse metodane kan kombinerast.

Nokre gonger vil du ha tilfeldig oppførsel som gjentek seg, ei kjelde av tilfeldigheit som er reproduserbar. Det er som å seie at du treng dei same fem tilfeldige verdiane kvar gong du kastar ein terning.

Det er heldigvis enkelt når me programmerer, sidan me kan setje starttilstanden direkte i MicroPython. Gitt ein fast starttilstand, så vil den generere dei same tilfeldige tala kvar gong. Starttilstanden set me med random.seed og eit positivt heiltal. Denne versjonen av terningprogrammet vil alltid produsere dei same resultata.

from microbit import *
import random

random.seed(1337)
while True:
    if button_a.was_pressed():
        display.show(str(random.randint(1, 6)))

checkLitt juks

  • Python kjenner rørslene up, down, left, right, face up, face down, freefall, 3g, 6g, 8g og shake viss du brukar funksjonen accelerometer.is_gesture("rørsle").

Neste oppgåve i samlinga er Python: Rotasjon og fall. Klikk vidare for å halde fram gjennom samlinga.

Forbedre denne siden

Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!