Göm meny

Pythonuppgift 1.2

Skriv lösningarna till uppgifterna i en och samma fil och testa koden själv innan du använder rättningsskriptet. Att kunna testa sin kod är en viktig del av att programmera!

Att lära dig från uppgifterna

  • Förstå vad en lista är och hur de används.
  • Förstå begreppet slicing
  • Förstå skillnaden mellan att skapa en ny lista och modifiera en existerande

Godkänt

För att få godkänt krävs 70 poäng. Försök dock att lösa alla uppgifter då inte alla fel upptäcks av rättningsskriptet men om ni har lite marginal kan ni kanske bli godkända även om assistenten som rättar hittar något sådant fel.

Uppgift 1.2.1 (5p per deluppgift)

Listor är en datatyp i Python som hanterar ordnade sekvenser av värden. Man kan både läsa och ändra ett värde på en specifik plats i en lista med hjälp av platsens index.

  • a) Skriv en funktion second_in_list(values) som tar in en lista som argument och returnerar det andra elementet i listan.
  • b) Skriv en funktion last_in_list(values) som tar in en lista som argument och returnerar det sista elementet i listan.
  • c) Skriv en funktion second_last_in_list(values) som tar in en lista som argument och returnerar det näst sista elementet i listan.
  • d) Skriv en funktion n_in_list(values, n) som tar in en lista och ett tal som argument och returnerar elementet på index n i listan

Namngivning: Namnen på variabler är viktiga för läsbarheten hos källkod. Om du har en lista är det förmodligen för att du kommer använda flera värden. En bra regel att följa är därför att döpa variabler som refererar till listor till ett substantiv i plural, där substantivet är en bra beskrivning på innehållet i listan.

Uppgift 1.2.2 (10p per deluppgift)

Ofta är man inte intresserad av att plocka ut ett värde i en lista utan man vill plocka ut delar av listan. Använd slice notation för att lösa nedanstående uppgifter. Se Common Sequence Operations.

  • a) Skriv en funktion three_first_in_list(values) som tar in en lista som argument och returnerar de tre första elementen i listan.
  • b) Skriv en funktion three_last_in_list(values) som tar in en lista som argument och returnerar de tre sista elementeten i listan.
  • c) Skriv en funktion but_five_last_in_list(values) som tar in en lista som argument och returnerar allting förutom de 5 sista elementen i listan.
  • d) Skriv en funktion every_other_in_list(values) som tar in en lista som argument och returnerar vartannat element i listan (det vill säga elementen på index 0, 2, 4, 6, …).
  • e) Skriv en funktion two_around_n_in_list(values, n) som tar in en lista och ett heltal som argument och returnerar en lista som innehåller de två elementen före n, följt av elementet på index n och sist de två elementen efter index ´n´. Exempel: ´two_around_n_in_list([6, 7, 8, 9, 10, 11, 12], 3)´ ska alltså returnera ´[7, 8, 9, 10, 11]´

Uppgift 1.2.3 (10p)

Skriv en funktion new_list_with_n(values, n) som tar in en lista och ett element och returnerar en ny lista som innehåller samma element som values men där n ligger sist.

Den ursprunliga listan får inte modifieras. Det vill säga, använd inte metoden .append().

Exempel

>>> l = [1, 2, 3]
>>> new_list_with_n(l, "hej")
[1, 2, 3, 'hej']
>>> print(l)
[1, 2, 3]

Tips: Använd operatorn +.

Uppgift 1.2.4 (10p)

Skriv en funktion append_n_to_list(values, a_value) som tar in en lista och ett element och ändrar listan values så att a_value ligger sist. Returnera även den ändrade listan.

Exempel

>>> lst1 = [1, 2, 3, 4, 5, 6]
>>> print(lst1)
[1, 2, 3, 4, 5, 6]
>>> append_n_to_list(lst1,7)
[1, 2, 3, 4, 5, 6, 7]
>>> print(lst1)
[1, 2, 3, 4, 5, 6, 7]

Tips: Använd list-metoden .append(). list.append()

Uppgift 1.2.5 (5p)

Skriv en funktion insert_4_on_pos_3(values) som tar in en lista och skjuter in heltalet 4 på index 3 i ursprungslistan. Elementen från och med index 3 ska bli förskjutna med ett steg. Returnera den modifierade listan.

Exempel:

>>> lst1 = [1, 2, 3, 5, 6]
>>> print(lst1)
[1, 2, 3, 5, 6]
>>> insert_4_on_pos_3(lst1)
[1, 2, 3, 4, 5, 6]
>>> print(lst1)
[1, 2, 3, 4, 5, 6]

Tips: Använd list-metoden .insert(). list.insert()

Uppgift 1.2.6 (5p)

Skriv en funktion extend_vals_to_list(values1, values2) som tar in två listor och lägger elementen i values2 sist i values1. Returnera den ändrade listan.

Exempel

>>> lst1 = [1, 2, 3]
>>> lst2 = [4, 5, 6]
>>> extend_vals_to_list(lst1, lst2)
[1, 2, 3, 4, 5, 6]
>>> print(lst1)
[1, 2, 3, 4, 5, 6]

Tips: Använd list-metoden .extend(). list.insert()

Uppgift 1.2.7 (5p)

Skriv en funktion remove_from_third_in_list(values) som tar bort alla element från och med element 3 i values och returnerar den modifierade listan.

Tips: https://docs.python.org/3/tutorial/datastructures.html#the-del-statement

Exempel:

>>> lst1 = [1, 2, 3, 5, 6, 7]
>>> print(lst1)
[1, 2, 3, 5, 6]
>>> remove_from_third_in_list(lst1)
[1, 2]
>>> print(lst1)
[1, 2]

Uppgift 1.2.8 (5p)

Skriv en funktion concatenate_lists(values1, values2) som tar två listor och returnerar en ny lista som är en samanslagning av values1 och values2. Det vill säga först alla element i lista 1 följt av alla element i lista 2. Du får inte modifiera values1 eller values2.

Exempel:

>>> lst1 = [1, 2, 3]
>>> lst2 = [4, 5, 6]
>>> concatenate_lists(lst1, lst2)
[1, 2, 3, 4, 5, 6]
>>> print(lst1)
[1, 2, 3]
>>> print(lst2)
[4, 5, 6]

Uppgift 1.2.9 (15p)

Python har en modul som innehåller färdiga funktioner som man kan använda när man vill ha med slumpen på något sätt i sin kod.

Importera modulen random. Skriv funktionen select_random(values) som väljer ut ett slumpmässigt värde bland de som finns i listan values och returnera det. Använd funktionen random.choice().


Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2023-01-15