Vad kommer vi att göra i denna lektion?
I denna lektion kommer vi att titta vidare på hur vi kan göra olika slumpvis utvalda generatorer som skapar t.ex. siffror, genererar ett födelsedatum och mer. Vi kommer att skapa tre olika generatorer steg-för-steg med hjälp av våra kunskaper inom Python.
Skapa en generator för födelsedatum:
Först ska vi skapa en enkel generator som genererar ett slumpvist födelsedatum. Börja med att skapa en ny fil i Python. När du gjort detta måste vi först börja med att skapa en variabel där det nuvarande året sparas, så att Python genererar rätt år och funkar när årsskiften etc. sker. Till detta använder vi modulen "datetime":
Denna kod importerar modulen "datetime", en inbyggd Python-modul:
Nu kan via använda den inbyggda funktionen "datetime.datetime.now()" som kan visa massa saker som t.ex. tid i sekunder, datum, år etc. Vi kan skapa en variabel och lägga till ".year" i slutet av funktionen för att spara året i en variabel. Då skulle vår kod kunna se ut så här:
Denna kod sparar det aktuella året i en variabel:
Nu kan vi börja med själva logiken, men eftersom generatorn är slumpvis måste vi lägga till detta direkt efter "import datetime":
Lägg till denna kod för att importera modulen "random" till ditt program:
Okej, så när det är klart kan vi börja med logiken. Vad vi vill göra är:
Generera en månad - mellan 1 och 12
Generera ett år - mellan ett valfritt år (t.ex. 1920) och nuvarande år som sparats i variabeln year.
Generera ett datum - och ändra det om månaden som genereras inte skulle ha t.ex. 31 dagar.
Därför skapar vi tre variabler och låter funktionen random.randint() generera dessa tal:
Generera en månad - mellan 1 och 12
Generera ett år - mellan ett valfritt år (t.ex. 1920) och nuvarande år som sparats i variabeln year.
Generera ett datum - och ändra det om månaden som genereras inte skulle ha t.ex. 31 dagar.
Därför skapar vi tre variabler och låter funktionen random.randint() generera dessa tal:
Generera ett år, datum samt månad med denna kod:
Men, som du säkert vet så har inte alla månader 31 dagar, så om du kollar på variabeln "genereratdatum" så vet du att något måste ändras. Vi kan därför använda oss av if och elif-loopar för att kolla om två saker stämmer - om månaden har mindre än 31 dagar och om månaden som genererats är någon sådan månad. Dessa månader har mindre än 31 dagar:
Februari (28 eller 29 dagar beroende på om året är skottår eller inte)
April (30 dagar)
September (30 dagar)
November (30 dagar)
Vi kommer inte att räkna ut om året är ett skottår eller inte, men vi kommer att skriva koden så här för varje månad som har mindre än 30 dagar:
Februari (28 eller 29 dagar beroende på om året är skottår eller inte)
April (30 dagar)
September (30 dagar)
November (30 dagar)
Vi kommer inte att räkna ut om året är ett skottår eller inte, men vi kommer att skriva koden så här för varje månad som har mindre än 30 dagar:
Kod för att detektera månader med mindre än 31 dagar:
Sedan kan vi bara använda oss av "elif" för att köra samma kod för övriga månader med 30 dagar:
Kod för att detektera alla månader med mindre än 30 dagar:
Du kanske har märkt att februari inte finns med i listan här ovanför. Det är eftersom att februari har 28 dagar (förutom skottår, men vi kommer att utgå från att februari har 28 dagar). Vi måste därför ändra variabeln "genereratdatum" om den är större än 28 och månaden är genererad är februari. Det gör vi så här:
Denna kod ändrar datumet till ett korrekt datum om månaden är febrauri:
Nu vore vi alltså ha denna kod:
Detta borde vara din kod hittills:
Om du tycker att det är svårt att hitta i din kod så kan du lägga till mellanrum, som stycken (dock måste detta utföras korrekt), men du kan också skriva små "förklaringar" som inte gör något annat än att visas i kodredigeraren om du använder dig av hashtags på detta sätt, till exempel:
Detta är ett exempel på hur du kan organisera din kod med förklaringar:
Och nu behöver vi faktiskt bara skriva ut resultatet med hjälp print():
Denna kod skriver ut resultatet av generatorn:
(du kan behöva scrolla inuti boxen med kod för att skriva ut resultatet här ovanför.)
Det enda som generatorn inte gör är att den fortfarande kan generera datum länge fram det nuvarande året, men annars fungerar den perfekt. Du kan utveckla och förbättra generatorn så mycket du vill.
Skapa en generator för slumpmässig färg:
Denna generator ska generera en slumpvis färgkod. Du kanske vet att det finns något som kallas "RGB"? Det är ett slags sätt att mäta färger. Färgen anges då i ett speciellt format, en så kallad färgkod. Vi kommer att generera en "RGB"-färgkod, som består av tre variabler - R, G och B som står för hur mycket rött, grönt och blått det finns i färgen. De variablerna sträcker sig från 0 - 255, vilket betyder att vi måste börja med att importera modulen "Random" för att kunna generera dessa variabler.
Denna kod importerar Pythons inbyggda modul "Random":
Nu måste vi skapa alla RGB-variabler. Därför kan vi använda funktionen "random.randint" och generera ett tal mellan 0 till 255 i tre variabler: R, G och B. Då kommer en giltig RGB-kod att genereras. Vi skapar och genererar de tre variablerna på detta sätt:
Denna kod genererar tre variabler: R, G och B där varje variabel har ett slumpmässigt värde mellan 0 och 255:
Och nu är det inte så mycket svårare än att skriva ut resultatet:
Skriv ut resultatet av generatorn:
Men, vi kanske vill rita färgen också? Modulen "turtle" har en sådan inbyggd funktion. Vi måste dock först ändra "color-mode" på turtle till RGB genom att skriva detta:
Ändra "turtles" färgläge till RGB samt importera modulen "turtle":
Nu när vi har gjort detta kan vi ändra färgen på "turtles" penna och även ändra bredden på pennan så att den fyller hela fönstret den ritar i (därför behöver det värdet vara stort). Dessutom måste turtle gå framåt lite för att rita färgen. Här är koden som gör detta:
Denna kod ändrar färgen och bredden på "turtles" penna sant flyttar fram "turtle":
"R,G.B" står för de slumpmässiga färgerna som genererades samt sparades i variablerna ovan.
Kör du koden nu så fungerar det, men för att fönstret "turtle" öppnas i ska vara öppet så måste du skriva denna kod:
Gör så att "turte"-fönstret stannar kvar på skärmen:
Nu borde du få detta resultat när du kör koden:
Resultatet blir alltså att en färg genereras och ett turtle-fönster öppnas. Resultatet printas även ut. Nu är vi klar med denna generator, men såklart så kan du bygga vidare på den om du vill.
Skapa en generator för slumpmässigt lösenord:
Nu ska vi skapa en generator för att generera slumpmässiga lösenord. Såklart så måste vi börja med att importera modulen "random" för att använda den i programmet. Skriv "import random" för detta.
Nu ska vi generera ett lösenord bestående av tre slumpmässigt utvalda ord, så det blir enkelt att komma ihåg. Därför börja med att skapa tre olika listor med en massa slumpvist utvalda ord:
Nu ska vi generera ett lösenord bestående av tre slumpmässigt utvalda ord, så det blir enkelt att komma ihåg. Därför börja med att skapa tre olika listor med en massa slumpvist utvalda ord:
Denna kod skapar tre listor med ord:
För att skapa lösenordet ska vi använda random.randint för att plocka ut ett slumpmässigt ord från varje lista. Detta kan vi sedan spara i en variabel som skrivs ut. Tänk på att listor alltid startar på 0. En kod som skapar lösenordet skulle kunna se ut så här:
Denna kod skapar själva lösenordet:
Du kan behöva scrolla i rutan som visar koden här ovanför för att se hela koden.
Vi kanske också vill lägga till lite siffror i lösenordet? I så fall lägger vi bara till "+ random.randint(nummer,nummer)" i slutet av koden här ovanför. Nu är det bara att skriva ut lösenordet på detta sätt:
Denna kod skriver ut lösenordet som har genererats:
Så där, nu har du lärt dig att skapa tre stycken, fullt fungerande generatorer inom Python och inom Programmering! Du kan såklart bygga vidare på dessa generatorer och skapa dina egna generatorer!