Pertemuan 03 - Operasi Dasar dalam Bahasa Python

Pertemuan 03 - Operasi Dasar dalam Bahasa Python

Mempelajari operator dasar dalam Python - aritmatika, perbandingan, penugasan, logika, bitwise, keanggotaan, identitas - serta derajat/prioritas operator.

Tujuan Praktikum

Setelah menyelesaikan praktikum ini, mahasiswa mampu:

  1. Mengenal dan memahami tipe-tipe operator dasar pada bahasa pemrograman Python.
  2. Mengenal dan memahami derajat (prioritas eksekusi) operator dalam Python.
  3. Menerapkan operator aritmatika, perbandingan, penugasan, logika, bitwise, keanggotaan, dan identitas dalam program sederhana.

Persiapan

Kebutuhan praktikum:

text
- 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 == 1True Benar jika kedua operand memiliki nilai sama
Tidak sama dengan != 2 != 2False Kebalikan dari kondisi sebenarnya
Lebih besar dari > 5 > 3True Benar jika operand kiri lebih besar
Lebih kecil dari < 5 < 3False Benar jika operand kiri lebih kecil
Lebih besar/sama dengan >= 5 >= 3True Benar jika operand kiri lebih besar atau sama
Lebih kecil/sama dengan <= 5 <= 3False 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):

python
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:

python
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:

python
# 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 bahwa type(umur) pada baris tengah program tidak dibungkus print(), 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):

python
# 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:

python
# 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:

python
# 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:

python
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-masing x dan y.

Program 2.9 (Operator2.py) — Operator Logika:

python
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:

python
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: meskipun x dan y memiliki isi yang sama, mengapa x is y bisa bernilai False? Ini berkaitan dengan konsep bahwa dua objek List berbeda (walau isinya sama) menempati lokasi memori yang berbeda.

Program 2.11 (Operator4.py) — Operator Keanggotaan:

python
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:

python
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:

python
# 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 nilai a langkah demi langkah dari a = 10 hingga baris terakhir, termasuk saat a sempat menjadi float akibat pembagian /= dan dikembalikan ke int sebelum operator bitwise (&=, |=, ^=, >>=, <<=) diterapkan.

Pengujian

Periksa hasil praktikum dengan memastikan:

  1. Program 2.2 (variable2.py) mencetak <class 'str'> untuk nama, <class 'int'> untuk usia, dan <class 'bool'> untuk sudah_menikah.
  2. Program 2.8 (Operator Bitwise) mencetak x & y : 8, x | y : 14, x ^ y : 6.
  3. Program 2.10 (Operator Identitas) mencetak x is y : False meskipun isi x dan y sama.
  4. Program 2.13 (Operator Penugasan) menghasilkan nilai akhir a sesuai urutan operasi penugasan yang diterapkan.

Verifikasi cepat secara otomatis untuk operator bitwise:

python
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 (notandor) 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:

  1. 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):
text
Data Nilai Mahasiswa BPD

===========================

Nama              : Ahmad Budi
Fakultas          : FTI
Matakuliah        : BPD
Nilai Tugas       : 65
Nilai UTS         : 75
Nilai UAS         : 80
===========================

Nilai Akhir       : 74.0
  1. Program yang menampilkan profil beserta tipe data tiap nilainya:
text
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'>
  1. Kembangkan program nomor 2 di atas dengan menambahkan data Hobi (tuple) dan Kampus (string), lalu bandingkan beberapa variabel menggunakan operator identitas, sehingga menghasilkan:
text
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

  1. Diketahui sebuah segitiga memiliki panjang alas = 8 cm dan tinggi = 5 cm. Buatlah sebuah program dalam Python untuk menghitung dan menampilkan luas segitiga tersebut.
  2. Diketahui sebuah bangun ruang berbentuk bola dengan diameter 15 cm. Buatlah sebuah program dalam Python untuk menghitung dan menampilkan volume bangun ruang bola tersebut.
  3. 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.