Skip to content

Commit 785f95d

Browse files
committed
Add test to describe where to write solution
1 parent 613b394 commit 785f95d

3 files changed

Lines changed: 70 additions & 42 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
Dette materialet ble skrevet i forbindelse med at NRG (Norges Realfagsgymnas) besøkte Simula Research Laboratory for å lære litt om Python og numeriske beregninger. Materialet er ment å være en introduksjon til grunnleggende Python-programmering, med fokus på bruk av Jupyter Notebook som et verktøy for interaktiv koding.
44

55
Statiske sider kan finnes ved å gå til følgende side: https://finsberg.github.io/visit-nrg-2025/
6+
67
Live notebooks kan finnes ved å gå til følgende side: https://finsberg.github.io/visit-nrg-2025/lite
78

89
Her er en oversikt over hva som blir dekket i materialet:

notebooks/01_basics.ipynb

Lines changed: 53 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@
8484
"metadata": {},
8585
"outputs": [],
8686
"source": [
87-
"# x *= 2"
87+
"# Skriv løsning her\n",
88+
"# x *= 2\n"
8889
]
8990
},
9091
{
@@ -250,7 +251,9 @@
250251
"id": "21",
251252
"metadata": {},
252253
"outputs": [],
253-
"source": []
254+
"source": [
255+
"# Skriv løsning her"
256+
]
254257
},
255258
{
256259
"cell_type": "markdown",
@@ -291,9 +294,19 @@
291294
]
292295
},
293296
{
294-
"cell_type": "markdown",
297+
"cell_type": "code",
298+
"execution_count": null,
295299
"id": "24",
296300
"metadata": {},
301+
"outputs": [],
302+
"source": [
303+
"# Skriv løsning her"
304+
]
305+
},
306+
{
307+
"cell_type": "markdown",
308+
"id": "25",
309+
"metadata": {},
297310
"source": [
298311
"Dobbelklikk for løsning\n",
299312
"<!--\n",
@@ -308,7 +321,7 @@
308321
},
309322
{
310323
"cell_type": "markdown",
311-
"id": "25",
324+
"id": "26",
312325
"metadata": {},
313326
"source": [
314327
"## Lister\n",
@@ -319,7 +332,7 @@
319332
{
320333
"cell_type": "code",
321334
"execution_count": null,
322-
"id": "26",
335+
"id": "27",
323336
"metadata": {},
324337
"outputs": [],
325338
"source": [
@@ -329,7 +342,7 @@
329342
},
330343
{
331344
"cell_type": "markdown",
332-
"id": "27",
345+
"id": "28",
333346
"metadata": {},
334347
"source": [
335348
"Vi kan også legge til elementer i en liste ved å bruke metoden `append()`. For eksempel, for å legge til tallet 4 i listen `x`, kan vi skrive:"
@@ -338,7 +351,7 @@
338351
{
339352
"cell_type": "code",
340353
"execution_count": null,
341-
"id": "28",
354+
"id": "29",
342355
"metadata": {},
343356
"outputs": [],
344357
"source": [
@@ -348,7 +361,7 @@
348361
},
349362
{
350363
"cell_type": "markdown",
351-
"id": "29",
364+
"id": "30",
352365
"metadata": {},
353366
"source": [
354367
"Vi kan bruke lister til å lagre resultatene underveis i en løkke. For eksempel, for å lagre de 5 første toerpotensnene (2^0, 2^1, 2^2, 2^3, 2^4), kan vi gjøre følgende:"
@@ -357,7 +370,7 @@
357370
{
358371
"cell_type": "code",
359372
"execution_count": null,
360-
"id": "30",
373+
"id": "31",
361374
"metadata": {},
362375
"outputs": [],
363376
"source": [
@@ -369,7 +382,7 @@
369382
},
370383
{
371384
"cell_type": "markdown",
372-
"id": "31",
385+
"id": "32",
373386
"metadata": {},
374387
"source": [
375388
"Vi kan også akksessere elementer i en liste ved å bruke indeksering. Indekseringen starter på 0, så det første elementet i listen har indeks 0, det andre elementet har indeks 1, og så videre. For eksempel, for å få det tredje elementet i listen `x`, kan vi skrive:"
@@ -378,7 +391,7 @@
378391
{
379392
"cell_type": "code",
380393
"execution_count": null,
381-
"id": "32",
394+
"id": "33",
382395
"metadata": {},
383396
"outputs": [],
384397
"source": [
@@ -387,7 +400,7 @@
387400
},
388401
{
389402
"cell_type": "markdown",
390-
"id": "33",
403+
"id": "34",
391404
"metadata": {},
392405
"source": [
393406
"### Oppgave - Lag en liste med de første 10 Fibonacci-tallene\n",
@@ -397,7 +410,7 @@
397410
},
398411
{
399412
"cell_type": "markdown",
400-
"id": "34",
413+
"id": "35",
401414
"metadata": {
402415
"tags": [
403416
"hide-input"
@@ -424,14 +437,16 @@
424437
{
425438
"cell_type": "code",
426439
"execution_count": null,
427-
"id": "35",
440+
"id": "36",
428441
"metadata": {},
429442
"outputs": [],
430-
"source": []
443+
"source": [
444+
"# Skriv løsning her"
445+
]
431446
},
432447
{
433448
"cell_type": "markdown",
434-
"id": "36",
449+
"id": "37",
435450
"metadata": {
436451
"tags": [
437452
"hide-input",
@@ -450,7 +465,7 @@
450465
},
451466
{
452467
"cell_type": "markdown",
453-
"id": "37",
468+
"id": "38",
454469
"metadata": {},
455470
"source": [
456471
"### List comprehensions\n",
@@ -461,7 +476,7 @@
461476
{
462477
"cell_type": "code",
463478
"execution_count": null,
464-
"id": "38",
479+
"id": "39",
465480
"metadata": {},
466481
"outputs": [],
467482
"source": [
@@ -471,7 +486,7 @@
471486
},
472487
{
473488
"cell_type": "markdown",
474-
"id": "39",
489+
"id": "40",
475490
"metadata": {},
476491
"source": [
477492
"Dette er ofte mer effektivt og lesbart enn å bruke en `for`-løkke for å bygge opp listen. I en jupyter notebook kan vi bruke `%%timeit` for å måle hvor lang tid det tar å kjøre en celle. La oss sammenligne ytelsen til en liste comprehension med en `for`-løkke for å lage en liste med kvadrater av tallene fra 1 til 10 millioner:"
@@ -480,7 +495,7 @@
480495
{
481496
"cell_type": "code",
482497
"execution_count": null,
483-
"id": "40",
498+
"id": "41",
484499
"metadata": {},
485500
"outputs": [],
486501
"source": [
@@ -491,7 +506,7 @@
491506
{
492507
"cell_type": "code",
493508
"execution_count": null,
494-
"id": "41",
509+
"id": "42",
495510
"metadata": {},
496511
"outputs": [],
497512
"source": [
@@ -503,15 +518,15 @@
503518
},
504519
{
505520
"cell_type": "markdown",
506-
"id": "42",
521+
"id": "43",
507522
"metadata": {},
508523
"source": [
509524
"Det var ikke veldig stor forskjell i dette tilfellet, men i andre situasjoner kan det være betydelig forskjell i ytelse, spesielt for større datasett. Vi kan også argumentere med at list comprehensions ofte er mer lesbare og uttrykksfulle enn tradisjonelle løkker.\n"
510525
]
511526
},
512527
{
513528
"cell_type": "markdown",
514-
"id": "43",
529+
"id": "44",
515530
"metadata": {},
516531
"source": [
517532
"## Importere biblioteker\n",
@@ -522,7 +537,7 @@
522537
{
523538
"cell_type": "code",
524539
"execution_count": null,
525-
"id": "44",
540+
"id": "45",
526541
"metadata": {},
527542
"outputs": [],
528543
"source": [
@@ -531,7 +546,7 @@
531546
},
532547
{
533548
"cell_type": "markdown",
534-
"id": "45",
549+
"id": "46",
535550
"metadata": {},
536551
"source": [
537552
"For å se hvilke funksjoner og konstanter som er tilgjengelige i `math`-biblioteket, kan vi i jupyter notebook starte med å skrive navnet på biblioteket etterfulgt av en punktum (`.`) og deretter trykke `Tab`-tasten. Dette vil vise en liste over tilgjengelige funksjoner og konstanter i biblioteket."
@@ -540,7 +555,7 @@
540555
{
541556
"cell_type": "code",
542557
"execution_count": null,
543-
"id": "46",
558+
"id": "47",
544559
"metadata": {},
545560
"outputs": [],
546561
"source": [
@@ -549,7 +564,7 @@
549564
},
550565
{
551566
"cell_type": "markdown",
552-
"id": "47",
567+
"id": "48",
553568
"metadata": {},
554569
"source": [
555570
"En annen veldig nyttig funksjonalitet i jupyter notebook er at vi kan bruke `?` for å få hjelp om en funksjon eller et objekt. For eksempel, for å få hjelp om `math.sqrt`-funksjonen, kan vi skrive:\n",
@@ -563,7 +578,7 @@
563578
{
564579
"cell_type": "code",
565580
"execution_count": null,
566-
"id": "48",
581+
"id": "49",
567582
"metadata": {},
568583
"outputs": [],
569584
"source": [
@@ -572,7 +587,7 @@
572587
},
573588
{
574589
"cell_type": "markdown",
575-
"id": "49",
590+
"id": "50",
576591
"metadata": {},
577592
"source": [
578593
"### Bonus\n",
@@ -583,14 +598,14 @@
583598
{
584599
"cell_type": "code",
585600
"execution_count": null,
586-
"id": "50",
601+
"id": "51",
587602
"metadata": {},
588603
"outputs": [],
589604
"source": []
590605
},
591606
{
592607
"cell_type": "markdown",
593-
"id": "51",
608+
"id": "52",
594609
"metadata": {},
595610
"source": [
596611
"## Lister for numeriske beregninger\n",
@@ -601,7 +616,7 @@
601616
{
602617
"cell_type": "code",
603618
"execution_count": null,
604-
"id": "52",
619+
"id": "53",
605620
"metadata": {},
606621
"outputs": [],
607622
"source": [
@@ -616,7 +631,7 @@
616631
},
617632
{
618633
"cell_type": "markdown",
619-
"id": "53",
634+
"id": "54",
620635
"metadata": {},
621636
"source": [
622637
"Vi kan til og med lage lister som inneholder andre lister"
@@ -625,7 +640,7 @@
625640
{
626641
"cell_type": "code",
627642
"execution_count": null,
628-
"id": "54",
643+
"id": "55",
629644
"metadata": {},
630645
"outputs": [],
631646
"source": [
@@ -638,7 +653,7 @@
638653
},
639654
{
640655
"cell_type": "markdown",
641-
"id": "55",
656+
"id": "56",
642657
"metadata": {},
643658
"source": [
644659
"Når vi jobber med numeriske beregninger, kan det være mer effektivt å bruke numpy-arrays i stedet for lister. Numpy er et bibliotek for numeriske beregninger i Python som gir oss muligheten til å jobbe med store datasett på en effektiv måte. Numpy-arrays er optimalisert for numeriske operasjoner og kan utføre operasjoner på hele arrays samtidig, noe som gjør dem mye raskere enn lister for store datasett.\n",
@@ -654,7 +669,7 @@
654669
{
655670
"cell_type": "code",
656671
"execution_count": null,
657-
"id": "56",
672+
"id": "57",
658673
"metadata": {},
659674
"outputs": [],
660675
"source": [
@@ -663,15 +678,15 @@
663678
},
664679
{
665680
"cell_type": "markdown",
666-
"id": "57",
681+
"id": "58",
667682
"metadata": {},
668683
"source": [
669684
"Fortsett til [02_numpy_matplotlib.ipynb](./02_numpy_matplotlib.ipynb) for å lære mer om numpy og hvordan du kan bruke det til numeriske beregninger i Python."
670685
]
671686
},
672687
{
673688
"cell_type": "markdown",
674-
"id": "58",
689+
"id": "59",
675690
"metadata": {},
676691
"source": []
677692
}

0 commit comments

Comments
 (0)