---
# System prepended metadata

title: P7 Python - Percabangan (if & if-else)

---

---
title: P7 Python - Percabangan (if & if-else)

---

![P7 - If-else](https://hackmd.io/_uploads/B1l83rh3bx.png)


### Apa itu Percabangan?

**Percabangan :**
adalah struktur program yang memungkinkan program untuk **mengambil keputusan** — menjalankan blok kode tertentu hanya jika kondisi yang ditetapkan terpenuhi.


![Group 9](https://hackmd.io/_uploads/S1NyWUn2Wg.png)


Bayangkan seperti persimpangan jalan :
* Ada **kondisi** yang dicek → seperti rambu di persimpangan
* Jika kondisi **terpenuhi (True)** →  ambil jalur kanan (Bekasi ✓)
* Jika kondisi **tidak terpenuhi (False)** →  ambil jalur kiri (Jakarta ✗)

Tanpa percabangan :
* Program berjalan lurus dari atas ke bawah tanpa bisa memilih
* Tidak bisa membuat program yang responsif terhadap input pengguna
* Tidak bisa membuat logika seperti "jika nilai >= 75, maka lulus"

---

### Nilai Boolean — Dasar dari Percabangan

Sebelum memahami percabangan, perlu dikenal dulu satu tipe data penting :

:::success
**Boolean** adalah tipe data yang hanya memiliki dua kemungkinan nilai :
* `True` → benar / kondisi terpenuhi
* `False` → salah / kondisi tidak terpenuhi
:::

Percabangan bekerja dengan cara mengecek apakah sebuah kondisi bernilai `True` atau `False`.

Kondisi dibentuk menggunakan **operator perbandingan** :

| Operator | Arti | Contoh | Hasil |
| -------- | ---- | ------ | ----- |
| `==` | Sama dengan | `5 == 5` | `True` |
| `!=` | Tidak sama dengan | `5 != 3` | `True` |
| `>` | Lebih besar | `7 > 3` | `True` |
| `<` | Lebih kecil | `2 < 1` | `False` |
| `>=` | Lebih besar atau sama dengan | `5 >= 5` | `True` |
| `<=` | Lebih kecil atau sama dengan | `3 <= 2` | `False` |

:::warning
**⚠️ Jangan tertukar!**
* `=` → digunakan untuk **menyimpan nilai** ke variabel (assignment)
* `==` → digunakan untuk **membandingkan** dua nilai (perbandingan)

```python
nilai = 80      # menyimpan angka 80 ke variabel nilai
nilai == 80     # mengecek apakah nilai sama dengan 80 → True
```
:::

---

### Struktur if — Jika ... Maka ...

Bentuk paling dasar dari percabangan adalah `if`.

**Bentuk Dasar :**
```
if kondisi :
    # blok kode yang dijalankan jika kondisi True
```

Contoh :
```python
nilai = 80

if nilai >= 75 :
    print("Selamat, kamu lulus!")
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

Penjelasan :
* `nilai >= 75` → kondisi yang dicek
* Jika kondisi bernilai `True` → `print("Selamat, kamu lulus!")` dijalankan
* Jika kondisi bernilai `False` → tidak ada yang terjadi, program lanjut ke baris berikutnya

:::info
📌 **Perhatikan dua hal penting dalam penulisan `if` :**
1. Setelah kondisi wajib diakhiri tanda titik dua ` : `
2. Blok kode di dalam `if` wajib ditulis menjorok ke dalam (**indentasi**) — biasanya 4 spasi atau 1 Tab
:::

---

### Indentasi — Aturan Wajib di Python

:::success
**Indentasi** adalah jarak menjorok ke dalam yang menandakan sebuah blok kode berada **di dalam** struktur tertentu (if, else, fungsi, dan lain-lain).
:::

```python
# ✅ Benar — ada indentasi
nilai = 80
if nilai >= 75 :
    print("Lulus")      # ← menjorok ke dalam (bagian dari if)

print("Program selesai") # ← tidak menjorok (di luar if, selalu dijalankan)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

```python
# ❌ Salah — tidak ada indentasi
nilai = 80
if nilai >= 75 :
print("Lulus")   # IndentationError!
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

:::warning
**⚠️ Python sangat ketat soal indentasi!**
Berbeda dengan bahasa pemrograman lain yang menggunakan `{ }`, Python menggunakan indentasi sebagai penanda blok kode. Lupa indentasi = **error**.
:::

---

### Struktur if-else — Jika ... Maka ... Jika Tidak ...

Struktur `if-else` digunakan ketika program perlu melakukan sesuatu **baik saat kondisi terpenuhi maupun tidak**.

**Bentuk Dasar :**
```
if kondisi :
    # dijalankan jika kondisi True
else :
    # dijalankan jika kondisi False
```

Contoh :
```python
nilai = 60

if nilai >= 75 :
    print("Selamat, kamu lulus!")
else :
    print("Maaf, kamu belum lulus.")
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

Penjelasan :
* Jika `nilai >= 75` → `True` : program mencetak `"Selamat, kamu lulus!"`
* Jika `nilai >= 75` → `False` : program mencetak `"Maaf, kamu belum lulus."`
* Salah satu **pasti** akan dijalankan — tidak ada kemungkinan keduanya dilewati

:::info
📌 **Perbedaan `if` dan `if-else` :**
* `if` → hanya punya satu jalur (jalur "ya"). Jika tidak memenuhi, dilewati begitu saja.
* `if-else` → punya dua jalur (jalur "ya" dan jalur "tidak"). Selalu ada yang dijalankan.
:::

---

### Perbedaan if dan if-else secara Visual

| Aspek | `if` | `if-else` |
| ----- | ---- | --------- |
| Jalur keputusan | 1 jalur (jika True saja) | 2 jalur (True dan False) |
| Jika kondisi False | Blok kode dilewati | Blok `else` dijalankan |
| Kapan digunakan | Hanya perlu aksi saat kondisi terpenuhi | Selalu butuh respons apapun kondisinya |
| Contoh kasus | Menampilkan pesan jika stok habis | Menentukan lulus / tidak lulus |

---

### Menggabungkan if-else dengan Input Pengguna

Percabangan menjadi jauh lebih berguna ketika dikombinasikan dengan `input()` karena keputusan program bisa bergantung pada data yang dimasukkan pengguna.

```python
# Input
umur = int(input("Masukkan umur kamu : "))

# Proses + Percabangan
if umur >= 17 :
    print("Kamu boleh membuat KTP.")
else :
    print("Kamu belum cukup umur untuk membuat KTP.")
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

:::info
📌 **Ingat dari materi sebelumnya :**
Hasil `input()` selalu berupa `str`, jadi wajib di-casting ke `int` atau `float` sebelum dibandingkan dengan angka.
:::

---

### Alur Logika : Input → Proses (Percabangan) → Output

![Logika if & if-else](https://hackmd.io/_uploads/Hy5NcLnh-l.png)


Berikut contoh program lengkap yang menggunakan percabangan `if-else` untuk mengecek apakah sebuah angka genap atau ganjil :

```python
# Input
angka = int(input("Masukkan sebuah angka : "))

# Proses — menggunakan modulo dari materi sebelumnya
if angka % 2 == 0 :
    hasil = "Genap"
else :
    hasil = "Ganjil"

# Output
print(angka, "adalah bilangan", hasil)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

Strukturnya tetap sama :
* **Input** → ambil data dari pengguna (casting ke int)
* **Proses** → cek kondisi dengan percabangan `if-else`
* **Output** → tampilkan hasil keputusan

---

### Mini Project — Penentu Kelulusan Siswa

Implementasi `if-else` dalam program nyata yang menggabungkan materi operator aritmatika dan percabangan :

```python
# Input data nilai siswa
print("=== CEK KELULUSAN SISWA ===")
nama  = input("Nama siswa       : ")
tugas = float(input("Nilai tugas (30%): "))
uts   = float(input("Nilai UTS   (30%): "))
uas   = float(input("Nilai UAS   (40%): "))

# Proses — hitung nilai akhir (operator aritmatika)
nilai_akhir = (tugas * 0.3) + (uts * 0.3) + (uas * 0.4)

# Proses — tentukan status kelulusan (percabangan)
if nilai_akhir >= 75 :
    status = "LULUS ✓"
else :
    status = "BELUM LULUS ✗"

# Output
print("===========================")
print("Nama         :", nama)
print("Nilai Akhir  :", nilai_akhir)
print("Status       :", status)
print("===========================")
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/python-programming/online-compiler/)

---

### Ringkasan

| Topik | Poin Penting |
| ----- | ------------ |
| Percabangan | Struktur untuk membuat keputusan dalam program |
| Boolean | Tipe data hasil kondisi : `True` atau `False` |
| Operator perbandingan | `==` `!=` `>` `<` `>=` `<=` |
| `=` vs `==` | `=` menyimpan nilai, `==` membandingkan nilai |
| Indentasi | Wajib ada — 4 spasi atau 1 Tab setelah `if` / `else` |
| `if` | Satu jalur — hanya dijalankan jika kondisi `True` |
| `if-else` | Dua jalur — selalu ada yang dijalankan |
| Kombinasi dengan input | Wajib casting sebelum membandingkan dengan angka |