[{"data":1,"prerenderedAt":232},["ShallowReactive",2],{"course-python":3},["Reactive",4],{"longDescription":5,"id":6,"plan":7,"exclusiveUserId":8,"promoVideo":8,"seoTitle":8,"duration":9,"isPaid":10,"modules":11,"description":221,"level":222,"category":223,"focusKeyword":8,"color":224,"lessonsCount":131,"emoji":225,"language":226,"slug":227,"title":228,"tags":8,"thumbnail":229,"price":230,"seoDescription":8,"status":231},"Python Scripting & Automation är en praktiskt inriktad kurs som ger deltagarna kunskaper i att använda Python för att automatisera repetitiva arbetsuppgifter, effektivisera processer och utveckla skript som sparar tid och minskar risken för manuella fel. Kursen passar både nybörjare och personer med grundläggande programmeringskunskaper som vill använda Python i sitt dagliga arbete.\n\nUnder kursen introduceras Python-programmeringens grunder, inklusive variabler, datatyper, villkor, loopar, funktioner och moduler. Deltagarna lär sig därefter att skriva skript för att automatisera filhantering, organisera mappar och filer, läsa och skriva data i olika filformat såsom CSV, JSON och Excel samt bearbeta stora datamängder.\n\nKursen behandlar även hur Python kan användas för att automatisera administrativa uppgifter, hämta och bearbeta information från webbtjänster via API:er, skicka e-post automatiskt, skapa schemalagda jobb och utveckla enkla verktyg som effektiviserar arbetsflöden. Deltagarna får också en introduktion till vanliga Python-bibliotek för automation, exempelvis os, pathlib, shutil, requests, pandas och openpyxl.\n\nStor vikt läggs vid praktiska övningar och verklighetsnära projekt där deltagarna får utveckla egna automationslösningar. Kursen ger även kunskap om felsökning, kodstruktur, dokumentation och god programmeringspraxis för att skapa robusta och återanvändbara skript.\n\nEfter avslutad kurs kan deltagaren självständigt utveckla Python-skript som automatiserar återkommande arbetsuppgifter, hanterar data från olika källor och bidrar till effektivare arbetsprocesser inom exempelvis administration, IT, dataanalys och verksamhetsutveckling.\n\nMål efter avslutad kurs\n\nEfter kursen ska deltagaren kunna:\n\n- Förstå och använda Python-programmeringens grundläggande koncept.\n- Skriva skript för att automatisera repetitiva arbetsuppgifter.\n- Hantera och bearbeta filer och mappar med Python.\n- Läsa, skriva och bearbeta data\n- Använda Python-bibliotek för automation och datahantering.\n- Hämta information från webbtjänster och API:er.\n- Automatisera e-post, rapporter och andra administrativa processer.\n- Strukturera, dokumentera och felsöka Python-kod enligt god praxis.\n- Utveckla enklare automationslösningar anpassade efter verksamhetens behov.","c1784162462544","premium","","1 timme",true,[12,46,73,123,158,192,210],{"lessons":13,"id":44,"title":45},[14,23,31,37],{"id":15,"lockType":16,"exemptUserIds":17,"title":18,"type":19,"content":20,"duration":21,"unlockDate":8,"dripDays":22,"agenda":8},"l1","open",[],"Välkommen till kursen- Intro","video","https:\u002F\u002Fyoutu.be\u002F2WuSICXWWkk","Ca 19 min",0,{"agenda":8,"dripDays":24,"unlockDate":8,"content":25,"type":26,"title":27,"lockType":28,"exemptUserIds":29,"id":30},7,"Python – Datatyper\nInledning\n\nDatatyper är en av de viktigaste grunderna i programmering. En datatyp beskriver vilken typ av information en variabel innehåller och avgör vilka operationer som kan utföras på den. I Python behöver programmeraren inte själv ange datatypen när en variabel skapas. Språket identifierar automatiskt datatypen utifrån det värde som tilldelas variabeln. Detta gör Python enkelt att använda och passar både nybörjare och erfarna programmerare.\n\nVad är en datatyp?\n\nEn datatyp anger vilken sorts data som lagras i en variabel. Exempelvis kan en variabel innehålla ett heltal, ett decimaltal, text eller ett sant\u002Ffalskt-värde.\n\nExempel:\n\nnamn = \"Anna\"\nålder = 25\nlängd = 1.72\nstudent = True\n\nI exemplet ovan har variablerna följande datatyper:\n\nnamn → str (sträng)\nålder → int (heltal)\nlängd → float (flyttal)\nstudent → bool (boolesk datatyp)\nVanliga datatyper i Python\n1. Heltal (int)\n\nDatatypen int används för hela tal utan decimaler. Den kan innehålla positiva tal, negativa tal och noll.\n\nExempel:\n\nantal = 15\ntemperatur = -8\n\nVanliga värden:\n\n5\n0\n-100\n2500\n\nAnvändningsområden:\n\nAntal personer\nÅlder\nPoäng\nAntal produkter\n2. Flyttal (float)\n\nDatatypen float används för tal med decimaler.\n\nExempel:\n\npris = 199.95\npi = 3.14159\n\nVanliga värden:\n\n2.5\n10.0\n-7.85\n\nAnvändningsområden:\n\nPris\nTemperatur\nVikt\nLängd\nMatematiska beräkningar\n3. Sträng (str)\n\nEn sträng används för att lagra text. Text skrivs inom enkla eller dubbla citationstecken.\n\nExempel:\n\nnamn = \"Emma\"\nstad = \"Stockholm\"\n\ntext = \"Jag lär mig Python.\"\n\nVanliga användningsområden:\n\nNamn\nAdresser\nMeddelanden\nE-postadresser\n4. Boolesk datatyp (bool)\n\nEn boolesk variabel kan endast innehålla två värden:\n\nTrue (Sant)\nFalse (Falskt)\n\nExempel:\n\ninloggad = True\nadmin = False\n\nBool används ofta tillsammans med villkor.\n\nif inloggad:\n    print(\"Välkommen!\")\n\nVanliga användningsområden:\n\nÄr användaren inloggad?\nÄr produkten slut?\nHar eleven klarat provet?\n5. Lista (list)\n\nEn lista används för att lagra flera värden i en och samma variabel.\n\nExempel:\n\nfrukter = [\"Äpple\", \"Banan\", \"Päron\"]\n\nLägga till ett nytt värde:\n\nfrukter.append(\"Apelsin\")\n\nAnvändningsområden:\n\nNamnlistor\nProdukter\nTelefonnummer\nBetyg\n6. Tuple (tuple)\n\nEn tuple liknar en lista men kan inte ändras efter att den skapats.\n\nExempel:\n\nkoordinat = (100, 250)\n\nAnvändningsområden:\n\nGPS-koordinater\nDatum\nFasta inställningar\n7. Mängd (set)\n\nEn set innehåller endast unika värden.\n\nExempel:\n\nfärger = {\"Röd\", \"Blå\", \"Grön\"}\n\nOm samma värde läggs till flera gånger:\n\nnummer = {1, 2, 2, 3}\n\nprint(nummer)\n\nResultat:\n\n{1, 2, 3}\n\nAnvändningsområden:\n\nTa bort dubbletter\nJämföra samlingar\nHantera unika värden\n8. Dictionary (dict)\n\nEn dictionary lagrar information som nyckel–värde-par.\n\nExempel:\n\nperson = {\n    \"namn\": \"Ali\",\n    \"ålder\": 22,\n    \"stad\": \"Göteborg\"\n}\n\nHämta ett värde:\n\nprint(person[\"namn\"])\n\nResultat:\n\nAli\n\nAnvändningsområden:\n\nPersonuppgifter\nProduktinformation\nRegister\nInställningar\nKontrollera datatyp\n\nPython har funktionen type() som visar vilken datatyp en variabel har.\n\nExempel:\n\nx = 10\n\nprint(type(x))\n\nResultat:\n\n\u003Cclass 'int'>\n\nFler exempel:\n\nprint(type(5.5))\nprint(type(\"Hej\"))\nprint(type(True))\n\nResultat:\n\n\u003Cclass 'float'>\n\u003Cclass 'str'>\n\u003Cclass 'bool'>\nTypkonvertering\n\nIbland behöver man ändra en datatyp till en annan. Detta kallas typkonvertering.\n\nText till heltal\ntal = \"25\"\nnummer = int(tal)\nText till flyttal\npris = \"19.95\"\nbelopp = float(pris)\nTal till text\nålder = 30\ntext = str(ålder)\nTill bool\nprint(bool(1))\nprint(bool(0))\n\nResultat:\n\nTrue\nFalse\n\nVanliga funktioner:\n\nint() → Heltal\nfloat() → Flyttal\nstr() → Sträng\nbool() → Boolesk datatyp\nExempelprogram\nnamn = \"Sara\"\nålder = 20\nlängd = 1.68\nstudent = True\n\nprint(\"Namn:\", namn)\nprint(\"Ålder:\", ålder)\nprint(\"Längd:\", längd)\nprint(\"Student:\", student)\n\nprint(type(namn))\nprint(type(ålder))\nprint(type(längd))\nprint(type(student))\n\nResultat:\n\nNamn: Sara\nÅlder: 20\nLängd: 1.68\nStudent: True\n\n\u003Cclass 'str'>\n\u003Cclass 'int'>\n\u003Cclass 'float'>\n\u003Cclass 'bool'>","text","Python - Datatyper","drip",[],"l2",{"agenda":8,"dripDays":24,"unlockDate":8,"duration":32,"content":33,"type":19,"title":34,"exemptUserIds":35,"lockType":28,"id":36},"Ca 31 min","https:\u002F\u002Fyoutu.be\u002F7z_jlnARmHA","Python - Datatyper, Variabler",[],"l1784212047077",{"type":38,"content":39,"duration":40,"id":41,"exemptUserIds":42,"lockType":28,"title":43,"unlockDate":8,"dripDays":24,"agenda":8},"quiz","quiz-1784213227626","70 Min","l1784213137715",[],"Python - Datayper och Variabler","m1","Introduktion, Datatyper, Variabler",{"lessons":47,"id":72,"title":51},[48,54,61,67],{"unlockDate":8,"agenda":8,"dripDays":49,"id":50,"title":51,"exemptUserIds":52,"lockType":28,"content":53,"type":26},14,"l1784216072652","If satser, Arrays, Object  och kommunicera med datorn",[],"Arrays, Object och IF-satser\nIntroduktion\nI tidigare lektioner har du lärt dig grunderna i programmering, som variabler och datatyper. I den här lektionen kommer vi att ta nästa steg genom att lära oss hur vi kan lagra flera värden, strukturera information och skapa logik i våra program.\nVi kommer att arbeta med tre viktiga delar:\nArrays – för att lagra flera värden i en lista.\nObject – för att samla och organisera information.\nIF-satser – för att låta programmet fatta beslut.\nDessa koncept används i nästan alla moderna applikationer och är en viktig grund för vidare programmering.\n1. Arrays – lagra flera värden\nEn array är en lista där vi kan spara flera värden i en och samma variabel.\nIstället för att skapa flera separata variabler:\nlet frukt1 = \"Äpple\";\nlet frukt2 = \"Banan\";\nlet frukt3 = \"Apelsin\";\nkan vi använda en array:\nlet frukter = [\"Äpple\", \"Banan\", \"Apelsin\"];\nNu ligger alla värden samlade i en lista.\nHämta värden från en array\nVarje värde i en array har en plats (index).\nExempel:\nlet färger = [\"Röd\", \"Blå\", \"Grön\"];\n\nconsole.log(färger[0]);\nResultat:\nRöd\nIndex börjar alltid från 0.\nIndex\tVärde\n0\tRöd\n1\tBlå\n2\tGrön\nÄndra värden i en array\nVi kan ändra ett värde genom att använda index:\nlet djur = [\"Hund\", \"Katt\", \"Fågel\"];\n\ndjur[1] = \"Häst\";\n\nconsole.log(djur);\nResultat:\n[\"Hund\", \"Häst\", \"Fågel\"]\nLägga till värden\nMed push() kan vi lägga till nya värden:\nlet spel = [\"Minecraft\", \"FIFA\"];\n\nspel.push(\"Fortnite\");\n\nconsole.log(spel);\nResultat:\n[\"Minecraft\", \"FIFA\", \"Fortnite\"]\n2. Object – strukturera information\nEtt objekt används för att lagra information om något.\nExempel: En person.\nlet person = {\n    namn: \"Anna\",\n    ålder: 25,\n    stad: \"Stockholm\"\n};\nHär har objektet tre egenskaper:\nnamn\nålder\nstad\nHämta information från ett objekt\nVi använder punktnotation:\nconsole.log(person.namn);\nResultat:\nAnna\nEller:\nconsole.log(person.ålder);\nResultat:\n25\nÄndra information i ett objekt\nVi kan uppdatera värden:\nperson.stad = \"Göteborg\";\n\nconsole.log(person.stad);\nResultat:\nGöteborg\n3. IF-satser – skapa beslut\nEn if-sats gör att programmet kan kontrollera ett villkor.\nExempel:\nlet ålder = 18;\n\nif (ålder >= 18) {\n    console.log(\"Du får gå in\");\n}\nOm villkoret är sant körs koden.\nIF och ELSE\nVi kan skapa ett alternativ om villkoret inte stämmer.\nlet ålder = 15;\n\nif (ålder >= 18) {\n    console.log(\"Du får gå in\");\n} else {\n    console.log(\"Du är för ung\");\n}\nResultat:\nDu är för ung\nELSE IF\nNär vi har flera olika alternativ använder vi else if.\nlet poäng = 85;\n\nif (poäng >= 90) {\n    console.log(\"Betyg A\");\n} else if (poäng >= 70) {\n    console.log(\"Betyg B\");\n} else {\n    console.log(\"Godkänt\");\n}\nJämförelseoperatorer\nOperator\tBetydelse\n===\tÄr lika med\n!==\tÄr inte lika med\n>\tStörre än\n\u003C\tMindre än\n>=\tStörre eller lika med\n\u003C=\tMindre eller lika med\nExempel:\nlet temperatur = 25;\n\nif (temperatur > 20) {\n    console.log(\"Det är varmt\");\n}\nLogiska operatorer\nVi kan kombinera flera villkor.\nAND (&&)\nAlla villkor måste vara sanna.\nlet ålder = 20;\nlet medlemskap = true;\n\nif (ålder >= 18 && medlemskap === true) {\n    console.log(\"Välkommen\");\n}\nOR (||)\nEtt av villkoren måste vara sant.\nlet dag = \"lördag\";\n\nif (dag === \"lördag\" || dag === \"söndag\") {\n    console.log(\"Helg\");\n}\nKombinera Array, Object och IF\nI riktiga applikationer använder vi ofta dessa tillsammans.\nExempel:\nlet användare = {\n    namn: \"Alex\",\n    ålder: 22,\n    premium: true\n};\n\nif (användare.premium === true) {\n    console.log(\"Premium användare\");\n} else {\n    console.log(\"Gratis användare\");\n}\n",{"unlockDate":8,"dripDays":49,"agenda":55,"id":56,"exemptUserIds":57,"lockType":28,"title":58,"type":19,"content":59,"duration":60},"I den här lektionen fortsätter vi att bygga vidare på grunderna i JavaScript. Du kommer att lära dig hur du lagrar flera värden i en array, hur du organiserar data med objekt och hur du använder if-satser för att fatta beslut i din kod.\nDet här kommer du att lära dig\nVad en array är och hur den används.\n- Skapa och läsa värden från en array.\n- Lägga till och ändra värden i en array.\n- Vad ett objekt är och hur du lagrar information med nycklar och värden.\n- Läsa egenskaper i ett objekt.\n-Använda if för att fatta beslut.\n-Lösa praktiska övningar med arrayer, objekt och if-satser.","l1784215751165",[],"Arrays, Object och IF satser","https:\u002F\u002Fyoutu.be\u002Fl-rUZtG4smk","Ca 56 Min",{"title":62,"lockType":28,"exemptUserIds":63,"id":64,"duration":65,"content":66,"type":19,"agenda":8,"dripDays":49,"unlockDate":8},"Mer om IF satser",[],"l1784216376637","Ca 26 Min","https:\u002F\u002Fyoutu.be\u002Fc7Uiz-Fwfwo",{"unlockDate":8,"agenda":8,"dripDays":49,"id":68,"title":51,"lockType":28,"exemptUserIds":69,"content":70,"type":38,"duration":71},"l1784399735807",[],"quiz-1784297541603","70 min","m1784215460257",{"lessons":74,"id":122,"title":118},[75,81,88,95,102,109,116],{"type":26,"content":76,"id":77,"lockType":28,"exemptUserIds":78,"title":79,"unlockDate":8,"dripDays":80,"agenda":8},"For-loopar – Upprepa kod\nEn for-loop används när vi vill gå igenom flera värden eller upprepa en kod flera gånger.\nExempel:\nnames = [\"Anna\", \"Peter\", \"Sara\"]\n\nfor name in names:\n    print(name)\nResultat:\nAnna\nPeter\nSara\nAnvända range()\nrange() används för att skapa en serie av nummer.\nExempel:\nfor number in range(5):\n    print(number)\nResultat:\n0\n1\n2\n3\n4\n2. While-loopar – Upprepa så länge ett villkor gäller\nEn while-loop kör kod så länge ett villkor är sant.\nExempel:\ncounter = 0\n\nwhile counter \u003C 5:\n    print(counter)\n    counter += 1\nResultat:\n0\n1\n2\n3\n4\nViktigt:\nEn while-loop behöver ett stoppvillkor\nGlöm inte att ändra värdet i loopen för att undvika oändliga loopar\n3. Listor (Arrays) i Python\nListor används för att lagra flera värden i en och samma variabel.\nExempel:\ncars = [\"BMW\", \"Volvo\", \"Tesla\"]\n\nprint(cars)\nResultat:\n[\"BMW\", \"Volvo\", \"Tesla\"]\nEn lista kan innehålla olika datatyper:\ndata = [\"Chris\", 30, True]\n4. Hämta värden från listor\nVarje värde i en lista har en position som kallas index.\nExempel:\nfruits = [\"Apple\", \"Banana\", \"Orange\"]\n\nprint(fruits[0])\nResultat:\nApple\nKom ihåg:\nPython börjar räkna från 0\nFörsta elementet har index 0\n5. List-metoder (Array Methods)\nPython har inbyggda metoder som gör det enklare att arbeta med listor.\nappend() – Lägg till ett värde\ncars = [\"BMW\", \"Volvo\"]\n\ncars.append(\"Tesla\")\n\nprint(cars)\nResultat:\n[\"BMW\", \"Volvo\", \"Tesla\"]\nremove() – Ta bort ett värde\ncars.remove(\"BMW\")\n\nprint(cars)\npop() – Ta bort sista värdet\ncars.pop()\nlen() – Räkna antal värden\nprint(len(cars))\nResultat:\n2\nsort() – Sortera en lista\nnumbers = [5,2,8,1]\n\nnumbers.sort()\n\nprint(numbers)\nResultat:\n[1,2,5,8]\n6. Funktioner – Skapa återanvändbar kod\nFunktioner används för att samla kod som kan användas flera gånger.\nExempel:\ndef greeting():\n    print(\"Hej Python!\")\n\ngreeting()\nFunktioner med parametrar\nParametrar gör att vi kan skicka information till en funktion.\nExempel:\ndef greeting(name):\n    print(\"Hej \" + name)\n\ngreeting(\"Chris\")\nResultat:\nHej Chris\nReturnera värden\nEn funktion kan returnera ett resultat.\nExempel:\ndef add(a, b):\n    return a + b\n\n\nresult = add(5,3)\n\nprint(result)\nResultat:\n8\n7. Klasser och Objekt (OOP)\nPython använder objektorienterad programmering (OOP) för att skapa större och mer organiserade program.\nEn klass fungerar som en mall för att skapa objekt.\nExempel:\nclass Person:\n\n    def __init__(self, name, age):\n        self.name = name\n        self.age = age\n\n\nperson1 = Person(\"Anna\",25)\n\nprint(person1.name)\nResultat:\nAnna\n8. Metoder i klasser\nEn metod är en funktion som finns inuti en klass.\nExempel:\nclass Car:\n\n    def drive(self):\n        print(\"Bilen kör\")\n\n\nmy_car = Car()\n\nmy_car.drive()\nResultat:\nBilen kör\n","l1784216616022",[]," Loopar, Listor, Funktioner och Objektorienterad Programmering",21,{"agenda":82,"dripDays":80,"unlockDate":8,"title":83,"lockType":28,"exemptUserIds":84,"id":85,"duration":86,"content":87,"type":19},"Python – Lektionens agenda\n- If-satser – skapa beslut och logik i program\n- For-loopar – upprepa kod och arbeta med listor\n- While-loopar – skapa upprepningar med villkor\n- Arrays\u002FListor – lagra och hantera flera värden","For, While, If och Arrays (Listor)",[],"l1784217591852","Ca 67 Min","https:\u002F\u002Fyoutu.be\u002FFT6Q0h9icP4",{"agenda":89,"dripDays":80,"unlockDate":8,"duration":90,"content":91,"type":19,"title":92,"exemptUserIds":93,"lockType":28,"id":94},"Python – Lektionens agenda\n- Arrays\u002FListor – lagra och hantera flera värden\n- Array-metoder – använda metoder som append(), remove(), pop()\n- For-loopar – gå igenom listor och upprepa kod\n","Ca 51 Min","https:\u002F\u002Fyoutu.be\u002FkqF3OOWWa3Q","Array metoder och mer foor loops",[],"l1784217836582",{"unlockDate":8,"agenda":96,"dripDays":80,"id":97,"title":98,"exemptUserIds":99,"lockType":28,"content":100,"type":19,"duration":101},"Python – Lektionens agenda\n- Dictionary – lagra data med nyckel och värde (key-value)\n- Arbeta med Dictionary-metoder – lägga till, uppdatera och hämta information\n- Klasser – förstå objektorienterad programmering (OOP)\n- Skapa objekt – bygga egna datatyper med klasser\n\n","l1784220576330","Dictionary och klasser",[],"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=YBGbompk1o4","Ca 54 Min",{"unlockDate":8,"agenda":103,"dripDays":80,"id":104,"title":105,"exemptUserIds":106,"lockType":28,"content":107,"type":19,"duration":108},"Python – Lektionens agenda\n- Funktioner – skapa återanvändbar kod och strukturera program\n- Parametrar och return-värden – skicka information till funktioner och få tillbaka resultat\n- Klasser (OOP) – förstå objektorienterad programmering\n- Skapa egna klasser och objekt – bygga egna datatyper\n- Attribut och metoder – hantera egenskaper och funktioner i objekt\n- Konstruktorer (__init__) – skapa och initiera objekt","l1784221176889","Funktinoer och Klasser",[],"https:\u002F\u002Fyoutu.be\u002FhRcLlwPnLzc","Ca 40 Min",{"duration":110,"content":111,"type":19,"title":112,"exemptUserIds":113,"lockType":28,"id":114,"agenda":115,"dripDays":80,"unlockDate":8},"Ca 53 Min","https:\u002F\u002Fyoutu.be\u002FQiafcFsiNjs","Klasser och While loops",[],"l1784221310570","Python – Lektionens agenda\n- While-loopar – skapa upprepningar med villkor\n- Loopkontroll – hantera räknare och avsluta loopar\n- Klasser (OOP) – förstå objektorienterad programmering\n- Skapa klasser och objekt – bygga egna strukturer i Python\n- Attribut och metoder – arbeta med egenskaper och funktioner i objekt",{"id":117,"title":118,"exemptUserIds":119,"lockType":28,"content":120,"type":38,"duration":121,"unlockDate":8,"agenda":8,"dripDays":80},"l1784501735121","While loops, Dictionary, Forloops, Listor, funktioner, classer och Array metoder",[],"quiz-1784500835136","70","m1784216570890",{"title":124,"lessons":125,"id":157},"Skicka Mail, Filer och CSV filer",[126,132,139,147,153],{"type":26,"content":127,"id":128,"exemptUserIds":129,"lockType":28,"title":130,"unlockDate":8,"dripDays":131,"agenda":8},"Introduktion\nI den här lektionen lär du dig hur Python kan användas för att automatisera vanliga arbetsuppgifter. Du kommer att skapa olika program som kan läsa, skriva filer, hantera CSV-filer och skicka e-post.\n\nEfter lektionen kommer du kunna:\nLäsa och skriva textfiler\nSkapa och redigera filer med Python\nLäsa och skriva CSV-filer\nSkicka e-post med Python\nKombinera filer, CSV och e-post.\n\n1. Filhantering i Python\nLär dig hur du:\nSkapar nya filer\nLäser innehållet i en fil\nSkriver och uppdaterar filer\nStänger filer på ett säkert sätt med with open()\n\n2. Arbeta med textfiler\nDu får lära dig att:\nLäsa hela filer\nLäsa rad för rad\nSkriva ny text till en fil\nLägga till information i befintliga filer\n\n3. CSV-filer\nCSV används för att lagra tabellbaserad data, exempelvis kundlistor, produkter och rapporter.\nDu kommer lära dig att:\nLäsa CSV-filer\nSkriva nya CSV-filer\nLägga till nya rader\nBearbeta data med Python\n\n4. Automatisera data\nLär dig hur du:\nHämtar information från filer\nFiltrerar data\nBearbetar stora datamängder\nSkapar automatiska rapporter\n\n5. Skicka e-post med Python\nDu kommer att lära dig:\nSkicka e-post automatiskt\nSkicka meddelanden till en eller flera mottagare\nSkapa ämnesrad och meddelandetext\nSkicka bilagor via e-post\n\n6. Kombinera CSV, filer och e-post\nBygg ett komplett automatiseringsflöde där Python:\nLäser information från en CSV-fil\nSkapar ett anpassat meddelande\nSkickar e-post automatiskt\nSparar resultat i en loggfil\n","l1784234102885",[]," Skicka Mail, Hantera Filer och CSV-filer",28,{"dripDays":131,"agenda":133,"unlockDate":8,"duration":134,"type":19,"content":135,"exemptUserIds":136,"lockType":28,"title":137,"id":138},"Lektionens agenda\n- Filhantering – skapa, läsa och skriva filer i Python\n- Textfiler – arbeta med .txt-filer och hantera innehåll\n","Ca 60 Min","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=eU99ehwrIt0",[],"Filer","l1784233930837",{"id":140,"title":141,"exemptUserIds":142,"lockType":28,"content":143,"type":19,"duration":144,"unlockDate":8,"agenda":145,"dripDays":146},"l1784234528553","CSV Filer och skicka mail",[],"https:\u002F\u002Fyoutu.be\u002FOP0ovvxHhbA","Ca 52 Min","Lektionens agenda\n- CSV-filer – läsa, skriva och uppdatera data i CSV-format\n- Bearbeta CSV-data – hämta, filtrera och hantera information\n- Skicka e-post med Python – skapa och skicka automatiserade e-postmeddelanden\n",280,{"duration":148,"content":149,"type":19,"title":150,"lockType":28,"exemptUserIds":151,"id":152,"agenda":8,"dripDays":131,"unlockDate":8},"Ca 37 Min","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=6R2-vsQIyFQ","Installera Pycharm Skicka email",[],"l1784234619004",{"content":154,"type":38,"duration":71,"id":155,"title":124,"lockType":28,"exemptUserIds":156,"unlockDate":8,"agenda":8,"dripDays":131},"quiz-1784501182422","l1784501810903",[],"m1784221447857",{"title":159,"lessons":160,"id":191},"Api:er, Scripting automation, Github & Github Actions",[161,167,174,180,187],{"type":26,"content":162,"id":163,"exemptUserIds":164,"lockType":28,"title":165,"unlockDate":8,"dripDays":166,"agenda":8},"Introduktion\nI den här lektionen kommer du att lära dig hur Python kan användas för att kommunicera med andra system, automatisera repetitiva arbetsuppgifter och skapa professionella utvecklingsflöden med GitHub och GitHub Actions. Detta är kunskaper som används dagligen av utvecklare, testautomatiserare och DevOps-ingenjörer.\n1. API:er (Application Programming Interface)\nVad är ett API?\nEtt API (Application Programming Interface) är ett sätt för två program att kommunicera med varandra.\nIstället för att en människa hämtar information från en webbplats kan ett program fråga ett annat program om data och få ett svar direkt.\nExempel\nNär du använder:\nEn väderapp\nGoogle Maps\nSpotify\nInstagram\nChatGPT\nSwish\n...hämtas information via API:er.\nHur fungerar ett API?\nEtt API fungerar ungefär som en servitör på en restaurang.\nDu gör en beställning (Request).\nServitören lämnar beställningen till köket.\nKöket lagar maten.\nServitören kommer tillbaka med maten (Response).\nPå samma sätt:\nPython-program\n      ↓\n   API Request\n      ↓\n     Server\n      ↓\n  API Response\n      ↓\n Python-program\nHTTP-metoder\nNär vi kommunicerar med ett API används olika HTTP-metoder.\nGET\nHämtar information.\nExempel:\nHämta användare\nHämta produkter\nHämta väderinformation\nPOST\nSkapar ny information.\nExempel:\nRegistrera användare\nSkicka ett formulär\nSkapa ett inlägg\nPUT\nUppdaterar befintlig information.\nExempel:\nÄndra namn\nUppdatera en profil\nRedigera en produkt\nDELETE\nTar bort information.\nExempel:\nTa bort en användare\nRadera ett konto\nTa bort en produkt\nJSON\nDe flesta API:er skickar tillbaka data i JSON-format.\nExempel:\n{\n  \"name\": \"Chris\",\n  \"age\": 30,\n  \"city\": \"Stockholm\"\n}\nPython kan enkelt läsa JSON och omvandla det till ett dictionary.\nPython Requests\nBiblioteket requests används för att kommunicera med API:er.\nVanliga funktioner:\nrequests.get()\nrequests.post()\nrequests.put()\nrequests.delete()\n2. Scripting Automation\nVad är ett skript?\nEtt skript är ett program som automatiserar en uppgift.\nIstället för att göra samma arbete manuellt kan Python göra det åt dig.\nExempel på automatisering\nPython kan automatiskt:\nByta namn på hundratals filer\nSkicka e-post\nLäsa Excel- och CSV-filer\nSkapa rapporter\nHämta data från internet\nSäkerhetskopiera filer\nTesta webbplatser\nAutomatisera webbläsare med Selenium eller Playwright\nVarför automatisera?\nFördelar:\nSparar tid\nMinskar mänskliga fel\nSnabbare arbetsflöden\nKan köras dygnet runt\nSamma resultat varje gång\n3. Git\nVad är Git?\nGit är ett versionshanteringssystem.\nDet håller reda på alla ändringar i ett projekt så att du kan:\nSe historik\nÅngra misstag\nSamarbeta med andra utvecklare\nArbeta i olika versioner av projektet\nVanliga Git-kommandon\ngit init\nSkapar ett nytt Git-projekt.\ngit add\nLägger till filer inför nästa sparning.\ngit commit\nSparar en version av projektet.\ngit status\nVisar vilka filer som har ändrats.\ngit push\nSkickar projektet till GitHub.\ngit pull\nHämtar de senaste ändringarna från GitHub.\n4. GitHub\nVad är GitHub?\nGitHub är en molntjänst där Git-projekt lagras online.\nDet används av miljontals utvecklare för att:\nLagra kod\nSamarbeta\nDela projekt\nHantera buggar\nGranska kod\nAutomatisera arbetsflöden\nRepository\nEtt Repository (Repo) är en mapp som innehåller hela projektet.\nI ett repository finns exempelvis:\nPython-filer\nBilder\nDokumentation\nREADME.md\nTester\nBranches\nEn Branch är en separat arbetsyta.\nExempel:\nmain\n\nfeature-login\n\nfeature-payment\n\nbugfix-navbar\nDet gör att flera utvecklare kan arbeta samtidigt utan att påverka huvudprojektet.\nPull Request\nEn Pull Request används när du vill slå ihop dina ändringar med huvudprojektet.\nInnan ändringarna godkänns kan andra utvecklare:\nGranska koden\nKommentera\nTesta lösningen\nGodkänna eller begära ändringar\n5. GitHub Actions\nVad är GitHub Actions?\nGitHub Actions är ett verktyg för att automatisera arbetsflöden direkt i GitHub.\nIstället för att köra tester manuellt kan GitHub göra det automatiskt.\nVad kan GitHub Actions göra?\nKöra Python-program\nKöra tester automatiskt\nBygga projekt\nPublicera webbplatser\nSkapa appar\nDistribuera till servrar\nSkicka notifieringar\nVad är ett Workflow?\nEtt Workflow är en serie automatiska steg.\nExempel:\nDu gör en commit\n        ↓\nGitHub upptäcker ändringen\n        ↓\nProjektet byggs\n        ↓\nTester körs\n        ↓\nResultatet visas\nCI\u002FCD\nContinuous Integration (CI)\nVarje gång ny kod skickas till GitHub:\nProjektet byggs\nTester körs\nFel upptäcks tidigt\nContinuous Deployment (CD)\nOm allt fungerar kan GitHub automatiskt:\nPublicera webbplatsen\nUppdatera servern\nDistribuera den senaste versionen av applikationen","l1784295770986",[],"API:er, Scripting Automation, GitHub & GitHub Actions",35,{"lockType":28,"exemptUserIds":168,"title":169,"id":170,"duration":144,"type":19,"content":171,"dripDays":172,"agenda":173,"unlockDate":8},[],"Api:er","l1784235304020","https:\u002F\u002Fyoutu.be\u002FKxNZopSWuGE",350,"Lektionens agenda\n- Vad är ett API? – förstå hur system kommunicerar med varandra\n- Några HTTP-metoder \n- JSON-data – läsa och hantera API-svar i Python\n- API-anrop med requests – hämta och skicka data från Python\n- Praktisk kodövning – ansluta till ett API och visa data i ett Python-program",{"unlockDate":8,"dripDays":166,"agenda":175,"type":19,"content":176,"duration":110,"id":177,"lockType":28,"exemptUserIds":178,"title":179},"Lektionens agenda\n- Vad är Automation Scripting? – förstå grunderna i automatisering med Python\n- Automatisera arbetsuppgifter – skapa skript för repetitiva uppgifter\n- Praktisk kodövning – bygga ett automatiserat Python-skript som sparar tid och effektiviserar ett arbetsflöde","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7O-2B3Ll3kU","l1784296122340",[],"Automation Scripting",{"dripDays":166,"agenda":181,"unlockDate":8,"duration":182,"type":19,"content":183,"lockType":28,"exemptUserIds":184,"title":185,"id":186},"Lektionens agenda\n- Introduktion till Git & GitHub – förstå versionshantering och samarbete\n- Skapa och hantera ett GitHub-repository – ladda upp och organisera projekt\n- Vanliga Git-kommandon – git add, git commit, git push och git pull\n- GitHub Actions – introduktion till automatiserade arbetsflöden (CI\u002FCD)\n- Demonstration – se hur ett GitHub Actions-workflow fungerar i praktiken (detta funkade inte men kolla pa videon viktigt)\n","ca 68 Min","https:\u002F\u002Fyoutu.be\u002FkKt1h4VxbFA",[],"Github & Github Actions( Nästa projekt videon kommer Github Actions funka)","l1784296239331",{"title":159,"lockType":28,"exemptUserIds":188,"id":189,"duration":71,"content":190,"type":38,"agenda":8,"dripDays":166,"unlockDate":8},[],"l1784501852521","quiz-1784501378274","m1784235084437",{"id":193,"lessons":194,"title":209},"m1784296789025",[195,203],{"unlockDate":8,"dripDays":196,"agenda":197,"type":19,"content":198,"duration":199,"id":200,"exemptUserIds":201,"lockType":28,"title":202},42,"Lektionens agenda\n- Bygga ett projekt med Polisens API – hämta och visa händelser i realtid\n- Arbeta med API-data – läsa, filtrera och presentera information\n- Publicera projektet på GitHub – versionshantering och samarbete\n- GitHub Actions – se hur automatiserade arbetsflöden fungerar\n- Med mera","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=jw1VtvNmrPM","Ca 93 Min","l1784296855075",[],"Projekt Videon: Polisens API, Github actions med mera",{"unlockDate":8,"dripDays":196,"agenda":8,"id":204,"exemptUserIds":205,"lockType":28,"title":206,"type":38,"content":207,"duration":208},"l1784501888785",[],"Python - Slutprov","quiz-1784501594388","120 min","Låt oss skapa vårt stora projekt",{"lessons":211,"id":219,"title":220},[212],{"content":213,"type":214,"id":215,"title":216,"exemptUserIds":217,"lockType":28,"unlockDate":8,"agenda":8,"dripDays":218},"Uppgift\nI denna certifikatuppgift ska du bygga en Python-applikation som använder Polisens öppna API för att övervaka händelser i Sverige. Användaren ska kunna välja ett eller flera geografiska områden och få ett automatiskt e-postmeddelande när en ny händelse inträffar i något av de valda områdena.\nProjektet ska visa att du kan arbeta med API:er, automatisering, filhantering och e-postutskick.\nKrav\nDin applikation ska kunna:\nHämta data från Polisens API.\nLåta användaren välja minst två olika områden att bevaka.\nFiltrera händelser utifrån de valda områdena.\nKontrollera om nya händelser har tillkommit.\nSkicka ett automatiskt e-postmeddelande när en ny händelse upptäcks.\nUndvika att skicka samma notis flera gånger genom att spara tidigare händelser.\nVisa relevant information om händelsen, exempelvis:\nHändelsetyp\nPlats\nDatum och tid\nBeskrivning\nLänk till händelsen (om tillgänglig)\nTekniska krav\nProjektet ska innehålla:\nPython\nPolisens API\nrequests\nJSON-hantering\nFilhantering eller datalagring (JSON eller CSV)\nAutomatisk e-post med smtplib eller liknande\nTydlig och strukturerad kod med funktioner\nREADME.md med installations- och användarinstruktioner\nExempel\nEn användare väljer att bevaka:\nStockholm\nGöteborg\nNär en ny händelse registreras i något av dessa områden skickar programmet automatiskt ett e-postmeddelande med information om händelsen.\nBedömningskriterier\nFör att bli godkänd ska projektet:\n✅ Hämta data från Polisens API.\n✅ Hantera minst två valbara områden.\n✅ Filtrera händelser korrekt.\n✅ Skicka automatiska e-postnotiser.\n✅ Spara tidigare händelser så att dubbletter inte skickas.\n✅ Vara välstrukturerat och dokumenterat.\nBonusutmaningar (Frivilligt)\nFör högre betyg eller extra utmaning kan du lägga till:\nFler än två bevakningsområden.\nMöjlighet att välja vilka typer av händelser som ska bevakas (t.ex. trafikolyckor, bränder eller rån).\nEtt grafiskt gränssnitt med Tkinter eller CustomTkinter.\nSchemalagd kontroll av API:et med jämna mellanrum.\nPublicera projektet på GitHub med en tydlig README och versionshantering.\nVisa statistik över antalet händelser per område.","certificate_assignment","l1784297072956","Certifkat",[],49,"m1784297060807","Certifikat Uppgiften","Lär dig automatisera uppgifter med Python genom att skapa skript för filhantering, datahantering och effektivisering av arbetsflöden.","Nybörjare","Python","bg-gradient-to-br from-[#EC4899] to-[#8B5CF6]","🌐","Svenska","python","Scripting & Automation Med Python","https:\u002F\u002Fi.ibb.co\u002FjP0DRgsM\u002Fthumbnail.jpg",899,"published",1793790609014]