Gå till innehåll

Recommended Posts

Postad

Hej, jag har ett problem med ett hemtal i en programmeringskurs.

Språket ät Python

 

2.2 Betrakta följande kod:

char_lista = [”s”, ”l”, ”a”, ”v”]

v = 0

h = len(char_lista)-1

while v < len(char_lista):

char_lista[h] = char_lista[v]

char_lista[v] = char_lista[h]

h = h – 1

v = v + 1

 

Det är tänkt att elementen i listan char_lista byter plats så att listan ser ut

som nedan efter while-satsen:

[”v”, ”a”, ”l”, ”s”]

Men det verkar som att koden gör inte som det är tänkt, vad är felet i koden?

Ändra koden så att det blir som det är tänkt.

 

 

 

Vad är problemet ? :)

Postad
Hej, jag har ett problem med ett hemtal i en programmeringskurs.

Språket ät Python

 

2.2 Betrakta följande kod:

char_lista = [”s”, ”l”, ”a”, ”v”]

v = 0

h = len(char_lista)-1

while v < len(char_lista):

char_lista[h] = char_lista[v]

char_lista[v] = char_lista[h]

h = h – 1

v = v + 1

 

Det är tänkt att elementen i listan char_lista byter plats så att listan ser ut

som nedan efter while-satsen:

[”v”, ”a”, ”l”, ”s”]

Men det verkar som att koden gör inte som det är tänkt, vad är felet i koden?

Ändra koden så att det blir som det är tänkt.

char_lista = [”s”, ”l”, ”a”, ”v”]

char_lista.reverse()

 

Python regerar. Men vill du ha lite mer hjälp med din läxa (dvs. om du vill lära dig något) får du förklara vad du inte förstår. Hur har du försökt lösa problemet själv? Varför blir det inte rätt?

Postad

char_lista[h] = char_lista[v]

char_lista[v] = char_lista[h]

 

Vad är problemet ? :)

Det där. Försök att lista ut vad som inte är speciellt lyckat med att göra så.

Jag tycker mig se ännu ett fel i exemplet.

Postad

char_lista[h] = char_lista[v]

char_lista[v] = char_lista[h]

 

Vad är problemet ? :)

Det där. Försök att lista ut vad som inte är speciellt lyckat med att göra så.

Jag tycker mig se ännu ett fel i exemplet.

Jag med! :)

Postad

Hej, tack för den :P

Det jag inte förstår är varför det inte funkar. Jag är helt färsk på python så har lite svårt att felsöka logiska problem :)

 

I första steget borde den byta ut första bokstaven mot den sista och i andra steget den andra mot den tredje men den gör inte det.

 

Jag vet inte vad det är jag inte förstår, tror att jag hade löst det då.

 

Tack iallafall

 

Men om du har tid får du gärna skriva vad som är felet i just den här koden.

Postad

char_lista[h] = char_lista[v]

char_lista[v] = char_lista[h]

 

Vad är problemet ? :)

Det där. Försök att lista ut vad som inte är speciellt lyckat med att göra så.

 

Försöker för fullt. ^^

Postad

I första steget borde den byta ut första bokstaven mot den sista och i andra steget den andra mot den tredje men den gör inte det.

Den sista bokstaven ersätts av samma bokstav som finns på den första platsen. Vad kommer då att finnas på sista bokstavens plats när du läser från den i nästa steg?

Postad
Jag vet inte vad det är jag inte förstår, tror att jag hade löst det då.

Prova att "torrköra" programmet och skriv ner exakt hur din lista kommer att se ut efter varje rad i programmet (eller kör programmet i en debugger och titta där istället).

Postad

Tack ska ni ha. Jag förstår vad felet är men inte hur man ändrar den här koden för att få det att funka men jag nöjer mig med reversefunktionen.

 

Nu ska jag plugga matte istället ^^

Postad

Problemet är att du skriver över ett värde innan du kopierar det. En enkel lösning är att helt enkelt spara värdet i en variabel innan det skrivs över. Sen kopierar du variabeln till rätt plats i listan.

 

Alltså:

1) lagra ett värde från listan i en variabel

2) kopiera ett värde från listan till platsen vars värde du kopierat

3) kopiera värdet från variabeln till platsen du kopierade från i 2

 

Det du gör är:

1) kopiera ett värde från listan till en annan plats i listan

2) kopiera värdet du redan kopierat till platsen du kopierade det ifrån

 

Du har redan skapat variabler, tilldelat dessa värden och indexerat listor i koden du skrev så det är inget nytt. Försök!

Postad
Problemet är att du skriver över ett värde innan du kopierar det. En enkel lösning är att helt enkelt spara värdet i en variabel innan det skrivs över. Sen kopierar du variabeln till rätt plats i listan.

 

Alltså:

1) lagra ett värde från listan i en variabel

2) kopiera ett värde från listan till platsen vars värde du kopierat

3) kopiera värdet från variabeln till platsen du kopierade från i 2

 

Det du gör är:

1) kopiera ett värde från listan till en annan plats i listan

2) kopiera värdet du redan kopierat till platsen du kopierade det ifrån

 

Du har redan skapat variabler, tilldelat dessa värden och indexerat listor i koden du skrev så det är inget nytt. Försök!

 

Om du inte förstå Svintos förklaring pga att det är en lista så kan man skriva om problemet till två variabler x och y istället.

 

Du vill att x ska få y:s värde och du vill att y ska få x:s värde.

 

x = "x"

y = "y"

 

x=y

y=x

 

Tänk efter vad det är som går fel och lös det. Sen kommer du förhoppningsvis kunna lösa problemet med de felaktiga listorna.

Postad

Tack för hjälpen sist.. jag har nytt problem nu dock :)

 

Jag har en highscore lista i en dictionary

 

highscore = {"Jakob":"100","Nisse":"75","Kalle":"50","Adam":"25","Svennnne":"10"}

 

Nu vill jag jämföra poängen i dict i en if sats, hur ska jag gå till väga för att få ut poängen ur dictionarien ?

 

alltså jag har gjort ett program som man när det är slut får ett poäng av

poängen sparar jag i en variabel

om poängen är större än poängen på position 4 i dictionarien ska if satsen köras.

 

Hoppas ni förstår vad jag menar :)

 

Tack på förhand

Postad

Du vill antagligen att poängen i din dictionary ska ha datatypen int så det är bättre att definera den med:

 

highscore = {"Jakob":100, "Nisse":75, "Kalle":50, "Adam":25, "Svennnne":10}

 

För att sen få ut t.ex. Adams poäng gör du helt enkelt:

 

highscore["Adam"]

 

Detta uttryck kommer då att motsvara heltalet 25.

 

Här finns mycket, bra, och enkel information om en hel del grundläggande pythongrejer.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Endast 75 max uttryckssymboler är tillåtna.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigerare

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...