Struktur Kendali
Percabangan (if-else) dan perulangan (for, while) dalam Python
Percabangan (If-Else)
Struktur percabangan digunakan untuk mengeksekusi kode berdasarkan kondisi tertentu.
If Statement
nilai = 85
if nilai >= 60:
print("LULUS")If-Else
nilai = 55
if nilai >= 60:
print("LULUS")
else:
print("TIDAK LULUS")If-Elif-Else
nilai = int(input("Masukkan nilai (0-100): "))
if nilai >= 90:
grade = "A"
elif nilai >= 80:
grade = "B"
elif nilai >= 70:
grade = "C"
elif nilai >= 60:
grade = "D"
else:
grade = "E"
print(f"Nilai: {nilai}, Grade: {grade}")
# Status kelulusan
status = "LULUS" if nilai >= 60 else "TIDAK LULUS"
print(f"Status: {status}")Indentasi Penting!
Python menggunakan indentasi (4 spasi) untuk menentukan blok kode. Tidak seperti bahasa lain yang pakai {}, Python strict dengan indentasi!
# Benar
if nilai > 60:
print("Lulus")
print("Selamat!")
# Salah - inconsistent indentation
if nilai > 60:
print("Ini 2 spasi")
print("Ini 4 spasi") # IndentationError!Nested If
nilai = 85
if nilai >= 60:
print("LULUS")
if nilai >= 90:
print("Excellent!")
elif nilai >= 80:
print("Great job!")
else:
print("Good, keep improving!")
else:
print("TIDAK LULUS")
if nilai >= 40:
print("Need more practice")
else:
print("Need serious attention")Ternary Operator
# Format: value_if_true if condition else value_if_false
usia = 20
status = "Dewasa" if usia >= 18 else "Anak-anak"
# Multiple ternary
nilai = 75
grade = "A" if nilai >= 80 else "B" if nilai >= 70 else "C"
# Dalam function call
print("Genap" if 10 % 2 == 0 else "Ganjil")Logical Operators dalam Kondisi
nilai = 85
kehadiran = 90
# AND - semua kondisi harus True
if nilai >= 80 and kehadiran >= 80:
print("Nilai sangat baik")
# OR - salah satu kondisi True
if nilai >= 90 or kehadiran >= 90:
print("Minimal satu aspek excellent")
# NOT - negasi kondisi
if not (nilai < 60):
print("Nilai di atas 60")
# Kombinasi
if (nilai >= 80 and kehadiran >= 75) or (nilai >= 90):
print("Memenuhi syarat")Perulangan (Loops)
For Loop
for loop digunakan untuk iterasi melalui sequence (list, tuple, string, dll).
# range(stop) - dari 0 sampai stop-1
print("range(5):")
for i in range(5): # 0, 1, 2, 3, 4
print(i, end=" ")
print()
# range(start, stop) - dari start sampai stop-1
print("\nrange(2, 8):")
for i in range(2, 8): # 2, 3, 4, 5, 6, 7
print(i, end=" ")
print()
# range(start, stop, step)
print("\nrange(0, 10, 2):")
for i in range(0, 10, 2): # 0, 2, 4, 6, 8
print(i, end=" ")
print()
# range mundur
print("\nrange(10, 0, -1):")
for i in range(10, 0, -1): # 10, 9, 8, ..., 1
print(i, end=" ")buah = ["Apel", "Jeruk", "Mangga", "Pisang"]
# Iterate through list
print("Buah-buahan:")
for item in buah:
print(f"- {item}")
# Dengan enumerate (mendapatkan index)
print("\nDengan index:")
for index, item in enumerate(buah):
print(f"{index + 1}. {item}")
# Enumerate dengan custom start
for index, item in enumerate(buah, start=1):
print(f"{index}. {item}")While Loop
while loop mengeksekusi blok kode selama kondisi masih True.
# While dasar
print("While loop:")
count = 0
while count < 5:
print(count, end=" ")
count += 1
print()
# While dengan kondisi kompleks
print("\nWhile dengan multiple conditions:")
nilai = 0
maksimal = 10
while nilai < maksimal and nilai != 7:
print(nilai, end=" ")
nilai += 1Infinite Loop Warning
Hati-hati dengan infinite loop! Pastikan kondisi while eventually menjadi False:
# Infinite loop - jangan lakukan ini!
# while True:
# print("Loop forever!")
# While dengan exit condition
while True:
response = input("Continue? (y/n): ")
if response.lower() == 'n':
breakBreak dan Continue
# break - keluar dari loop
print("Mencari angka 5:")
for i in range(10):
if i == 5:
print(f"Ketemu! Keluar di {i}")
break
print(i, end=" ")
# break dalam while
print("\n\nInput sampai 'quit':")
while True:
text = input("Masukkan teks: ")
if text == "quit":
print("Keluar...")
break
print(f"Anda mengetik: {text}")# continue - skip iterasi saat ini
print("Bilangan ganjil 1-10:")
for i in range(1, 11):
if i % 2 == 0: # Skip bilangan genap
continue
print(i, end=" ")
print("\n\nSkip multiple values:")
for i in range(10):
if i == 3 or i == 7:
continue
print(i, end=" ")# pass - placeholder (tidak melakukan apa-apa)
print("Loop dengan pass:")
for i in range(5):
if i == 2:
pass # TODO: implementasi nanti
else:
print(i, end=" ")
# Berguna untuk code yang belum diimplementasi
def fungsi_nanti():
pass # Implementasi nantiNested Loops
# Multiplication table
print("Tabel Perkalian 1-5:")
for i in range(1, 6):
for j in range(1, 6):
print(f"{i}x{j}={i*j:2}", end=" ")
print() # Newline setelah satu baris
# Pattern dengan nested loops
print("\nPattern bintang:")
for i in range(1, 6):
for j in range(i):
print("*", end="")
print()Loop dengan Else
Python memiliki fitur unik: else clause pada loop!
# else dieksekusi jika loop selesai normal (tanpa break)
print("Mencari angka 15 di range 1-10:")
for i in range(1, 11):
if i == 15:
print("Ketemu!")
break
else:
print("Tidak ketemu (loop selesai)")
# Contoh praktis
print("\nCek apakah angka prima:")
num = 17
for i in range(2, num):
if num % i == 0:
print(f"{num} bukan prima (habis dibagi {i})")
break
else:
print(f"{num} adalah prima")List Comprehension
List comprehension adalah cara singkat dan pythonic untuk membuat list.
# Cara tradisional
squares = []
for x in range(1, 6):
squares.append(x**2)
print("Tradisional:", squares)
# List comprehension
squares = [x**2 for x in range(1, 6)]
print("Comprehension:", squares)
# Dengan kondisi
genap = [x for x in range(10) if x % 2 == 0]
print("Bilangan genap:", genap)
# Dengan if-else
labels = ["Genap" if x % 2 == 0 else "Ganjil" for x in range(5)]
print("Labels:", labels)
# Nested comprehension
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print("Matrix:", matrix)List Comprehension Benefits
List comprehension:
- Lebih readable dan concise
- Lebih cepat dari loop biasa
- Pythonic way!
- Format:
[expression for item in iterable if condition]
Contoh Program Lengkap
# Data mahasiswa
mahasiswa = []
# Input jumlah mahasiswa
jumlah = int(input("Berapa mahasiswa? "))
# Input data setiap mahasiswa
for i in range(jumlah):
print(f"\nMahasiswa ke-{i+1}:")
nama = input("Nama: ")
nilai = float(input("Nilai: "))
# Tentukan grade
if nilai >= 80:
grade = "A"
elif nilai >= 70:
grade = "B"
elif nilai >= 60:
grade = "C"
else:
grade = "D"
mahasiswa.append({"nama": nama, "nilai": nilai, "grade": grade})
# Tampilkan hasil
print("\n" + "="*50)
print("DAFTAR NILAI MAHASISWA")
print("="*50)
for i, mhs in enumerate(mahasiswa, 1):
status = "LULUS" if mhs["nilai"] >= 60 else "TIDAK LULUS"
print(f"{i}. {mhs['nama']:<20} Nilai: {mhs['nilai']:.1f} Grade: {mhs['grade']} ({status})")
# Statistik
total = sum(mhs["nilai"] for mhs in mahasiswa)
rata_rata = total / len(mahasiswa)
lulus = sum(1 for mhs in mahasiswa if mhs["nilai"] >= 60)
print("="*50)
print(f"Rata-rata kelas: {rata_rata:.2f}")
print(f"Jumlah lulus: {lulus}/{len(mahasiswa)}")Latihan
- Buat program FizzBuzz (print 1-100, "Fizz" untuk kelipatan 3, "Buzz" untuk 5, "FizzBuzz" untuk 15)
- Buat program untuk cek bilangan prima
- Buat pattern segitiga bintang dengan nested loops
- Implementasikan guessing game dengan while loop
- Gunakan list comprehension untuk filter dan transform data
Apa Selanjutnya?
Selanjutnya kita akan belajar tentang Fungsi untuk membuat kode yang reusable dan modular!
