Tujuan Praktikum
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
- Mengenal dan memahami tipe-tipe operator dasar pada bahasa pemrograman Python.
- Mengenal dan memahami derajat (prioritas eksekusi) operator dalam Python.
- Menerapkan operator aritmatika, perbandingan, penugasan, logika, bitwise, keanggotaan, dan identitas dalam program sederhana.
Persiapan
Kebutuhan praktikum:
- Editor Python (IDLE / PyCharm / VS Code)
- Google Colab (opsional, alternatif tanpa instalasi)
- Pemahaman variabel dan tipe data dari pertemuan sebelumnya
Konsep Singkat
Operator di dalam Python adalah simbol khusus yang berfungsi menjalankan suatu operasi tertentu, baik operasi aritmatika maupun operasi logika. Nilai yang dioperasikan oleh operator disebut operand. Python memiliki 7 jenis operator: aritmatika, perbandingan, penugasan, logika, bitwise, keanggotaan (membership), dan identitas.
Operator Aritmatika
| Operator | Simbol | Contoh | Penjelasan |
|---|---|---|---|
| Penjumlahan | + |
1 + 3 = 4 |
Menjumlahkan nilai dari masing-masing operand |
| Pengurangan | - |
4 - 1 = 3 |
Mengurangi operand kiri dengan operand kanan |
| Perkalian | * |
2 * 4 = 8 |
Mengalikan operand |
| Pembagian | / |
10 / 5 = 2 |
Membagi operand kiri dengan operand kanan |
| Sisa Bagi | % |
11 % 2 = 1 |
Sisa pembagian operand kiri oleh operand kanan |
| Pangkat | ** |
8 ** 2 = 64 |
Memangkatkan operand kiri dengan operand kanan |
| Pembagian Bulat | // |
10 // 3 = 3 |
Seperti pembagian biasa, tapi angka di belakang koma dihilangkan |
Operator Perbandingan
| Operator | Simbol | Contoh | Penjelasan |
|---|---|---|---|
| Sama dengan | == |
1 == 1 → True |
Benar jika kedua operand memiliki nilai sama |
| Tidak sama dengan | != |
2 != 2 → False |
Kebalikan dari kondisi sebenarnya |
| Lebih besar dari | > |
5 > 3 → True |
Benar jika operand kiri lebih besar |
| Lebih kecil dari | < |
5 < 3 → False |
Benar jika operand kiri lebih kecil |
| Lebih besar/sama dengan | >= |
5 >= 3 → True |
Benar jika operand kiri lebih besar atau sama |
| Lebih kecil/sama dengan | <= |
5 <= 3 → False |
Benar jika operand kiri lebih kecil atau sama |
Operator Penugasan
| Operator | Contoh | Penjelasan |
|---|---|---|
= |
a = 1 |
Memberikan nilai kanan ke variabel kiri |
+= |
a += 2 |
a = a + 2 |
-= |
a -= 2 |
a = a - 2 |
*= |
a *= 2 |
a = a * 2 |
/= |
a /= 4 |
a = a / 4 |
%= |
a %= 3 |
a = a % 3 |
**= |
a **= 3 |
a = a ** 3 |
//= |
a //= 3 |
a = a // 3 |
Operator Logika
| Operator | Penjelasan | Contoh | Hasil |
|---|---|---|---|
and |
True jika kedua operand True
|
True and True |
True |
or |
True jika salah satu operand True
|
True or False |
True |
not |
True jika operand False |
not False |
True |
Operator Bitwise
Operator bitwise menangani operasi logika bilangan biner dalam
bentuk bit. Bilangan biner hanya terdiri dari 0 dan
1; nilai desimal akan otomatis dikonversi (misalnya 7
desimal = 0111 biner).
| Operator | Nama | Contoh | Biner | Hasil (biner) | Hasil (desimal) |
|---|---|---|---|---|---|
& |
AND | 10 & 12 |
1010 & 1100 |
1000 |
8 |
| |
OR | 10 | 12 |
1010 | 1100 |
1110 |
14 |
^ |
XOR | 10 ^ 12 |
1010 ^ 1100 |
0110 |
6 |
~ |
NOT | ~10 |
~1010 |
0101 |
-11 (two's complement) |
<< |
Left shift | 10 << 1 |
1010 << 1 |
10100 |
20 |
>> |
Right shift | 10 >> 1 |
1010 >> 1 |
101 |
5 |
Operator bitwise tidak terlalu sering dipakai kecuali saat memproses bit-bit komputer secara langsung, dan membutuhkan pemahaman sistem bilangan biner (basis 2) vs desimal (basis 10).
Operator Keanggotaan (Membership)
| Operator | Penjelasan |
|---|---|
in |
Bernilai True jika suatu nilai ada di dalam
sequence
|
not in |
Bernilai True jika suatu nilai tidak ada di
dalam sequence
|
Operator Identitas
Operator identitas mengetahui apakah dua variabel memiliki nilai yang sama dan posisi yang sama di dalam memori (tidak semua nilai yang sama memiliki posisi yang sama di memori).
| Simbol | Tugas |
|---|---|
is |
True jika dua variabel identik dari segi nilai
maupun lokasi memori
|
is not |
True jika dua variabel tidak identik dari segi
nilai maupun lokasi memori
|
Komentar
Komentar adalah baris kode yang tidak dieksekusi,
digunakan untuk memberi keterangan pada script. Ditulis dengan
tanda pagar # diikuti teks komentar.
Derajat Operator / Prioritas Eksekusi
Python mengevaluasi ekspresi majemuk berdasarkan urutan prioritas — operator berprioritas lebih tinggi dikerjakan lebih dulu, kecuali ada tanda kurung.
Contoh: <code>x = 5 + 2 3</code> dievaluasi sebagai <code>5 + (2 3)</code> → <code>x = 11</code>. Namun <code>(5 + 2) * 3</code> → <code>x = 21</code>, karena tanda kurung berprioritas lebih tinggi dari perkalian.
Operator dalam tipe yang sama umumnya dievaluasi dari kiri ke
kanan (misal 5 - 2 + 3 = 6), kecuali operator unary
dan pangkat yang dievaluasi dari kanan ke kiri. Python juga
mendukung penugasan berantai (x = y = 0) dan
perangkaian perbandingan (1 <= x + y <= 10).
| Prioritas | Tipe | Simbol |
|---|---|---|
| 1 (tertinggi) | Member Access | Expr.member |
| 2 | Pemanggilan fungsi/method | Expr(...), Expr[...] |
| 3 | Eksponen | ** |
| 4 | Unary operator |
+expr, -expr, ~expr
|
| 5 | Perkalian dan Pembagian |
*, /, //,
%
|
| 6 | Penjumlahan, pengurangan | +, - |
| 7 | Bitwise shifting | <<, >> |
| 8 | Bitwise AND | & |
| 9 | Bitwise XOR | ^ |
| 10 | Bitwise OR | | |
| 11 | Perbandingan |
is, is not, ==,
!=, <, <=,
>, >=, in,
not in
|
| 12 | Operator logika NOT | not expr |
| 13 | Operator logika AND | and |
| 14 | Operator logika OR | or |
| 15 | Kondisi | value1 if Condition else value2 |
| 16 (terendah) | Penugasan |
=, +=, -=,
*=
|
Langkah 1 - Variabel dan Pengecekan Tipe Data
Program 2.1 (variable.py):
nama = 'Ahmad Budi'
usia = 24
sudah_menikah = True
print('nama:', nama)
print('usia:', usia)
print('sudah menikah:', sudah_menikah)
Jalankan, lalu catat apa yang tercetak di layar.
Program 2.2 (variable2.py) —
menambahkan pengecekan tipe data:
nama = 'Ahmad Budi'
usia = 24
sudah_menikah = True
print('nama:', nama)
print('usia:', usia)
print('sudah menikah:', sudah_menikah)
print(type(nama))
print(type(usia))
print(type(sudah_menikah))
Program 2.3 (variable3.py) — variasi
penulisan variabel:
# proses memasukan data ke dalam variabel
nama = "John Doe"
# proses mencetak variabel
print(nama)
# nilai dan tipe data dalam variabel dapat diubah
umur = 20 # nilai awal
print(umur) # mencetak nilai umur
type(umur) # mengecek tipe data umur
umur = "dua puluh satu" # nilai setelah diubah
print(umur) # mencetak nilai umur
type(umur) # mengecek tipe data umur
namaDepan = "Budi"
namaBelakang = "Susanto"
nama = namaDepan + " " + namaBelakang
umur = 22
hobi = "Berenang"
print("Biodata\n", nama, "\n", umur, "\n", hobi)
# contoh variabel lainnya
inivariabel = "Halo"
ini_juga_variabel = "Hai"
_inivariabeljuga = "Hi"
inivariabel222 = "Bye"
panjang = 10
lebar = 5
luas = panjang * lebar
print(luas)
Analisis: perhatikan bahwatype(umur)pada baris tengah program tidak dibungkusprint(), sehingga hasilnya tidak akan tercetak di layar saat file dijalankan sebagai script biasa (berbeda dengan mode interaktif/Shell). Ini adalah salah satu poin yang perlu dianalisis mahasiswa.
Langkah 2 - Tipe Data Dasar dan List
Program 2.4 (tipedata1.py):
# tipe data Boolean
print(True)
# tipe data String
print("Ayo belajar Python")
print('Belajar Python Sangat Mudah')
# tipe data Integer
print(20)
# tipe data Float
print(3.14)
# tipe data Complex
print(5j)
# tipe data List
print([1, 2, 3, 4, 5])
print(["satu", "dua", "tiga"])
# tipe data Tuple
print((1, 2, 3, 4, 5))
print(("satu", "dua", "tiga"))
# tipe data Dictionary
print({"nama": "Budi", "umur": 20})
# tipe data Dictionary dimasukkan ke dalam variabel biodata
biodata = {"nama": "Andi", 'umur': 21} # proses inisialisasi variabel biodata
print(biodata) # proses mencetak variabel biodata yang berisi tipe data Dictionary
print(type(biodata))
# fungsi untuk mengecek jenis tipe data, akan tampil <class 'dict'>
# yang berarti dict adalah tipe data dictionary
Setelah menjalankan program di atas, perhatikan tipe data mana saja yang belum dicontohkan (misalnya List belum ditampilkan secara mendalam) — lanjutkan ke Program 2.5.
Program 2.6 (tipedata3.py) —
mendefinisikan beberapa variasi List:
# list kosong
list_kosong = []
# list yang berisi kumpulan string
list_buah = ['Pisang', 'Nanas', 'Melon', 'Durian']
# list yang berisi kumpulan integer
list_nilai = [80, 70, 90, 60]
# list campuran berbagai tipe data
list_jawaban = [150, 33.33, 'Presiden Sukarno', False]
Sebuah list didefinisikan menggunakan tanda kurung siku
[ ], dan bisa berisi berbagai macam tipe data — baik
yang sejenis maupun berbeda-beda.
Program 2.7 (tipedata4.py) —
menampilkan isi List:
# list kosong
list_kosong = []
# list yang berisi kumpulan string
list_buah = ['Pisang', 'Nanas', 'Melon', 'Durian']
# list yang berisi kumpulan integer
list_nilai = [80, 70, 90, 60]
# list campuran berbagai tipe data
list_jawaban = [150, 33.33, 'Presiden Sukarno', False]
# cetak isi seluruh list
print('list_kosong:', list_kosong)
print('list_buah:', list_buah)
print('list_nilai:', list_nilai)
print('list_jawaban:', list_jawaban)
print("\n")
# cetak isi list tertentu
print(list_buah[0])
print(list_buah[2])
print(list_buah[1])
print(list_buah[3])
print("\n")
# cetak isi list menggunakan index negatif untuk mencetak
# dari belakang
print(list_buah[-1])
print(list_buah[-2])
print(list_buah[-3])
print(list_buah[-4])
# NB: yang perlu diperhatikan adalah: bahwa indeks negatif
# tidak dimulai dari 0, akan tetapi dimulai dari angka 1.
Analisis: apa fungsi print("\n") pada
program di atas? Perhatikan efeknya terhadap tampilan output antar
kelompok cetak.
Langkah 3 - Operator Bitwise dan Logika
Program 2.8 (Operator1.py) —
Operator Bitwise:
x = 10
y = 12
print('x berisi angka', x, 'desimal atau', bin(x), 'biner')
print('y berisi angka', y, 'desimal atau', bin(y), 'biner')
print('\n')
print('x & y :', x & y)
print('x | y :', x | y)
print('x ^ y :', x ^ y)
print('~x :', ~x)
print('x << 1 :', x << 1)
print('x >> 1 :', x >> 1)
Analisis: tuliskan makna dari tiap hasil program (&,|,^,~,<<,>>) berdasarkan representasi biner masing-masingxdany.
Program 2.9 (Operator2.py) —
Operator Logika:
print('Hasil dari True and True :', True and True)
print('Hasil dari True and False :', True and False)
print('Hasil dari False and True :', False and True)
print('Hasil dari False and False:', False and False)
print('\n')
print('Hasil dari True or True :', True or True)
print('Hasil dari True or False :', True or False)
print('Hasil dari False or True :', False or True)
print('Hasil dari False or False :', False or False)
print('\n')
print('Hasil dari not True :', not True)
print('Hasil dari not False :', not False)
# Contoh Operasi
hasil = (5 > 6) and (10 <= 8)
print(hasil)
hasil = ('budiluhur' == 'budiluhur') or (10 <= 8)
print(hasil)
hasil = not (10 < 10)
print(hasil)
hasil = ('budiluhur' == 'budiluhur') and (10 <= 8) or (1 != 1)
print(hasil)
Langkah 4 - Operator Identitas dan Keanggotaan
Program 2.10 (Operator3.py) —
Operator Identitas:
a = 5
b = 5
c = 6
print('a is b :', a is b)
print('a is c :', a is c)
print('a is not c :', a is not c)
print('\n')
i = 'Budi Luhur'
j = 'Budi Luhur'
print('i is j :', i is j)
print('i is not j :', i is not j)
print('\n')
x = ['a', 'b', 'c']
y = ['a', 'b', 'c']
print('x is y :', x is y)
print('x is not y :', x is not y)
Analisis: meskipunxdanymemiliki isi yang sama, mengapax is ybisa bernilaiFalse? Ini berkaitan dengan konsep bahwa dua objek List berbeda (walau isinya sama) menempati lokasi memori yang berbeda.
Program 2.11 (Operator4.py) —
Operator Keanggotaan:
foo = 'BudiLuhur'
print('foo :', foo)
print('\'i\' in foo :', 'i' in foo)
print('\'k\' not in foo :', 'k' not in foo)
print('\'d\' not in foo :', 'd' not in foo)
print('\n')
bar = ['a', 'b', 'c']
print('bar :', bar)
print('\'a\' in bar :', 'a' in bar)
print('\'a\' not in bar :', 'a' not in bar)
print('\'d\' not in bar :', 'd' not in bar)
print('\n')
baz = (12, 43, 102, 55)
print('baz :', baz)
print('102 in baz :', 102 in baz)
print('102 not in baz :', 102 not in baz)
print('35 not in baz :', 35 in baz)
Langkah 5 - Operator Perbandingan dan Penugasan
Program 2.12 (Operator5.py) —
Operator Perbandingan:
print(11 == 1)
print("CodeSaya" != "Python")
print(5 >= 0)
print("HODOR" == "hodor")
print(100 < (10 * 10))
Analisis: jelaskan logika tiap perbandingan di atas — perhatikan bahwa perbandingan string bersifat case sensitive ("HODOR"berbeda dengan"hodor").
Program 2.13 (Operator6.py) —
Operator Penugasan:
# penugasan pertama
a = 10
print('a = 10 -> ', a)
a += 5
print('a += 5 -> ', a)
a -= 3
print('a -= 3 -> ', a)
a *= 6
print('a *= 6 -> ', a)
a /= 8
print('a /= 8 -> ', a)
# karena a jadi float, kita ubah lagi menjadi integer
a = int(a)
a %= 9
print('a %= 9 -> ', a)
a //= 6
print('a //= 6 -> ', a)
a **= 1
print('a **= 1 -> ', a)
a &= 2
print('a &= 2 -> ', a)
a |= 3
print('a |= 3 -> ', a)
a ^= 4
print('a ^= 4 -> ', a)
a >>= 4
print('a >>= 4 -> ', a)
a <<= 2
print('a <<= 4 -> ', a)
Analisis: telusuri nilaialangkah demi langkah daria = 10hingga baris terakhir, termasuk saatasempat menjadifloatakibat pembagian/=dan dikembalikan keintsebelum operator bitwise (&=,|=,^=,>>=,<<=) diterapkan.
Pengujian
Periksa hasil praktikum dengan memastikan:
-
Program 2.2 (
variable2.py) mencetak<class 'str'>untuknama,<class 'int'>untukusia, dan<class 'bool'>untuksudah_menikah. -
Program 2.8 (Operator Bitwise) mencetak
x & y : 8,x | y : 14,x ^ y : 6. -
Program 2.10 (Operator Identitas) mencetak
x is y : Falsemeskipun isixdanysama. -
Program 2.13 (Operator Penugasan) menghasilkan nilai akhir
asesuai urutan operasi penugasan yang diterapkan.
Verifikasi cepat secara otomatis untuk operator bitwise:
x = 10
y = 12
assert (x & y) == 8
assert (x | y) == 14
assert (x ^ y) == 6
print("Semua pengujian lolos.")
Troubleshooting
| Masalah | Penyebab | Solusi | |
|---|---|---|---|
type(variabel) tidak menampilkan apa pun saat
program dijalankan sebagai file .py
|
type() dipanggil tanpa print(),
sehingga hanya bekerja di mode interaktif (Shell)
|
Bungkus dengan print(type(variabel)) agar
tampil di layar
|
|
Operator <> menghasilkan
SyntaxError
|
<> adalah operator tidak sama dengan pada
Python 2, sudah tidak didukung di Python 3
|
Gunakan != sebagai gantinya |
|
| Hasil filter majemuk logika tidak sesuai harapan |
Urutan evaluasi operator logika (not →
and → or) tidak diperhitungkan
|
Tambahkan tanda kurung eksplisit untuk memperjelas urutan,
misalnya (kondisi1) and (kondisi2)
|
|
x is y bernilai False padahal isi
kedua variabel sama
|
is membandingkan identitas/lokasi memori, bukan
nilai
|
Gunakan == jika yang dimaksud adalah
membandingkan nilai/isi
|
|
TypeError saat operator bitwise
(&, `
|
, dll) diterapkan pada float` |
Operator bitwise hanya berlaku untuk tipe Integer |
Konversi ke int terlebih dahulu menggunakan
int(nilai)
|
Tugas Praktikum
Latihan
Buat program yang menghasilkan output-output berikut:
- Program pencetak data nilai mahasiswa berikut, termasuk perhitungan nilai akhir (asumsikan bobot Tugas 20%, UTS 30%, UAS 50%, atau sesuaikan sendiri sehingga hasilnya 74.0):
Data Nilai Mahasiswa BPD
===========================
Nama : Ahmad Budi
Fakultas : FTI
Matakuliah : BPD
Nilai Tugas : 65
Nilai UTS : 75
Nilai UAS : 80
===========================
Nilai Akhir : 74.0
- Program yang menampilkan profil beserta tipe data tiap nilainya:
Profileku
=========
Nama : Ahmad Budi
<class 'str'>
Fakultas : FTI
<class 'str'>
Matakuliah : BPD
<class 'str'>
Nilai Akhir : 80
<class 'int'>
Profil : ('anak ke 2', 165, 60.25)
<class 'tuple'>
- Kembangkan program nomor 2 di atas dengan menambahkan data Hobi (tuple) dan Kampus (string), lalu bandingkan beberapa variabel menggunakan operator identitas, sehingga menghasilkan:
Profileku
=========
Nama : Ahmad Budi
Fakultas : FTI
Matakuliah : BPD
Nilai Akhir : 80
Profil : ('anak ke 2', 165, 60.25)
Hobi : ('nonton', 'travelling', 'kuliner')
Kampus : Budi Luhur
Membandingkan isi variable
nama is kampus : : False
profil is not hobi : : True
Tugas Mandiri
- Diketahui sebuah segitiga memiliki panjang alas = 8 cm dan tinggi = 5 cm. Buatlah sebuah program dalam Python untuk menghitung dan menampilkan luas segitiga tersebut.
- Diketahui sebuah bangun ruang berbentuk bola dengan diameter 15 cm. Buatlah sebuah program dalam Python untuk menghitung dan menampilkan volume bangun ruang bola tersebut.
- Diketahui sebuah segitiga siku-siku dengan panjang sisi alas 4 cm dan sisi tinggi 5 cm. Dengan menggunakan rumus Phytagoras, buatlah program Python untuk menghitung sisi miring segitiga tersebut dan menampilkannya di layar.
Kesimpulan
Pada pertemuan ini mahasiswa telah mempelajari 7 jenis operator
dalam Python:
aritmatika, perbandingan, penugasan, logika, bitwise,
keanggotaan, dan identitas, beserta cara kerja masing-masing melalui praktik langsung.
Mahasiswa juga telah memahami konsep
derajat operator (urutan prioritas evaluasi
ekspresi), yang penting untuk menghindari kesalahan logika saat
menulis ekspresi majemuk. Pemahaman terhadap perbedaan operator
== (membandingkan nilai) dan
is (membandingkan identitas/lokasi memori) menjadi
salah satu poin kunci yang akan berguna pada materi struktur
kontrol program (percabangan dan perulangan) di pertemuan
berikutnya.