🐍 📘 Bagian 1 (Fondasi & Kontrol Alur) • Modul 03 100% Standar Industri & Vokasi

Tipe Data Primitif & Operator Lengkap

Eksplorasi mendalam integer, float, string, boolean, operator aritmatika, perbandingan, logika boolean, dan operator keanggotaan (in, not in).

Target Pembelajaran:
  • Memahami karakteristik tipe data: int, float, str, bool, dan NoneType.
  • Melakukan konversi tipe data (Type Casting) dan memahami batasan pembulatan.
  • Mengetahui tabel hierarki prioritas operator (Operator Precedence).
  • Menguasai teknik String Indexing & Slicing.

1. Tipe Data Primitif (Skalar)

Taksonomi Tipe Data Bawaan Python: Karakteristik Mutable vs Immutable.
Gambar 3.1: Taksonomi Tipe Data Bawaan Python: Karakteristik Mutable vs Immutable.

Python memiliki beberapa tipe data bawaan dasar yang siap digunakan langsung:

Tipe Data Keyword Sifat & Deskripsi Contoh Nilai
Integer int Bilangan bulat tanpa batas ukuran memori (arbitrary precision) 42, -10, 0, 1000000
Floating Point float Bilangan desimal standar 64-bit IEEE 754 3.14159, -0.05, 2.0
String str Urutan karakter Unicode yang bersifat immutable (tidak bisa diubah langsung) 'Halo', "Python 3"
Boolean bool Nilai kebenaran logika biner (Sub-class dari Integer: True == 1, False == 0) True, False
NoneType None Konstanta singleton yang menyatakan ketiadaan nilai (null) None

2. String Indexing & Slicing

Visualisasi Positif & Negatif Indexing serta Formula Slicing [start:stop:step].
Gambar 3.2: Visualisasi Positif & Negatif Indexing serta Formula Slicing [start:stop:step].

Karakter di dalam string dapat diakses menggunakan indeks posisinya (dimulai dari 0 untuk karakter pertama, atau -1 untuk karakter terakhir).

📐 Visualisasi Indeks Teks "PYTHON":
Karakter  : [ P ][ Y ][ T ][ H ][ O ][ N ]
Indeks (+) :   0    1    2    3    4    5
Indeks (-) :  -6   -5   -4   -3   -2   -1
python (manipulasi_string.py)
teks = "PEMROGRAMAN"

# Format Slicing: teks[start : stop : step] (stop bersifat eksklusif)
print(teks[0:3])    # "PEM" (mengambil indeks 0, 1, 2)
print(teks[3:])     # "ROGRAMAN" (dari indeks 3 hingga akhir)
print(teks[:3])     # "PEM" (dari awal hingga sebelum indeks 3)
print(teks[::2])    # "PMRGAA" (melompat setiap 2 karakter)
print(teks[::-1])   # "NAMARGORMEP" (trik membalikkan seluruh string)

3. Operator & Hierarki Prioritas (Precedence)

Ketika beberapa operator digunakan dalam satu baris ekspresi (misal 2 + 3 * 4), Python mengikuti aturan prioritas matematika yang baku (PEMDAS: Parentheses, Exponent, Multiplication/Division, Addition/Subtraction).

Tingkat Prioritas Operator Keterangan
1 (Tertinggi) () Tanda kurung (dihitung paling awal)
2 ** Pangkat (Eksponensial)
3 *, /, //, % Perkalian, Pembagian, Floor Division, Modulo
4 +, - Penjumlahan & Pengurangan
5 ==, !=, >, <, in, is Perbandingan & Keanggotaan
6 (Terendah) not, and, or Evaluasi Logika Boolean
python
# Contoh Perbedaan Hasil karena Tanda Kurung
hasil1 = 10 + 5 * 2    # 10 + 10 = 20 (Perkalian didahulukan)
hasil2 = (10 + 5) * 2  # 15 * 2 = 30 (Kurung didahulukan)

# Floor Division (//) selalu membulatkan KE BAWAH ke bilangan bulat terdekat
print(7 // 2)    # 3
print(-7 // 2)   # -4 (Bukan -3! Karena -4 lebih kecil dari -3.5)

4. Kuis Pemahaman & Latihan

🧠 Kuis Cepat: Apa nilai dari ekspresi berikut?
x = 2 ** 3 ** 2
print(x)
Klik untuk melihat jawaban & pembahasan
Jawaban: 512
Penjelasan: Khusus operator eksponen (**), Python mengevaluasi dari kanan ke kiri (Right-to-Left Associativity). Jadi yang dihitung duluan adalah 3 ** 2 = 9, kemudian 2 ** 9 = 512 (Bukan (2**3)**2 = 64).

Tantangan 3: Pemotong Domain Email (Email Slicer)

Buat program email_slicer.py yang meminta masukan alamat email pengguna (misal: budi.santoso@gmail.com), lalu pisahkan dan cetak:
• Username: budi.santoso
• Domain: gmail.com

Tips: Gunakan method email.split("@") atau temukan posisi simbol @ dengan email.index("@") lalu gunakan string slicing!
📋 Cheat Sheet: Tipe Data & Operator Aritmatika
Cheat Sheet
Sintaks / Perintah Keterangan Fungsi
type(x) Memeriksa tipe data dari suatu variabel (int, float, str, bool)
int(x), float(x), str(x) Melakukan konversi tipe data (type casting) secara eksplisit
a // b Floor division (pembagian bulat membulatkan ke bawah)
a % b Modulus (menghitung sisa hasil bagi)
a ** b Eksponensiasi (perpangkatan: a pangkat b)
and, or, not Operator logika untuk evaluasi kondisi boolean
🛠️ Praktikum Terkait

Jobsheet 01: Fondasi, Operator & CLI I/O

Tuntaskan seluruh tantangan perhitungan rumus fisika dan konversi suhu di Jobsheet 01.

⚠️ Perangkap Pemula: TypeError Konkatenasi String & Angka
Waspada Error

Python adalah bahasa bertipe kuat (strongly typed), sehingga tidak mengonversi tipe data angka menjadi teks secara otomatis.

Kode Salah (Memicu Error)
# TypeError: can only concatenate str (not "int") to str
umur = 20
pesan = "Umur saya: " + umur
print(pesan)
Solusi Benar & Aman
# Solusi 1: Menggunakan f-string (Direkomendasikan)
umur = 20
print(f"Umur saya: {umur}")

# Solusi 2: Konversi manual dengan str()
pesan = "Umur saya: " + str(umur)
Penyebab & Solusi: Berbeda dengan JavaScript/PHP, operator + pada Python menolak menggabungkan tipe str dengan int. Gunakan f-string atau casting str().
💡 Tips Pythonic: Evaluasi Kebenaran (Truthy/Falsy) & Konversi
Standar PEP 8

Gunakan evaluasi boolean alami dan hindari perbandingan redundan dengan nilai literal True/False.

Kurang Pythonic (Hindari)
# Kurang Pythonic (Perbandingan eksplisit == True)
is_login = True
total_item = 0

if is_login == True:
    print("Selamat datang!")

if total_item == 0:
    print("Keranjang kosong")
Pythonic Way (Direkomendasikan)
# Pythonic (Memanfaatkan Truth Value Testing)
is_login = True
total_item = 0

if is_login:
    print("Selamat datang!")

if not total_item: # 0 otomatis bernilai False (falsy)
    print("Keranjang kosong")
Prinsip PEP 8: Jangan bandingkan nilai boolean dengan == True atau == False. Evaluasi kondisi secara langsung karena lebih natural dan ringkas.
🎯

Cek Pemahaman Mandiri

Uji pemahaman Anda terhadap konsep bab ini dengan feedback evaluasi instan.

2 Soal Pilihan Ganda
Q1

Berapakah hasil dari operasi aritmatika 17 // 3 dan 17 % 3 di Python?

💡 Pembahasan: Operator // (Floor Division) menghasilkan pembagian bulat ke bawah (17 // 3 = 5), sedangkan % (Modulus) menghasilkan sisa pembagian (17 - (5*3) = 2).

Q2

Manakah sintaks f-string yang benar untuk memformat nilai float pi = 3.14159 menjadi 2 angka desimal?

💡 Pembahasan: Format specifier :.2f di dalam kurung kurawal f-string berfungsi membulatkan bilangan pecahan (float) menjadi 2 digit di belakang koma.