Jakke Postad 25 September , 2006 Rapport Postad 25 September , 2006 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 ? Citera
morberg Postad 25 September , 2006 Rapport Postad 25 September , 2006 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? Citera
Svinto Postad 25 September , 2006 Rapport Postad 25 September , 2006 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å. Citera
morberg Postad 25 September , 2006 Rapport Postad 25 September , 2006 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. Citera
Svinto Postad 25 September , 2006 Rapport Postad 25 September , 2006 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! Citera
morberg Postad 25 September , 2006 Rapport Postad 25 September , 2006 Jag med! Perfekt, då ska vi bara få Jakke att tänka lite också så är vi klara sen. Citera
Jakke Postad 25 September , 2006 Författare Rapport Postad 25 September , 2006 Hej, tack för den 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. Citera
Jakke Postad 25 September , 2006 Författare Rapport Postad 25 September , 2006 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. ^^ Citera
Svinto Postad 25 September , 2006 Rapport Postad 25 September , 2006 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? Citera
morberg Postad 25 September , 2006 Rapport Postad 25 September , 2006 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). Citera
Jakke Postad 25 September , 2006 Författare Rapport Postad 25 September , 2006 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 ^^ Citera
Svinto Postad 25 September , 2006 Rapport Postad 25 September , 2006 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! Citera
cheunce Postad 25 September , 2006 Rapport Postad 25 September , 2006 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. Citera
Jakke Postad 27 September , 2006 Författare Rapport Postad 27 September , 2006 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 Citera
Svinto Postad 27 September , 2006 Rapport Postad 27 September , 2006 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. Citera
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.