Meddelande

Du befinner dig just nu på en äldre version av Pluggakuten, gamla.pluggakuten.se. Nya Pluggakuten lanserades den 6 februari 2017 och du finner forumet på www.pluggakuten.se.

På gamla.pluggakuten.se kan du fortfarande läsa frågorna och svaren som ställts, men du kan inte skapa ett nytt konto eller nya trådar. Nya frågor och nytt konto skapar du på det nya forumet, välkommen dit!

Python uppgifter (lista, rätta en kod och rekursiv funktion)

wow_08
Medlem

Offline

Registrerad: 2016-02-16
Inlägg: 52

Python uppgifter (lista, rätta en kod och rekursiv funktion)

Hej,

Jag skrev precis en tenta i Python och det fanns tre (av 10) uppgifter som jag inte kunde klura ut (suck). Eftersom att jag är väldigt nyfiken på hur lösningen ser ut undrar jag ifall någon kan hjälpa mig.

1. Skriv en funktion , parseList, som tar en lista som argument samt ett heltal n. Funktionen beräknar längden av alla listor. Längden av de listor som är strikt större än n returneras, konkaterande till en enda stäng. Ex:

parseList([[1,2,3],[2,2],[1], [3,5,6,4]],2)  --> '34' 
(den tar alltså längden av  [1,2,3] och [2,3,6,4] och summerar dessa)

2. Skriv en rekursiv funktion, sumEven, som tar en lista av tal samt argument och returnerar summan av talen på jämna index (index börjar på 0)    exempel: sumEven([1,2,3,4,5,6])--> 9 (den tar alltså 2+4+6)

3. Följande kod tar en lista samt argument och returnerar ett par, där det första elementet i paret är det minsta värdet från listan samt det andra elementet är det största värdet. Vi antar att "lst" innehåller heltal.
Koden nedan skall rättas:

def minMax(lst):
    min=0
    max=min
    i=1
    while i<=len(lst):
        i=i+1
        if lst[i]< min:
          min=lst[i]
        if lst[i] > max:
          max=lst[i]
    print (min,max)


Som sagt, skrev precis tentan och är allmänt nyfiken på lösningen.  Trevlig helg!

 
Henrik E
Medlem

Offline

Registrerad: 2015-09-22
Inlägg: 3189

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)


def parseList(listan,n):
    y=""
    for x in listan:
        if len(x)<=n: continue
        y+=str(len(x))
    return y   

def sumEven(listan):
    if len(listan)<2: return 0
    return listan[1]+ sumEven(listan[2:])

Senast redigerat av Henrik E (2016-12-17 07:22)

 
Henrik E
Medlem

Offline

Registrerad: 2015-09-22
Inlägg: 3189

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

min=0 ska vara min=lst[0]
i=1 ska vara i=0
while i <= len(lst): ska vara while i<len(lst):

 
wow_08
Medlem

Offline

Registrerad: 2016-02-16
Inlägg: 52

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

Tusen tack, trodde att det var mycket svårare.

 
wow_08
Medlem

Offline

Registrerad: 2016-02-16
Inlägg: 52

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

Hej igen,

eftersom att du är du bra på Python, skulle du kunna visa en lösning på denna (också från tentan)? Vill se om jag ens tänkte rätt.

Vi vill göra en klass MutuableString vars insatser ska representera en modifierbar sträng (strängar är normalt inte modifierbara i Python). Klassen ska deklarera metoderna getString, setString och setCharAt samt initierare/konstruktor. Konstruktorn ska ta strängens initiala värde som argument. Metoden getString ska ta som parameter enny sträng, som ersätter den gamla i sin helhet. Metoden setCharAt ska ta ett tecken som argument samt ett index. Den ska byta ut tecknet på angivet index mot tecknet som tas som parameter.

 
wow_08
Medlem

Offline

Registrerad: 2016-02-16
Inlägg: 52

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

class MutuableString:
       def __init__(self, getString, setString, setCharAt):
              self.getString=getString
              self.seString=setString
              self.setCharAt=setCharAt

 
Henrik E
Medlem

Offline

Registrerad: 2015-09-22
Inlägg: 3189

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

Visa hur du har försökt!

 
Henrik E
Medlem

Offline

Registrerad: 2015-09-22
Inlägg: 3189

Re: Python uppgifter (lista, rätta en kod och rekursiv funktion)

Förlåt, du har ju visat hur du försökt. Meningen är att dom tre metoderna ska definieras i klassen. Du skrev nog fel, setString ska väl sätta en ny sträng och getString ska returnera strängen. Konstruktorn (alltså __init__) ska ta ett enda argument (förutom self).

class M(object):
    w=[] # lista av tecken
    def __init__(self,s):
        self.w=list(s)
    def getString(self):
        return "".join(self.w)
    def setString(self,s):
        self.w=list(s)
    def setCharAt(self,x,k):
        self.w[k]=x

 


Sidfot

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Powered by Mattecentrum
 |  Denna sida använder cookies |  Kontakta oss |  Feedback |