ÖVNINGSUPPGIFT

Uppgift 8 - Variabelbyte

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: print(), Variabler

Byt plats på variabler

Kod-Kalle skriver ett program där han skapar variablerna a = 1 och b = 4. Han vill sedan byta plats på variablerna så att b = 1 och a = 4. Han skriver följande program.

a = 1
b = 4
print(a)
print(b)
a = b
b = a
print(a)  # Ska skriva ut 4
print(b)  # Ska skriva ut 1

Vad gör Kod-Kalle för fel? Hur ska Kod-Kalle göra för att få programmet att fungera?

Ledtråd

När a = b körs byts värdet som namnet a refererar till från 1 till 4.

När b = a sedan körs får b också värdet 4. En tillfällig variabel kan bevara det gamla a-värdet.

Svar

Förklaring: 

När variabelbytet görs så sätter Kod-Kalle a = b och b = a. Problemet är att när man gör tilldelningen a = b, så skrivs värdet på a över så att det inte längre finns. Utskriften blir alltså:

1
4
4
4

Lösningen är att använda sig av en tredje variabel som man temporärt sparar undan värdet i. Exempelvis:

a = 1
b = 4
print(a)
print(b)
c = a
a = b
b = c
print(a)  # Ska skriva ut 4
print(b)  # Ska skriva ut 1

Vilket ger:

1
4
4
1

Python har också en kortare lösning med samtidig tilldelning:

a = 1
b = 4
a, b = b, a
print(a)  # 4
print(b)  # 1