Vi lägger grunden för laboration 3 genom att titta på sammansatta datatyper (listor, strängar, tupler, dictionaries) som vi bearbetar iterativt och rekursivt.
Här visas ett urval av uppgifter som kan förekomma under seminariet. Syftet är att du ska få chansen att förbereda dig på några övningar eller gå tillbaka och repetera övningar i efterhand. Seminarieledarna kommer oftast att lägga in ytterligare uppgifter. Titta gärna på materialet för andra inriktningar om du vill ha fler övningar.
Följande kapitel i studiematerial förberedde för laboration 2 och kommer tas upp mer under det här seminariet:
Följande kapitel i studiematerialet förbereder för laboration 3 och det här seminariet:
En smart gräsklippare måste hålla koll på var den har klippt för att optimera sin väg över gräsmattan. Datan beskrivs som en tvådimensionell lista av booleska värden där true betyder klippt och false betyder oklippt. För en ny smart algoritm behöver den en lista på koordinaterna för alla oklippta platser istället för 2d-listan.
Skriv en funktion find_uncut
som givet en lista på formatet
[
[False, True, True, False, ...]
.
.
.
[True, False, True, True, ...]
]
Returnerar en lista av tuples av koordinater för alla oklippta rutor.
Körexempel:
>>> find_uncut( [
[True, False, True, False],
[False, False, True, True],
[True, False, False, True],
[False, True, True, True]
]
))
[(1, 0), (3, 0), (0, 1), (1, 1), (2, 1), (2, 2), (0, 3)]
def min_max(seq):
if not seq:
return (None, None)
if len(seq) == 1:
return (seq[0], seq[0])
(l_min, l_max) = min_max(seq[1:])
if seq[0] < l_min:
l_min = seq[0]
if seq[0] > l_max:
l_max = seq[0]
print("min: ", l_min, " max: ", l_max)
return (l_min, l_max)
- Funktionen körs med [3, 1, 2] som indata. Vad skrivs ut av print-satsen? Vad returnerar funktionen?
- Går funktionen att köra med [1, 2, "abc"] som indata? Varför?
- Går funktionen att köra med (1, 2, 3) som indata? Varför?
Skriv en rekursiv och en iterativ funktion som tar en sträng och returnerar uruvida strängen är ett palindrom, alltså om strängen är densamma framlänges som baklänges.
Vad gör följande funktion?
def dict_func(dict):
result = {}
for key in dict:
if dict[key] in result:
result[dict[key]].append(key)
else:
result[dict[key]] = [key]
return result
Sidansvarig: Peter Dalenius
Senast uppdaterad: 2025-09-09