Python Dasar

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

If Dasar
nilai = 85

if nilai >= 60:
    print("LULUS")

If-Else

If-Else
nilai = 55

if nilai >= 60:
    print("LULUS")
else:
    print("TIDAK LULUS")

If-Elif-Else

If-Elif-Else untuk Multiple Conditions
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

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

Ternary Operator (Conditional Expression)
# 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

Multiple Conditions
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).

For Loop dengan range()
# 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=" ")
For Loop dengan List
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 Loop
# 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 += 1

Infinite 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':
        break

Break 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 nanti

Nested Loops

Nested 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!

Loop dengan Else
# 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.

List Comprehension
# 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

Program: Pengelola Nilai Mahasiswa
# 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

  1. Buat program FizzBuzz (print 1-100, "Fizz" untuk kelipatan 3, "Buzz" untuk 5, "FizzBuzz" untuk 15)
  2. Buat program untuk cek bilangan prima
  3. Buat pattern segitiga bintang dengan nested loops
  4. Implementasikan guessing game dengan while loop
  5. Gunakan list comprehension untuk filter dan transform data

Apa Selanjutnya?

Selanjutnya kita akan belajar tentang Fungsi untuk membuat kode yang reusable dan modular!