{
    "componentChunkName": "component---src-templates-course-content-template-js",
    "path": "/osa-7/1-moduler",
    "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Lärandemål"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Efter den här delen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vet du vad en Python-modul är"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vet du hur man inkluderar en modul i ett program med "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-satsen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vet du hur man hittar mera information om innehållet i en modul."}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lite-mera-om-debuggande","style":"position:relative;"},"children":[{"type":"text","value":"Lite mera om debuggande"},{"type":"element","tagName":"a","properties":{"href":"#lite-mera-om-debuggande","ariaLabel":"lite mera om debuggande permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vi har redan bekantat oss med flera olika debuggningsmetoder under kursen. Till exempel borde "},{"type":"element","tagName":"a","properties":{"href":"https://pythontutor.com/visualize.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualiseringsverktyget"}]},{"type":"text","value":" och användningen av "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-satser för debuggning vara bekanta. Du har kanske också testat det inbyggda debuggningsverktyget i Visual Studio Code. Om du har problem med att debuggaren inte hittar dina filer, kan du bekanta dig med några tips från förra veckan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Från och med version 3.7 erbjuder Python också ett ytterligare sätt för att debugga program, nämligen instruktionen "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/functions.html#breakpoint","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint()"}]}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Du kan lägga till den här instruktionen på valfritt ställe i din kod (kom dock ihåg att följa syntaxreglerna). När programmet körs, kommer programmet att stanna på det ställe där "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":"-instruktionen finns. Här är ett exempel där vi debuggar en uppgiftslösning från förra veckan:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAABYlAAAWJQFJUiTwAAABeklEQVQoz43R247bIBQFUH/HhKu5GIMNPr40mQwYT+yM2qn6/79TxcnDqGqrLB0J8bBB2qdofQCAHvq+g7ZxlbUhdHYnhKCUsr/i3GheSCEQQozxvoMGAgx9bQzGmBCC/w0hpJUulFJaKoAAXees894zxu/h/0AIhbYppJQl56fTcd221geEEHkCRqi27hZWSo7TeDyefAhSSkopeU7BOWeM8pKzsiyFkEIS8nTY1rWzzlSmCyF4b4xxe88PZSkfZ+mcizEOwwAA1lpjTDEdv71fLjGllPNbiinPaZ7nJcc53a9vKQ7jOE3TsJt23vu2bYvleP55uX5eth/LusV5PadrzNeUP+blY16uKZ9hHKEHgKG//dnvvPdN0xS/XvMacyurinCFmcJ0H6bJbRRhNb7NCzqgL+7bLj7TkrfVQ6drw6TgSspKk5IfMDoQ/EIwJcRRgSmhXzwK+96/jr4Luu6MrblwQjVS11xUlFeUa8odLRsq0P7KH23/Bv61bj0zKY2KAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/a0b58/7_1_1.webp 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/bc10c/7_1_1.webp 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/966d8/7_1_1.webp 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/445df/7_1_1.webp 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/78de1/7_1_1.webp 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/a02b9/7_1_1.webp 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/81c8e/7_1_1.png 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/08a84/7_1_1.png 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/b1001/7_1_1.png 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/161ec/7_1_1.png 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png","alt":"7 1 1","title":"7 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n        "}]},{"type":"text","value":"\n  "}]},{"type":"text","value":"\n    "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"När programmet stannar vid en "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":"-instruktion kommer ett interaktivt terminalfönster att öppnas. Här kan du skriva kod på samma sätt som i en normal Pythonterminal. Du ser hur koden fungerar exakt vid den här punkten i ditt program."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Instruktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":" är speciellt nyttig då du vet att någon kodrad orsakar ett fel, men du är osäker på varför. Lägg till en breakpoint just före den problematiska kodraden och kör ditt program. Då kan du göra ändringar och köra koden i den interaktiva terminalen för att lista ut vad som behöver ändras i programmet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Det är också möjligt att fortsätta att köra programmet efter att det stannat. Med "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" (kort "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c"}]},{"type":"text","value":") i terminalen får vi programmet att fortsätta fram till följande eventuella breakpoint. Den här bilden illustrerar en situation där en loop har upprepat några gånger:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 44.78260869565218%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz42R22rDMAyG8xi7iGMpPqSuHZ8SzErrOlfd5WDQ93+VkXjLOhij34XQjyX9Qm5Yz0ajvbdqQwhBCOmeo0HEcTQ5X1JKgNB1HX2Cn2ajjyFGY91BKQDo/nImhLRtSzaqXJsB4IW2HVCOPWMMEevgfXwFEesrAFBKa2y0MXeV3qSfD5r1TAixmn+z12mt53k2xiilOOdCCERscs63S5l8GIN3zllr/cY0TSGEYRiklMMG5/xRCiGavJSP07IM9ojbWr+p54EHdrmufTqf7+X2/lpKSLPz1rnqHGP03u9WSqk9VqSUTbmWmGZ+GGiPgFANAb6S///5E+mjTgE+v0lMAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/a0b58/7_1_2.webp 230w","/static/0ec6d7f1917313cc4582ecd977846154/bc10c/7_1_2.webp 460w","/static/0ec6d7f1917313cc4582ecd977846154/966d8/7_1_2.webp 920w","/static/0ec6d7f1917313cc4582ecd977846154/445df/7_1_2.webp 1380w","/static/0ec6d7f1917313cc4582ecd977846154/78de1/7_1_2.webp 1840w","/static/0ec6d7f1917313cc4582ecd977846154/ca269/7_1_2.webp 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/81c8e/7_1_2.png 230w","/static/0ec6d7f1917313cc4582ecd977846154/08a84/7_1_2.png 460w","/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png 920w","/static/0ec6d7f1917313cc4582ecd977846154/b1001/7_1_2.png 1380w","/static/0ec6d7f1917313cc4582ecd977846154/161ec/7_1_2.png 1840w","/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png","alt":"7 1 2","title":"7 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n        "}]},{"type":"text","value":"\n  "}]},{"type":"text","value":"\n    "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vi kan också använda andra nyckelord i debuggningsterminalen. Du kan hitta dem "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/pdb.html#debugger-commands","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"här"}]},{"type":"text","value":" eller så kan du skriva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"help"}]},{"type":"text","value":" i terminalen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA5klEQVQoz4WPy07EMAxF+yF9pHnHTds4cVxpkNixYc3/fwuiURGgmeGsbEvH9u0WAAeg12XD5IIHAKnUdA9mJqJ1XUMIWmtrbXe83N7L7cMSCWuGqR+G8WI4+W7FSVvUJl2p9TXXt8S07nlPAUIT+r6fpmme50e7vuSM6BfYqRDzlvaUUjjx3m/bBgB/hF8yIjJzrRURY4zNPI4DEUspWutnMhGllBDRe99eHcexBZNSCiHGx3S11pxzjFEpNV807Wfg+zIz55yttVJKY4w+McYopZxz/1xupnMOAJxz/qLVQognmT8B8I9MXlB9in4AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/a0b58/7_1_3.webp 230w","/static/19fd7ec3fff52d6018519fac3d868e78/bc10c/7_1_3.webp 460w","/static/19fd7ec3fff52d6018519fac3d868e78/966d8/7_1_3.webp 920w","/static/19fd7ec3fff52d6018519fac3d868e78/445df/7_1_3.webp 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/78de1/7_1_3.webp 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/28038/7_1_3.webp 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/81c8e/7_1_3.png 230w","/static/19fd7ec3fff52d6018519fac3d868e78/08a84/7_1_3.png 460w","/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png 920w","/static/19fd7ec3fff52d6018519fac3d868e78/b1001/7_1_3.png 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/161ec/7_1_3.png 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n          "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png","alt":"7 1 3","title":"7 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n        "}]},{"type":"text","value":"\n  "}]},{"type":"text","value":"\n    "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"För att avsluta använder vi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kom ihåg att ta bort alla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":" ur koden då du har debuggat klart!"}]},{"type":"element","tagName":"h2","properties":{"id":"anvanda-moduler","style":"position:relative;"},"children":[{"type":"text","value":"Använda moduler"},{"type":"element","tagName":"a","properties":{"href":"#anvanda-moduler","ariaLabel":"anvanda moduler permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python i sig innehåller redan en del nyttiga funktioner som "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" (returnerar längden på en sträng eller en lista) och "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum"}]},{"type":"text","value":" (returnerar summan av element i en datastruktur). Dessa hjälper dig som programmerare till viss del. Pythons standardbibliotek är en samling standardiserade funktioner och objekt som utökar vår programmeringsverktygslåda. Vi har redan använt en del av funktionerna i Pythons standardbibliotek i de tidigare övningarna – till exempel då vi räknade med kvadratrötter."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardbiblioteket består av moduler. De innehåller funktioner och klasser som är grupperade kring olika teman och funktionaliteter. I den här modulen kommer vi att bekanta oss med några nyttiga Python-moduler. Vi lär oss också att skapa egna moduler."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Instruktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" gör allt innehåll i en given modul tillgängligt i ett program. Vi tar en närmare titt på hur vi kan använda modulen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":". Den innehåller matematiska funktioner som "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" för kvadratrot och "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]},{"type":"text","value":" för logaritm."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kvadratroten av fem"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# logaritmen av åtta (bas två)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2.23606797749979\n3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktionerna är definierade i modulen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", och vi behöver ange detta då vi vill använda dem. Det gör vi med punktnotation (modulnamn.funktionsnamn), dvs. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.sqrt"}]},{"type":"text","value":" och "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.log"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"valja-specifika-delar-fran-en-modul","style":"position:relative;"},"children":[{"type":"text","value":"Välja specifika delar från en modul"},{"type":"element","tagName":"a","properties":{"href":"#valja-specifika-delar-fran-en-modul","ariaLabel":"valja specifika delar fran en modul permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ett annat sätt att använda moduler är att välja ut specifika delar med "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":"-instruktionen. Om vi endast vill använda funktionerna "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" och "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]},{"type":"text","value":" från modulen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", behöver vi inte importera hela modulen. I stället kan vi göra så här:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" log\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Då vi importerar och använder delar ur en modul med from...import, behöver vi inte ange vilken modul funktionerna finns i."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vid behov kan man använda sig av en asterisk för att importera allt innehåll i en modul så att vi inte behöver ange modulens namn:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Att importera modulers innehåll direkt med hjälp av from...import  kan vara nyttigt då man prövar olika funktioner eller arbetar med mindre projekt. Det kan däremot också ställa till med problem, vilket vi kommer att se lite senare."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hypotenusa","tmcname":"osa07-01_hypotenusa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Skapa funktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hypotenusa(katet1: float, katet2: float)"}]},{"type":"text","value":" som tar kateternas längder i en rätvinklig triangel som argument. Funktionen ska returnera hypotenusans längd."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Använd "},{"type":"element","tagName":"a","properties":{"href":"https://sv.wikipedia.org/wiki/Pythagoras_sats","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pythagoras sats"}]},{"type":"text","value":". Kvadratroten kan du beräkna med motsvarande funktion i "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-modulen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Exempel:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 5.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 13.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 1.4142135623730951"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"innehallet-i-en-modul","style":"position:relative;"},"children":[{"type":"text","value":"Innehållet i en modul"},{"type":"element","tagName":"a","properties":{"href":"#innehallet-i-en-modul","ariaLabel":"innehallet i en modul permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythons dokumentation inkluderar mycket information om alla moduler som är tillgängliga i standardbiblioteket. Dokumentationen berättar om funktioner och metoder som är definierade i en modul, och därtill får man veta hur modulen kan användas. Som ett exempel hittar du här en länk till "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-modulens dokumentation:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://docs.python.org/3/library/math.html"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vi kan också kolla på innehållet i en modul med funktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dir"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Den här funktionen returnerar en lista på namn som finns definierade i modulen. Det kan vara namn på klasser, konstanta värden eller funktioner:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Specialtecken","tmcname":"osa07-02_specialtecken"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"I "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/string.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"modulen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"string"}]}]},{"type":"text","value":" finns strängkonstanter som definierar specifika teckengrupper (t.ex. gemener och skiljetecken). Bekanta dig med dessa konstanter och skapa funktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dela_upp(strang: str)"}]},{"type":"text","value":" som tar som argument en sträng som ska returneras uppdelad i tre delar:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"en sträng med alla gemener och versaler (enligt engelska alfabetet), konstanten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ascii_letters"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"en sträng med de tecken som definieras i konstanten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punctuation"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"en sträng med resterande tecken (t.ex. mellanslag och skandinaviska tecken)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tecknen ska förekomma i samma ordning som i den ursprungliga strängen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Exempel:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"delar "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" dela_upp"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Det här är ett test, fungerar det?? åå\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"delar"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"delar"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"delar"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dethrretttestfungerardet\n,??\nä ä     åå"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Bråk","tmcname":"osa07-03_brak"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bekanta dig med Pythonmodulen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fractions"}]},{"type":"text","value":" och implementera funktionen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"delar(antal: int)"}]},{"type":"text","value":" som får ett antal som argument. Funktionen ska dela upp talet ett i så många delar som argumentet antal anger, och sedan returnera delarna i en lista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Exempel:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" p "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" delar"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n    "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"delar"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1/3\n1/3\n1/3"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"1448e880-c25e-594f-ac54-b6083fb81a3f"},"children":[]}]}]},"html":"<div><text-box variant='learningObjectives' name='Lärandemål'><p>Efter den här delen</p><ul>\n<li>vet du vad en Python-modul är</li>\n<li>vet du hur man inkluderar en modul i ett program med <code class=\"language-text\">import</code>-satsen</li>\n<li>vet du hur man hittar mera information om innehållet i en modul.</li>\n</ul></text-box><h2 id=\"lite-mera-om-debuggande\" style=\"position:relative;\">Lite mera om debuggande<a href=\"#lite-mera-om-debuggande\" aria-label=\"lite mera om debuggande permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2><p>Vi har redan bekantat oss med flera olika debuggningsmetoder under kursen. Till exempel borde <a href=\"https://pythontutor.com/visualize.html\" target=\"_blank\" rel=\"noopener noreferrer\">visualiseringsverktyget</a> och användningen av <code class=\"language-text\">print</code>-satser för debuggning vara bekanta. Du har kanske också testat det inbyggda debuggningsverktyget i Visual Studio Code. Om du har problem med att debuggaren inte hittar dina filer, kan du bekanta dig med några tips från förra veckan.</p><p>Från och med version 3.7 erbjuder Python också ett ytterligare sätt för att debugga program, nämligen instruktionen <a href=\"https://docs.python.org/3/library/functions.html#breakpoint\" target=\"_blank\" rel=\"noopener noreferrer\"><code class=\"language-text\">breakpoint()</code></a>.</p><p>Du kan lägga till den här instruktionen på valfritt ställe i din kod (kom dock ihåg att följa syntaxreglerna). När programmet körs, kommer programmet att stanna på det ställe där <code class=\"language-text\">breakpoint</code>-instruktionen finns. Här är ett exempel där vi debuggar en uppgiftslösning från förra veckan:</p><span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;\">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 62.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAABYlAAAWJQFJUiTwAAABeklEQVQoz43R247bIBQFUH/HhKu5GIMNPr40mQwYT+yM2qn6/79TxcnDqGqrLB0J8bBB2qdofQCAHvq+g7ZxlbUhdHYnhKCUsr/i3GheSCEQQozxvoMGAgx9bQzGmBCC/w0hpJUulFJaKoAAXees894zxu/h/0AIhbYppJQl56fTcd221geEEHkCRqi27hZWSo7TeDyefAhSSkopeU7BOWeM8pKzsiyFkEIS8nTY1rWzzlSmCyF4b4xxe88PZSkfZ+mcizEOwwAA1lpjTDEdv71fLjGllPNbiinPaZ7nJcc53a9vKQ7jOE3TsJt23vu2bYvleP55uX5eth/LusV5PadrzNeUP+blY16uKZ9hHKEHgKG//dnvvPdN0xS/XvMacyurinCFmcJ0H6bJbRRhNb7NCzqgL+7bLj7TkrfVQ6drw6TgSspKk5IfMDoQ/EIwJcRRgSmhXzwK+96/jr4Luu6MrblwQjVS11xUlFeUa8odLRsq0P7KH23/Bv61bj0zKY2KAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/f9eb8b0c4a4f642d316973fc108cae86/a0b58/7_1_1.webp 230w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/bc10c/7_1_1.webp 460w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/966d8/7_1_1.webp 920w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/445df/7_1_1.webp 1380w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/78de1/7_1_1.webp 1840w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/a02b9/7_1_1.webp 1852w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/webp\">\n          <source srcset=\"/static/f9eb8b0c4a4f642d316973fc108cae86/81c8e/7_1_1.png 230w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/08a84/7_1_1.png 460w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png 920w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/b1001/7_1_1.png 1380w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/161ec/7_1_1.png 1840w,\n/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png 1852w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png\" alt=\"7 1 1\" title=\"7 1 1\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span><p>När programmet stannar vid en <code class=\"language-text\">breakpoint</code>-instruktion kommer ett interaktivt terminalfönster att öppnas. Här kan du skriva kod på samma sätt som i en normal Pythonterminal. Du ser hur koden fungerar exakt vid den här punkten i ditt program.</p><p>Instruktionen <code class=\"language-text\">breakpoint</code> är speciellt nyttig då du vet att någon kodrad orsakar ett fel, men du är osäker på varför. Lägg till en breakpoint just före den problematiska kodraden och kör ditt program. Då kan du göra ändringar och köra koden i den interaktiva terminalen för att lista ut vad som behöver ändras i programmet.</p><p>Det är också möjligt att fortsätta att köra programmet efter att det stannat. Med <code class=\"language-text\">continue</code> (kort <code class=\"language-text\">c</code>) i terminalen får vi programmet att fortsätta fram till följande eventuella breakpoint. Den här bilden illustrerar en situation där en loop har upprepat några gånger:</p><span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;\">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 44.78260869565218%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz42R22rDMAyG8xi7iGMpPqSuHZ8SzErrOlfd5WDQ93+VkXjLOhij34XQjyX9Qm5Yz0ajvbdqQwhBCOmeo0HEcTQ5X1JKgNB1HX2Cn2ajjyFGY91BKQDo/nImhLRtSzaqXJsB4IW2HVCOPWMMEevgfXwFEesrAFBKa2y0MXeV3qSfD5r1TAixmn+z12mt53k2xiilOOdCCERscs63S5l8GIN3zllr/cY0TSGEYRiklMMG5/xRCiGavJSP07IM9ojbWr+p54EHdrmufTqf7+X2/lpKSLPz1rnqHGP03u9WSqk9VqSUTbmWmGZ+GGiPgFANAb6S///5E+mjTgE+v0lMAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/0ec6d7f1917313cc4582ecd977846154/a0b58/7_1_2.webp 230w,\n/static/0ec6d7f1917313cc4582ecd977846154/bc10c/7_1_2.webp 460w,\n/static/0ec6d7f1917313cc4582ecd977846154/966d8/7_1_2.webp 920w,\n/static/0ec6d7f1917313cc4582ecd977846154/445df/7_1_2.webp 1380w,\n/static/0ec6d7f1917313cc4582ecd977846154/78de1/7_1_2.webp 1840w,\n/static/0ec6d7f1917313cc4582ecd977846154/ca269/7_1_2.webp 1986w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/webp\">\n          <source srcset=\"/static/0ec6d7f1917313cc4582ecd977846154/81c8e/7_1_2.png 230w,\n/static/0ec6d7f1917313cc4582ecd977846154/08a84/7_1_2.png 460w,\n/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png 920w,\n/static/0ec6d7f1917313cc4582ecd977846154/b1001/7_1_2.png 1380w,\n/static/0ec6d7f1917313cc4582ecd977846154/161ec/7_1_2.png 1840w,\n/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png 1986w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png\" alt=\"7 1 2\" title=\"7 1 2\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span><p>Vi kan också använda andra nyckelord i debuggningsterminalen. Du kan hitta dem <a href=\"https://docs.python.org/3/library/pdb.html#debugger-commands\" target=\"_blank\" rel=\"noopener noreferrer\">här</a> eller så kan du skriva <code class=\"language-text\">help</code> i terminalen:</p><span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;\">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 42.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA5klEQVQoz4WPy07EMAxF+yF9pHnHTds4cVxpkNixYc3/fwuiURGgmeGsbEvH9u0WAAeg12XD5IIHAKnUdA9mJqJ1XUMIWmtrbXe83N7L7cMSCWuGqR+G8WI4+W7FSVvUJl2p9TXXt8S07nlPAUIT+r6fpmme50e7vuSM6BfYqRDzlvaUUjjx3m/bBgB/hF8yIjJzrRURY4zNPI4DEUspWutnMhGllBDRe99eHcexBZNSCiHGx3S11pxzjFEpNV807Wfg+zIz55yttVJKY4w+McYopZxz/1xupnMOAJxz/qLVQognmT8B8I9MXlB9in4AAAAASUVORK5CYII='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/19fd7ec3fff52d6018519fac3d868e78/a0b58/7_1_3.webp 230w,\n/static/19fd7ec3fff52d6018519fac3d868e78/bc10c/7_1_3.webp 460w,\n/static/19fd7ec3fff52d6018519fac3d868e78/966d8/7_1_3.webp 920w,\n/static/19fd7ec3fff52d6018519fac3d868e78/445df/7_1_3.webp 1380w,\n/static/19fd7ec3fff52d6018519fac3d868e78/78de1/7_1_3.webp 1840w,\n/static/19fd7ec3fff52d6018519fac3d868e78/28038/7_1_3.webp 1968w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/webp\">\n          <source srcset=\"/static/19fd7ec3fff52d6018519fac3d868e78/81c8e/7_1_3.png 230w,\n/static/19fd7ec3fff52d6018519fac3d868e78/08a84/7_1_3.png 460w,\n/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png 920w,\n/static/19fd7ec3fff52d6018519fac3d868e78/b1001/7_1_3.png 1380w,\n/static/19fd7ec3fff52d6018519fac3d868e78/161ec/7_1_3.png 1840w,\n/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png 1968w\" sizes=\"(max-width: 920px) 100vw, 920px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png\" alt=\"7 1 3\" title=\"7 1 3\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span><p>För att avsluta använder vi <code class=\"language-text\">exit</code>.</p><p>Kom ihåg att ta bort alla <code class=\"language-text\">breakpoint</code> ur koden då du har debuggat klart!</p><h2 id=\"anvanda-moduler\" style=\"position:relative;\">Använda moduler<a href=\"#anvanda-moduler\" aria-label=\"anvanda moduler permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2><p>Python i sig innehåller redan en del nyttiga funktioner som <code class=\"language-text\">len</code> (returnerar längden på en sträng eller en lista) och <code class=\"language-text\">sum</code> (returnerar summan av element i en datastruktur). Dessa hjälper dig som programmerare till viss del. Pythons standardbibliotek är en samling standardiserade funktioner och objekt som utökar vår programmeringsverktygslåda. Vi har redan använt en del av funktionerna i Pythons standardbibliotek i de tidigare övningarna – till exempel då vi räknade med kvadratrötter.</p><p>Standardbiblioteket består av moduler. De innehåller funktioner och klasser som är grupperade kring olika teman och funktionaliteter. I den här modulen kommer vi att bekanta oss med några nyttiga Python-moduler. Vi lär oss också att skapa egna moduler.</p><p>Instruktionen <code class=\"language-text\">import</code> gör allt innehåll i en given modul tillgängligt i ett program. Vi tar en närmare titt på hur vi kan använda modulen <code class=\"language-text\">math</code>. Den innehåller matematiska funktioner som <code class=\"language-text\">sqrt</code> för kvadratrot och <code class=\"language-text\">log</code> för logaritm.</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> math\n\n<span class=\"token comment\"># kvadratroten av fem</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>math<span class=\"token punctuation\">.</span>sqrt<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># logaritmen av åtta (bas två)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>math<span class=\"token punctuation\">.</span>log<span class=\"token punctuation\">(</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div><sample-output><p>2.23606797749979\n3.0</p></sample-output><p>Funktionerna är definierade i modulen <code class=\"language-text\">math</code>, och vi behöver ange detta då vi vill använda dem. Det gör vi med punktnotation (modulnamn.funktionsnamn), dvs. <code class=\"language-text\">math.sqrt</code> och <code class=\"language-text\">math.log</code>.</p><h2 id=\"valja-specifika-delar-fran-en-modul\" style=\"position:relative;\">Välja specifika delar från en modul<a href=\"#valja-specifika-delar-fran-en-modul\" aria-label=\"valja specifika delar fran en modul permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2><p>Ett annat sätt att använda moduler är att välja ut specifika delar med <code class=\"language-text\">from</code>-instruktionen. Om vi endast vill använda funktionerna <code class=\"language-text\">sqrt</code> och <code class=\"language-text\">log</code> från modulen <code class=\"language-text\">math</code>, behöver vi inte importera hela modulen. I stället kan vi göra så här:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> math <span class=\"token keyword\">import</span> sqrt<span class=\"token punctuation\">,</span> log\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>sqrt<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>log<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div><p>Då vi importerar och använder delar ur en modul med from...import, behöver vi inte ange vilken modul funktionerna finns i.</p><p>Vid behov kan man använda sig av en asterisk för att importera allt innehåll i en modul så att vi inte behöver ange modulens namn:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> math <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>sqrt<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>log<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div><p>Att importera modulers innehåll direkt med hjälp av from...import  kan vara nyttigt då man prövar olika funktioner eller arbetar med mindre projekt. Det kan däremot också ställa till med problem, vilket vi kommer att se lite senare.</p><programming-exercise name='Hypotenusa' tmcname='osa07-01_hypotenusa'><p>Skapa funktionen <code class=\"language-text\">hypotenusa(katet1: float, katet2: float)</code> som tar kateternas längder i en rätvinklig triangel som argument. Funktionen ska returnera hypotenusans längd.</p><p>Använd <a href=\"https://sv.wikipedia.org/wiki/Pythagoras_sats\" target=\"_blank\" rel=\"noopener noreferrer\">Pythagoras sats</a>. Kvadratroten kan du beräkna med motsvarande funktion i <code class=\"language-text\">math</code>-modulen.</p><p>Exempel:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>hypotenusa<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># 5.0</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>hypotenusa<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">12</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># 13.0</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>hypotenusa<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># 1.4142135623730951</span></code></pre></div></programming-exercise><h2 id=\"innehallet-i-en-modul\" style=\"position:relative;\">Innehållet i en modul<a href=\"#innehallet-i-en-modul\" aria-label=\"innehallet i en modul permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2><p>Pythons dokumentation inkluderar mycket information om alla moduler som är tillgängliga i standardbiblioteket. Dokumentationen berättar om funktioner och metoder som är definierade i en modul, och därtill får man veta hur modulen kan användas. Som ett exempel hittar du här en länk till <code class=\"language-text\">math</code>-modulens dokumentation:</p><ul>\n<li><a href=\"https://docs.python.org/3/library/math.html\" target=\"_blank\" rel=\"noopener noreferrer\">https://docs.python.org/3/library/math.html</a></li>\n</ul><p>Vi kan också kolla på innehållet i en modul med funktionen <code class=\"language-text\">dir</code>:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> math\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">dir</span><span class=\"token punctuation\">(</span>math<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div><p>Den här funktionen returnerar en lista på namn som finns definierade i modulen. Det kan vara namn på klasser, konstanta värden eller funktioner:</p><sample-output><p>['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']</p></sample-output><programming-exercise name='Specialtecken' tmcname='osa07-02_specialtecken'><p>I <a href=\"https://docs.python.org/3/library/string.html\" target=\"_blank\" rel=\"noopener noreferrer\">modulen <code class=\"language-text\">string</code></a> finns strängkonstanter som definierar specifika teckengrupper (t.ex. gemener och skiljetecken). Bekanta dig med dessa konstanter och skapa funktionen <code class=\"language-text\">dela_upp(strang: str)</code> som tar som argument en sträng som ska returneras uppdelad i tre delar:</p><ol>\n<li>en sträng med alla gemener och versaler (enligt engelska alfabetet), konstanten <code class=\"language-text\">ascii_letters</code></li>\n<li>en sträng med de tecken som definieras i konstanten <code class=\"language-text\">punctuation</code></li>\n<li>en sträng med resterande tecken (t.ex. mellanslag och skandinaviska tecken)</li>\n</ol><p>Tecknen ska förekomma i samma ordning som i den ursprungliga strängen.</p><p>Exempel:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">delar <span class=\"token operator\">=</span> dela_upp<span class=\"token punctuation\">(</span><span class=\"token string\">\"Det här är ett test, fungerar det?? åå\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>delar<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>delar<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>delar<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div><sample-output><p>Dethrretttestfungerardet\n,??\nä ä     åå</p></sample-output></programming-exercise><programming-exercise name='Bråk' tmcname='osa07-03_brak'><p>Bekanta dig med Pythonmodulen <code class=\"language-text\">fractions</code> och implementera funktionen <code class=\"language-text\">delar(antal: int)</code> som får ett antal som argument. Funktionen ska dela upp talet ett i så många delar som argumentet antal anger, och sedan returnera delarna i en lista.</p><p>Exempel:</p><div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">for</span> p <span class=\"token keyword\">in</span> delar<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>p<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>delar<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div><sample-output><p>1/3\n1/3\n1/3</p><p>[Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]</p></sample-output></programming-exercise><div><quiz id=\"1448e880-c25e-594f-ac54-b6083fb81a3f\"></quiz></div></div>","frontmatter":{"path":"/osa-7/1-moduler","title":"Moduler"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-26-sv/ohjelmointi-26-sv/data/osa-7/1-moduler.md"},"allPages":{"edges":[{"node":{"id":"3823106d-d5b4-54fc-ab67-c9717c628c00","frontmatter":{"path":"/","title":"Info om kursen"}}},{"node":{"id":"dd7e5652-0011-5cc2-8a7c-c07fca8a56ba","frontmatter":{"path":"/bedomningar-och-prov","title":"Bedömning och prov"}}},{"node":{"id":"7ee945da-eb70-5822-b337-58f9871c566a","frontmatter":{"path":"/alla-uppgifter","title":"Alla uppgifter"}}},{"node":{"id":"6e80e276-0b56-526e-93d9-5ab8823c6611","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"7dadae75-1bf2-549f-bb24-5e00c8421489","frontmatter":{"path":"/stod","title":"Handledning och stöd"}}},{"node":{"id":"b1f9be34-f77d-51c9-83c2-d2d3b1f88e7c","frontmatter":{"path":"/onlinetent","title":"Nättentamen 4.6."}}},{"node":{"id":"4e153253-62e1-5e29-b920-4512181e99a0","frontmatter":{"path":"/onlinetent-ohja","title":"ProgFK onlinetent 28.2.2026"}}},{"node":{"id":"5ba54609-9e23-5f8a-bbb1-3501116bd674","frontmatter":{"path":"/onlinetent-ohpe","title":"ProgGK onlinetent 17.1.2026"}}},{"node":{"id":"15a016f4-0a3d-5ec9-8236-533e57968b89","frontmatter":{"path":"/felanmalningar","title":"Vanliga felmeddelanden"}}},{"node":{"id":"416d07bf-b149-5ede-9d73-ea96ebbe00a2","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"70c6dbee-fa15-5924-a037-5b093295a075","frontmatter":{"path":"/osa-1/1-introduktion","title":"Introduktion"}}},{"node":{"id":"677341cb-d819-5a66-a348-fe483d9d22dd","frontmatter":{"path":"/ofta-stallda-fragar","title":"Ofta ställda frågor"}}},{"node":{"id":"10acce17-6b8d-5a7a-96ef-df73c32033da","frontmatter":{"path":"/osa-1/5-villkorssatser","title":"If-satser"}}},{"node":{"id":"adf0c95e-e532-52ac-acb7-41ecca35f001","frontmatter":{"path":"/osa-1","title":"Modul 1"}}},{"node":{"id":"337cbcae-fea0-535f-a4b7-07d0558220d7","frontmatter":{"path":"/osa-1/4-rakneoperationer","title":"Räkneoperationer"}}},{"node":{"id":"94008673-2d10-5ad1-af95-83b5478b3113","frontmatter":{"path":"/osa-10/1-klasshierarkier","title":"Klasshierarkier"}}},{"node":{"id":"3d48575e-5585-5b61-81ed-fe7585ea7593","frontmatter":{"path":"/osa-10/2-atkamstmodifierare","title":"Åtkomstmodifierare"}}},{"node":{"id":"fd6c2729-204f-5955-84d7-1ee8ed9b243b","frontmatter":{"path":"/osa-10/3-objektorienterade-programmeringstekniker","title":"Objektorienterade programmeringstekniker"}}},{"node":{"id":"648ed3ec-8a44-533a-9b88-7ef8fb7a1314","frontmatter":{"path":"/osa-10/4-storre-applikation","title":"Att utveckla en större applikation"}}},{"node":{"id":"abc32f5b-5700-5a16-b351-3bb0fd9e9b3f","frontmatter":{"path":"/osa-10","title":"Modul 10"}}},{"node":{"id":"b6612d3d-6ef9-5537-b0cf-62a01d4de20e","frontmatter":{"path":"/osa-1/3-mer-om-variabler","title":"Mer om variabler"}}},{"node":{"id":"b4146f07-9889-567c-bb26-315ca8375738","frontmatter":{"path":"/osa-11/1-list-comprehension","title":"Listbyggare"}}},{"node":{"id":"959073ca-1000-5d61-98e3-6a7151d95d71","frontmatter":{"path":"/osa-1/2-info-fran-anvandaren","title":"Information från användaren"}}},{"node":{"id":"a8daa43b-12ea-5482-9768-648407360e5d","frontmatter":{"path":"/osa-11/3-rekursion","title":"Rekursion"}}},{"node":{"id":"4dfa0d82-937f-597e-a323-1ffa57da8548","frontmatter":{"path":"/osa-11/2-mer-om-comprehensions","title":"Mer om listbyggare"}}},{"node":{"id":"848a81c4-fc8c-55cf-99ad-333703ef6d09","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Fler exempel på rekursion"}}},{"node":{"id":"bd0cfdba-8571-59be-bcfc-b681838806c6","frontmatter":{"path":"/osa-11","title":"Modul 11"}}},{"node":{"id":"d2e288a6-dc52-5b69-b9c9-7c967e3ecd14","frontmatter":{"path":"/osa-12/3-funktionell-programmering","title":"Funktionell programmering"}}},{"node":{"id":"e4a0179a-cac6-5b2f-b1d0-e0db6f5b4339","frontmatter":{"path":"/osa-12/4-reguljara-uttryck","title":"Reguljära uttryck"}}},{"node":{"id":"655d9900-5214-5ba4-88d7-a81fd819b0a0","frontmatter":{"path":"/osa-12","title":"Modul 12"}}},{"node":{"id":"10a6b4aa-f106-50e6-9d72-39e500891fd8","frontmatter":{"path":"/osa-12/2-generatorer","title":"Generatorer"}}},{"node":{"id":"af6df246-f5d2-583d-9f07-5aa9736ff64f","frontmatter":{"path":"/osa-13/1-pygame","title":"Pygame"}}},{"node":{"id":"d7395cb0-da7f-5acf-bf09-fd1035b36e81","frontmatter":{"path":"/osa-13/2-animation","title":"Animation"}}},{"node":{"id":"fef7b1d3-58ba-5d58-8637-0e14a8f584a6","frontmatter":{"path":"/osa-12/1-funktioner-som-argument","title":"Funktioner som argument"}}},{"node":{"id":"bd405169-a47c-5eba-986b-4506b39036ac","frontmatter":{"path":"/osa-13/4-fler-pygame-tekniker","title":"Fler pygame-tekniker"}}},{"node":{"id":"a9357b87-636c-5d96-b46b-bbb6a421f6d0","frontmatter":{"path":"/osa-13/3-handelser","title":"Händelser"}}},{"node":{"id":"78b8d6cc-7e14-5090-b43c-1513e8069e0c","frontmatter":{"path":"/osa-13","title":"Modul 13"}}},{"node":{"id":"5f9e405b-ae8f-5181-b1ae-ff2f4e6ad6da","frontmatter":{"path":"/osa-14/1-spelprojekt","title":"Spelprojekt"}}},{"node":{"id":"6e0e1b55-3ed4-56a8-9580-cd451bb7edde","frontmatter":{"path":"/osa-14/2-robot-och-ladar","title":"Robot och lådor"}}},{"node":{"id":"7f22ddd1-54e5-548f-b8d1-07863a79e2df","frontmatter":{"path":"/osa-14","title":"Modul 14"}}},{"node":{"id":"fea4657b-129f-5bb5-8645-17f84341e4b6","frontmatter":{"path":"/osa-2/1-terminologi","title":"Programmeringsterminologi"}}},{"node":{"id":"8c86392d-05ca-5e03-bf19-9e18db4c3578","frontmatter":{"path":"/osa-2/2-else-elif","title":"Mera om if-satser"}}},{"node":{"id":"4272a508-fa3f-5c99-b0d0-ca0a77dcbd88","frontmatter":{"path":"/osa-2/3-kombinera-villkor","title":"Kombinera villkor"}}},{"node":{"id":"2a9f88b8-4fe8-5fcb-9dfe-b4d98dde5d42","frontmatter":{"path":"/osa-14/3-fardigstallande-av-spelet","title":"Färdigställande av spelet"}}},{"node":{"id":"a620e53b-7d15-54ea-9a40-5d549bf3fddc","frontmatter":{"path":"/osa-14/4-ditt-eget-sepl","title":"Ditt eget spel"}}},{"node":{"id":"6a0f5405-e6cb-581d-92e3-c8af9ad4e7c2","frontmatter":{"path":"/osa-3/1-loopar-med-villkor","title":"Loopar med villkor"}}},{"node":{"id":"a131e4e2-8f05-5986-ab20-e06d9ed60dbe","frontmatter":{"path":"/osa-3/2-behandla-strangar","title":"Behandla strängar"}}},{"node":{"id":"29bc027e-c4f5-5d80-9e6a-bca75ee73682","frontmatter":{"path":"/osa-3/3-mer-om-loopar","title":"Mera om loopar"}}},{"node":{"id":"ed81d1ed-bbbb-573c-a017-e49e4ccd3d56","frontmatter":{"path":"/osa-3/4-definiera-funktioner","title":"Definiera funktioner"}}},{"node":{"id":"f9cdcf8a-269d-5ddb-9346-9ca23e48ef7e","frontmatter":{"path":"/osa-3","title":"Modul 3"}}},{"node":{"id":"8c15b7c7-809b-5ea5-a801-7d20819960ea","frontmatter":{"path":"/osa-4/1-vscode","title":"Editorn Visual Studio Code, Pythontolken och det inbyggda debuggningsverktyget"}}},{"node":{"id":"0f597439-5fd6-5ebf-a758-51fa680510d6","frontmatter":{"path":"/osa-4/2-mer-om-funktioner","title":"Mer om funktioner"}}},{"node":{"id":"d61169f7-0d24-5b3c-8b8c-6f3001453119","frontmatter":{"path":"/osa-4/3-listor","title":"Listor"}}},{"node":{"id":"0cc0967d-12d5-5877-966c-83262ee2d053","frontmatter":{"path":"/osa-4/4-iteration","title":"Iteration"}}},{"node":{"id":"b7f5aab0-16f5-57ea-be99-ef776e766449","frontmatter":{"path":"/osa-4/5-utskrift","title":"Formatera utskrift"}}},{"node":{"id":"7ce1ae54-08a7-55c5-8fdf-e66c163be7c5","frontmatter":{"path":"/osa-4","title":"Modul 4"}}},{"node":{"id":"7616bfc3-86a8-51ad-a63d-f62e70d684f7","frontmatter":{"path":"/osa-5/1-mer-om-listor","title":"Mer om listor"}}},{"node":{"id":"2754089d-7b6b-5a07-98f8-ed47c35f0f1e","frontmatter":{"path":"/osa-5/2-referenser","title":"Referenser"}}},{"node":{"id":"e44de044-469b-5a0c-b484-8b1c6d76b36e","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"1777675c-c2e5-5912-9351-6bf786995e74","frontmatter":{"path":"/osa-4/6-strangar-listor","title":"Mera strängar och listor"}}},{"node":{"id":"f5608366-0cdb-5799-ad10-c1ae5bf31ff5","frontmatter":{"path":"/osa-2/4-loopar","title":"Enkla loopar"}}},{"node":{"id":"335a567d-d08f-56d6-8449-9d4bfb7dbbf5","frontmatter":{"path":"/osa-2","title":"Modul 2"}}},{"node":{"id":"05201f8b-92c3-5f20-aa64-572c040a44ef","frontmatter":{"path":"/osa-6/2-skriva-filer","title":"Skriva filer"}}},{"node":{"id":"bc19aa61-1a37-5b73-bd20-0c3994c3a7cf","frontmatter":{"path":"/osa-6/3-fel","title":"Förbered dig på fel"}}},{"node":{"id":"9c4ca0dd-1be2-5b8f-a357-61049541022a","frontmatter":{"path":"/osa-6/1-lasa-filer","title":"Läsa filer"}}},{"node":{"id":"05a28a78-3f81-5cb4-8f94-9a16288789c8","frontmatter":{"path":"/osa-6/4-lokala-globala-variabler","title":"Lokala och globala variabler"}}},{"node":{"id":"2f89b471-3e51-5519-9173-c8029a4a5bf7","frontmatter":{"path":"/osa-6","title":"Modul 6"}}},{"node":{"id":"cda20318-6650-5b01-96a7-c8a9436ea427","frontmatter":{"path":"/osa-7/1-moduler","title":"Moduler"}}},{"node":{"id":"c0858900-47db-5c88-8875-147a8e652fe4","frontmatter":{"path":"/osa-5/3-lexikon","title":"Lexikon"}}},{"node":{"id":"11da0cd6-66de-5139-aeea-f6536ce49cca","frontmatter":{"path":"/osa-7/2-slumpmassighet","title":"Slump"}}},{"node":{"id":"2190a210-ac82-5c3e-8671-037f9247c83f","frontmatter":{"path":"/osa-7/3-tid-datum","title":"Tid och datum"}}},{"node":{"id":"9970fc94-eb27-5148-b31b-e887b737b7b4","frontmatter":{"path":"/osa-7/4-behandla-data","title":"Behandla data"}}},{"node":{"id":"9de0b38c-9ab2-5dca-918f-53f58d473b4e","frontmatter":{"path":"/osa-7/5-egna-moduler","title":"Skapa dina egna moduler"}}},{"node":{"id":"6c06e867-814c-5c2c-b0d6-d6cfaaf92234","frontmatter":{"path":"/osa-5","title":"Modul 5"}}},{"node":{"id":"f7d5f344-d3b4-56c6-bf18-45edc2245759","frontmatter":{"path":"/osa-8/4-metoder-i-egna-klasser","title":"Metoder i egna klasser"}}},{"node":{"id":"303465de-b86a-519b-b1b5-9711b03072d9","frontmatter":{"path":"/osa-8/5-fler-exempel","title":"Fler exempel"}}},{"node":{"id":"a85852ab-8cf8-52b4-8872-4c73d5821319","frontmatter":{"path":"/osa-9/1-objekt-och-referenser","title":"Objekt och referenser"}}},{"node":{"id":"b6cd6b79-fcb4-535d-8d00-b4f849f4647f","frontmatter":{"path":"/osa-9/3-inkapsling","title":"Inkapsling"}}},{"node":{"id":"c6757168-dbea-5c4f-aa4e-c2c3bb0ca423","frontmatter":{"path":"/osa-9/4-metodernas-rackvidd","title":"Metodernas räckvidd"}}},{"node":{"id":"601766bc-2985-5820-a4a3-32bbb761c69b","frontmatter":{"path":"/osa-7/6-funktionaliteter-python","title":"Flera funktionaliteter i Python"}}},{"node":{"id":"08ceb5d1-6e8e-599a-995d-a1125f7a1f80","frontmatter":{"path":"/osa-9/5-klassattribut","title":"Klassattribut"}}},{"node":{"id":"b1f13f0c-169e-519f-9f42-f572bebd8535","frontmatter":{"path":"/osa-9","title":"Modul 9"}}},{"node":{"id":"4b4101dc-9e1f-5a4a-bb4e-dbb6a4ba5e0d","frontmatter":{"path":"/osa-8/3-egna-klasser","title":"Egna klasser"}}},{"node":{"id":"35f36261-94d8-509f-9fcb-59b3e08fc6a1","frontmatter":{"path":"/osa-8/2-klasser-och-objekt","title":"Klasser och objekt"}}},{"node":{"id":"53079b0b-f0d2-5c35-83a0-4f713e57ce72","frontmatter":{"path":"/osa-8/1-objekt-och-metoder","title":"Objekt och metoder"}}},{"node":{"id":"954e5006-2925-5035-a27c-10e05897cfa4","frontmatter":{"path":"/osa-9/6-fler-exempel-med-klasser","title":"Fler exempel med klasser"}}},{"node":{"id":"f1eeb001-f445-57c9-b2e7-380dabc25b86","frontmatter":{"path":"/osa-8","title":"Modul 8"}}},{"node":{"id":"ccc63fff-7834-5270-b69c-944db644a9ad","frontmatter":{"path":"/osa-7","title":"Modul 7"}}},{"node":{"id":"75ae0566-a8bf-5305-aee3-4c5bc0d2d5e9","frontmatter":{"path":"/osa-9/2-objekt-som-attribut","title":"Objekt som attribut "}}}]}},"pageContext":{}},
    "staticQueryHashes": ["1357757885","994120085"]}