Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Listeadfærd i Funktioner | Funktioner
Introduktion til Python

Stryg for at vise menuen

book
Listeadfærd i Funktioner

Lad os undersøge arbejde med lister inde i funktioner. Selvom det ligner arbejdet med tal, er der nogle vigtige detaljer, du skal være opmærksom på.

Lister er mutable (foranderlige), hvilket betyder, at enhver ændring foretaget på en liste inde i en funktion også vil påvirke den oprindelige liste uden for funktionen, hvis den sendes direkte.

For at undgå dette kan du bruge copy()-metoden med enhver muterbar datatype. På denne måde opretter du en shallow copy (overfladisk kopi) af listen, så du kan ændre en kopi i stedet for originalen. Dette sikrer, at ændringer foretaget i funktionen ikke påvirker den oprindelige liste.

1234567891011121314
def add_strawberry(original_list): list_copy = original_list.copy() # Create a copy of the original list list_copy.append("Strawberry") # Modify the copied list return list_copy # Original list fruits = ["Apple", "Banana", "Cherry"] # Call the function new_fruits = add_strawberry(fruits) # Check the results print("Original list:", fruits) # ['Apple', 'Banana', 'Cherry'] print("Modified list:", new_fruits) # ['Apple', 'Banana', 'Cherry', 'Strawberry']
copy

I dette eksempel forbliver den oprindelige fruits-liste uændret, fordi copy() blev brugt. Uden copy() ville ændringer af listen inde i funktionen også have ændret den oprindelige fruits-liste.

Opgave

Swipe to start coding

Opret en funktion, der anvender en 10% rabat på produktpriser over $2.00, uden at ændre den oprindelige liste.

  • Definér en funktion apply_discount(prices), der tager en liste af priser.
  • Lav en kopi af prices inde i funktionen og tildel den til prices_copy.
  • Brug en for-løkke med indeks-iteration (range(len(prices_copy))) for at gennemgå den kopierede liste.
  • Hvis en pris er større end 2.00, anvendes en 10% rabat.
  • Returnér den opdaterede prices_copy-liste.

Outputkrav

  • Funktionen skal returnere den nye liste med rabatterede priser.
  • Udskriv resultatet med:
    Updated product prices: <$updated_prices>

Bemærk

Brug indeksbaseret iteration for at sikre, at listen ændres korrekt: for index in range(len(prices)): ændrer elementerne direkte, i modsætning til for price in prices:.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 4

Spørg AI

expand
ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

book
Listeadfærd i Funktioner

Lad os undersøge arbejde med lister inde i funktioner. Selvom det ligner arbejdet med tal, er der nogle vigtige detaljer, du skal være opmærksom på.

Lister er mutable (foranderlige), hvilket betyder, at enhver ændring foretaget på en liste inde i en funktion også vil påvirke den oprindelige liste uden for funktionen, hvis den sendes direkte.

For at undgå dette kan du bruge copy()-metoden med enhver muterbar datatype. På denne måde opretter du en shallow copy (overfladisk kopi) af listen, så du kan ændre en kopi i stedet for originalen. Dette sikrer, at ændringer foretaget i funktionen ikke påvirker den oprindelige liste.

1234567891011121314
def add_strawberry(original_list): list_copy = original_list.copy() # Create a copy of the original list list_copy.append("Strawberry") # Modify the copied list return list_copy # Original list fruits = ["Apple", "Banana", "Cherry"] # Call the function new_fruits = add_strawberry(fruits) # Check the results print("Original list:", fruits) # ['Apple', 'Banana', 'Cherry'] print("Modified list:", new_fruits) # ['Apple', 'Banana', 'Cherry', 'Strawberry']
copy

I dette eksempel forbliver den oprindelige fruits-liste uændret, fordi copy() blev brugt. Uden copy() ville ændringer af listen inde i funktionen også have ændret den oprindelige fruits-liste.

Opgave

Swipe to start coding

Opret en funktion, der anvender en 10% rabat på produktpriser over $2.00, uden at ændre den oprindelige liste.

  • Definér en funktion apply_discount(prices), der tager en liste af priser.
  • Lav en kopi af prices inde i funktionen og tildel den til prices_copy.
  • Brug en for-løkke med indeks-iteration (range(len(prices_copy))) for at gennemgå den kopierede liste.
  • Hvis en pris er større end 2.00, anvendes en 10% rabat.
  • Returnér den opdaterede prices_copy-liste.

Outputkrav

  • Funktionen skal returnere den nye liste med rabatterede priser.
  • Udskriv resultatet med:
    Updated product prices: <$updated_prices>

Bemærk

Brug indeksbaseret iteration for at sikre, at listen ændres korrekt: for index in range(len(prices)): ændrer elementerne direkte, i modsætning til for price in prices:.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 4
Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Vi beklager, at noget gik galt. Hvad skete der?
some-alt