Menukar Nilai Dua Variabel di Python (Swap Variables) + Latihan 3 Variabel
Menukar nilai dua variabel (swap variables) adalah latihan sederhana untuk memahami urutan penugasan di Python. Kamu akan mempelajari mengapa cara langsung bisa gagal, lalu mencoba cara dengan variabel sementara dan cara ringkas Python.
Video berikut memperagakan pertukaran nilai dengan analogi gelas. Penjelasan dan contoh code juga tersedia di bawah video.
1. Analogi Dua Gelas Air
Bayangkan Gelas A berisi teh manis dan Gelas B berisi kopi susu. Kamu ingin menukar isinya tanpa mencampurkan kedua minuman. Gunakan satu gelas cadangan:
- Tuangkan teh dari Gelas A ke gelas cadangan.
- Tuangkan kopi dari Gelas B ke Gelas A.
- Tuangkan teh dari gelas cadangan ke Gelas B.
Gelas cadangan membantu mengingat nilai yang perlu disimpan lebih dahulu. Namun, analogi ini tidak menggambarkan memori Python secara harfiah: temp = a tidak mengosongkan a. Nama temp dan a sama-sama merujuk ke nilai yang sama sampai salah satunya diberi nilai baru.
2. Kesalahan Umum: Menukar Secara Berurutan
Contoh keliru: dua baris penugasan berikut dapat dijalankan, tetapi tidak menghasilkan pertukaran yang kita inginkan.
a = 1
b = 2
# Contoh keliru: a berubah sebelum nilai awalnya disimpan.
a = b
b = a
print("a =", a)
print("b =", b)
Output:
a = 2
b = 2
Python menjalankan kedua penugasan tersebut sesuai urutan. Setelah a = b, nilai yang dapat diakses melalui a sudah menjadi 2. Baris b = a kemudian memakai nilai 2 itu juga; nilai awal a belum disimpan untuk dipakai kembali.
3. Solusi Klasik: Variabel Sementara temp
Simpan nilai awal a ke variabel sementara bernama temp, lalu lakukan pertukaran. Kita bisa langsung menulis temp = a; tidak perlu mendahuluinya dengan temp = None.
a = 1
b = 2
temp = a # Simpan nilai awal a.
a = b
b = temp
print("a =", a)
print("b =", b)
Output:
a = 2
b = 1
Alur perubahan nilai
| Langkah | temp | a | b |
|---|---|---|---|
| Nilai awal | Belum dibuat | 1 | 2 |
temp = a | 1 | 1 | 2 |
a = b | 1 | 2 | 2 |
b = temp | 1 | 2 | 1 |
Perhatikan bahwa temp tetap bernilai 1 setelah pertukaran selesai. Penugasan tidak memindahkan isi seperti menuangkan cairan dari satu gelas ke gelas lain.
4. Cara Ringkas Python: a, b = b, a
Python menyediakan penugasan beberapa target dalam satu pernyataan. Untuk menukar dua nilai, tulis a, b = b, a:
a = 1
b = 2
a, b = b, a
print("a =", a)
print("b =", b)
Output:
a = 2
b = 1
Python mengevaluasi sisi kanan terlebih dahulu, yaitu nilai awal b dan a: 2 dan 1. Setelah itu, kedua nilai tersebut ditetapkan ke target di sisi kiri sesuai urutannya.
- Nilai pertama, 2, ditetapkan ke
a. - Nilai kedua, 1, ditetapkan ke
b.
Karena sisi kanan dibaca terlebih dahulu, nilai awal yang diperlukan untuk pertukaran masih tersedia. Cara ini ringkas dan umum dipakai untuk menukar dua variabel di Python.
5. Latihan: Menukar Tiga Variabel Secara Melingkar
Mulailah dengan a = 10, b = 20, dan c = 30. Putar nilainya dengan arah berikut:
- Nilai awal
cmenjadi nilai barua. - Nilai awal
amenjadi nilai barub. - Nilai awal
bmenjadi nilai baruc.
Target akhir: a = 30, b = 10, dan c = 20. Pikirkan urutannya sebelum membuka pembahasan.
Lihat pembahasan dan solusi
Solusi 1: Simpan nilai awal b
Cukup gunakan satu variabel sementara. Simpan nilai awal b sebelum b diisi dengan nilai a.
a = 10
b = 20
c = 30
temp = b # Simpan b sebelum namanya diberi nilai baru.
b = a
a = c
c = temp
print("a =", a)
print("b =", b)
print("c =", c)
Output:
a = 30
b = 10
c = 20
Alternatif: Simpan nilai awal a
Kamu juga dapat menyimpan a terlebih dahulu. Urutan penugasan berikutnya perlu disesuaikan agar setiap nilai awal masih tersedia saat dibutuhkan.
a = 10
b = 20
c = 30
temp = a
a = c
c = b
b = temp
print("a =", a)
print("b =", b)
print("c =", c)
Output:
a = 30
b = 10
c = 20
Solusi 2: Penugasan beberapa target
Tulis nilai sumber di sisi kanan sesuai urutan targetnya. Untuk target a, b, c, urutan sumbernya adalah c, a, b.
a = 10
b = 20
c = 30
a, b, c = c, a, b
print("a =", a)
print("b =", b)
print("c =", c)
Output:
a = 30
b = 10
c = 20
Sisi kanan dibaca sebagai 30, 10, dan 20 sebelum nilai-nilai itu ditetapkan ke a, b, dan c. Hasilnya sama dengan kedua solusi sebelumnya.
Rangkuman
- Penugasan
=mengikat nama ke objek; penugasan ulang mengubah objek yang dirujuk nama tersebut. a = blalub = agagal menukar contoh di atas karena nilai awalabelum disimpan.- Variabel
tempmembantu menyimpan nilai awal.temp = Nonetidak wajib. - Gunakan
a, b = b, auntuk pertukaran ringkas, ataua, b, c = c, a, buntuk rotasi seperti latihan.
Rujukan: penugasan dalam Python dan urutan evaluasi ekspresi.

Leave a Reply