NemProgrammering.dk logo

Løkker i Python

Lær Python programmering » Løkker i Python # 9
Inkluderet:
Livstidsadgang
27 videolektioner
7 timers undervisning
Stil spørgsmål
Kursusbevis

Information om denne video

Underviser: Simon Rotendahl   Video: 18:48   Lektion nr. 9 af 27

Hvordan håndterer jeg lister?

I videoen her skal vi kigge på løkker, endnu en fundamental del af programmering. Løkker bruger vi når vi vil gøre en ting flere gange, når vi vil søge efter noget i en samling, og meget mere. En lykke fungere ved at vi bliver ved med at køre et stykke kode, indtil en betingelse er mødt. For for loops vil betingelsen være at vi stopper når vi har kørt løkken et bestemt antal gange. For while loops vil betingelsen være et betinget udtryk (som vi har set tidligere).

Det oplagte eksempel for løkker, er lister. Med en løkke kan vi gå igennem alle elementer i en liste, og f.eks ligge dem sammen, se hvor mange tal er lige, se hvor mange strenge indeholde ordet ‘øl’. Løkker er essentielle for programmering, så jeg opfordre dig kraftigt, til at øve dig i det.

Næste video handler om dictionaries, en variation på lister!

Spørgsmål og kommentarer

Kun medlemmer med adgang til dette kursus kan stille spørgsmål og kommentere. Bliv medlem her!

  • siger:

    Jeg har lidt svært ved at hitte rede i, hvornår man skal bruge en funktion hhv. løkke. Eksempelvis har jeg brugt begge ting til at finde gennemsnitsalder (jeg synes, at antallet af tegn og linjer er tæt på at være det samme…). Hvad er forskel på løkker og funktioner? fordele/ulemper ved dem? og hvornår skal man bruge det ene fremfor det andet.

    #Gennemsnit vha. for-løkke
    A = [10,20,30]
    sum = 0

    for i in range(len(A)):
    sum = sum + A[i]

    gennemsnit = sum/len(A)
    print(“Gennemsnitsalder:”, gennemsnit)

    #Gennemsnit vha. funktion
    A = [10,20,30]

    def gennemsnit(A):
    sum = 0
    for i in A:
    sum += i
    gennemsnit = sum/len(A)
    return gennemsnit

    print(“Gennemsnitsalder:”, gennemsnit(A))

    1. Maja A. siger:

      Og den endnu kortere kode:

      A = [10,20,30]
      sum = 0

      for i in A:
      sum += i

      gennemsnit = sum/len(A)
      print(“Gennemsnitsalder:”, gennemsnit)

    2. Simon R. siger:

      Hej,

      Du skal bruge en funktion når du gerne vil gøre en ting flere gange. Så i dit tilfælde her, hvis du bare fil finde gennemsnittet af en enkelt liste, så er det hip som hap om du laver en funktion eller bruger en løkke, men lad os sige at du har fået flere lister, et eksempel kunne være at du skal finde ud af om hvor mange penge et firma bruger pr. måned, pr. år, over de sidste 4 år.
      Så du har 4 lister en for hvert år, og hver liste har så 12 elementer (et for hver måned). Her ville du så skulle finde gennemsnittet pr. år, og her er det rart at have en funktion, for så skal du kun skrive koden en gang, og så kan du bare sige
      gennemsnit(2024)
      gennemsnit(2023)
      gennemsnit(2022)
      gennemsnit(2021)

      Jeg håber det gav mening, ellers må du sige til :)

      Mvh.
      Simon

  • Preben H. siger:

    Hej Simon,

    Du nævner på et tidspunkt, at vi kan tjekke tidligere slides, mener du der videoer eller har vi også adgang til slides et sted?

    1. Simon R. siger:

      Hej Preben,

      Jeg mener de tidligere videoer :)

      Mvh.
      Simon

  • Tobias D. siger:

    Hey simon, jeg forstod endelig det hele fint og alting, men da vi lige vendte tilbage til sten saks papir ville min ikke break ved “Stop” jeg har prøvet at bruge .Capitalize og har også sikret jeg har skrevet stop korrekt. men det fortsætter bare med sten saks papir spillet. Kan du se dig klog på det?

    Sten = “Sten”
    Saks = “Saks”
    Papir = “Papir”

    while(True):

    ditValg = input(“Sten, Saks eller Papir? \n”)
    PCvalg = rnd.randint(1,3)

    if ditValg == “Stop”:
    break

    if ditValg == Sten:
    if PCvalg == 1:
    print(“I valgte begge sten”)
    elif PCvalg == 2:
    print(“Du vandt, sten vinder over saks”)
    else:
    print(“Du tabte, Papir vinder og sten.”)

    elif ditValg == Saks:
    if PCvalg == 1:
    print(“Du tabte, sten vinder over saks”)
    elif PCvalg == 2:
    print(“i valgte begge saks”)
    else:
    print(“Du vandt, saks vinder over papir.”)

    elif ditValg == Papir:
    if PCvalg == 1:
    print(“Du vandt, papir vinder over sten.”)
    elif PCvalg == 2:
    print(“Du tabte, Saks vinder over papir”)
    else:
    print(“I valgte begge papir “)
    else:
    print(“husk at skrive med stort.”)

    1. Tobias D. siger:

      Glem hvad jeg sagde, jeg har rettet fejlen, det var terminalen, der ikke kørte den opdaterede kode af en eller anden grund.

  • Tommy C. siger:

    Fik lige kodet lille fint gennemsnit program

    liste = {1,2,3,4}

    def gennemsnit(l):
    c = 0
    for i in l:
    c += i

    d = c/len(l)
    return d

    print(gennemsnit(liste))

    1. Simon R. siger:

      Super, og dejligt at hører at du prøver at lave nogle ting efter videoerne, det hjælper rigtig mht. At huske og forstå det

  • Rene M. siger:

    istedet for at, kun printe sum
    kan man så stoppe løkken
    eks :

    A[1,2,3,4]
    sum=0

    for i in range(len(A))
    sum=sum +A[i]
    if sum==3
    break

    eller måske

    if sum >=3
    aktiver port 13 på min arduino ….???

    1. Simon R. siger:

      Ja det kan du fint, du kan også lave det som en while løkke, så while (sum < 3)

  • Rene M. siger:

    fuck der er lang vej til video 27 ;o))…
    men det er fedt ;o)

    1. Simon R. siger:

      Det er dejligt at høre at du kan lide det.

      Ja der er ret meget indhold, det var vigtigt for mig at i fik noget for pengene :)

      1. Rene M. siger:

        det er et godt kursus , har aldrig programmeret før, men dette gør det sjovt ,O)

  • Allan C. siger:

    Hej Simon

    Tak for et super godt kursus ind til videre! :-)
    Jeg er løbet i mit første problem vedr. gennemsnitsalder.

    Denne virker fint:

    alder = [9,13,43,44]
    sum_alder = 0
    print(“Længde på listen alder:”,len(alder))
    for var_G in range(len(alder)):
    sum_alder = sum_alder + alder[var_G]
    print(“Samlet alder:”,sum_alder)
    sum_alder = sum_alder / len(alder)
    print(“Gennemsnitsalder i vores familie =”,sum_alder)

    Men når jeg prøver at lave det som en funktion, kan jeg ikke få det til at virke?:

    alder = [9,13,43,44]
    sum_alder = 0
    print(“Længde på listen alder:”,len(alder))
    def samlet_alder(liste_alder):
    for var_G in range(len(liste_alder)):
    sum_alder = sum_alder + liste_alder[var_G]
    print(“Samlet alder:”,sum_alder)
    return sum_alder
    samlet_alder(alder)
    sum_alder = sum_alder / len(alder)
    print(“Gennemsnitsalder i vores familie =”,sum_alder)

    Får følgende fejl jeg ikke kan gennemskue:
    local variable ‘sum_alder’ referenced before assignment

    1. Simon R. siger:

      Hej Allan,
      Tak for de pæne ord.

      Problemet kommer fra at sum_alder er defineret ude for din funktion. Du kan ikke som standard benytte variabler som er defineret udenfor funktioner, inde i funktioner. Du kan fikse dette på to måder:
      1) Hvis du gerne vil have dit variable udenfor, sådan at du kan bruge det bagefter, som du gør nu, så skal du inde i din funktion skrive “global sum_alder” på en linje (uden gåseøjne, det var bare lige for at vise præcis hvad du skal skrive). Dette fortæller din funktion at den skal bruge det variabel udenfor din funktion.
      2) Ellers så skal du definere dit variabel inde i funktionen, og så returnere det også.

      Du siger bare til hvis du har brug for mere forklaring, metode 2 nævnte jeg kun kort, så hvis du gerne vil det, må du lige skrive igen :)

      Mvh.
      Simon