1. Input & Output (Masukan & Keluaran)¶
Penjelasan Mendalam:
Program komputer pada dasarnya adalah proses pengolahan data. Untuk mengolah data, kita butuh cara untuk memasukkan data (input) dan cara untuk melihat hasilnya (output).
print(): Fungsi untuk menampilkan teks atau nilai variabel ke layar.input(): Fungsi untuk meminta pengguna mengetikkan sesuatu melalui keyboard.
# Berbagai cara menggunakan print()
nama = "Azki Lapangan Padel"
umur = 20
print("1. Sederhana: Halo", nama)
print("2. Penggabungan (+): Halo " + nama) # Hanya bisa string + string
print("3. Format .format(): Halo {}, umur kamu {}".format(nama, umur))
print(f"4. F-String (Modern): Halo {nama}, umur kamu {umur}")
# Masukan dari user
hobi = input("Apa hobi kamu? ")
print(f"{nama} suka {hobi}")
1. Sederhana: Halo Azki Lapangan Padel 2. Penggabungan (+): Halo Azki Lapangan Padel 3. Format .format(): Halo Azki Lapangan Padel, umur kamu 20 4. F-String (Modern): Halo Azki Lapangan Padel, umur kamu 20 Azki Lapangan Padel suka 67
Keunikan & Hal Penting (IO)¶
- Input adalah String: Meskipun user mengetik
25, hasil dariinput()adalah"25"(teks). Kita harus mengubahnya jika ingin dipakai berhitung. - Separator & End:
print()punya parameter rahasia.sep: Karakter pemisah antar data (defaultnya spasi).end: Karakter akhir (defaultnya baris baru\n).
print("Apel", "Mangga", "Pisang", sep=" - ")
print("Ini baris satu", end=" ... ")
print("Lanjut di baris yang sama!")
Apel - Mangga - Pisang Ini baris satu ... Lanjut di baris yang sama!
Mini Quiz: Input Output¶
Manakah kode yang benar untuk mencetak "Hello***World"?
- A.
print("Hello", "World", end="***") - B.
print("Hello", "World", sep="***") - C.
print("Hello" + "***" + "World")
2. Variables & Data Types (Variabel & Tipe Data)¶
Penjelasan Mendalam:
Variabel adalah nama unik yang kita berikan pada sebuah lokasi di memori komputer untuk menyimpan data. Bayangkan komputer punya ribuan laci, dan kita memberi label pada salah satu laci dengan nama umur.
Tipe Data Utama:
- Integer (int): Bilangan bulat (tanpa koma).
- Float (float): Bilangan desimal (pakai koma/titik).
- String (str): Teks, harus pakai tanda petik.
- Boolean (bool): Hanya dua nilai:
True(Benar) atauFalse(Salah).
# Contoh Casting (Perubahan Tipe Data)
angka_teks = "10"
angka_int = int(angka_teks) # Berubah jadi 10 (angka)
angka_float = float(angka_int) # Berubah jadi 10.0
print(f"Tipe data awal: {type(angka_teks)}")
print(f"Setelah diubah ke int: {type(angka_int)}")
print(f"Setelah diubah ke float: {angka_float} | Tipe: {type(angka_float)}")
Tipe data awal: <class 'str'> Setelah diubah ke int: <class 'int'> Setelah diubah ke float: 10.0 | Tipe: <class 'float'>
Aturan Penamaan Variabel¶
- Harus dimulai dengan huruf atau underscore (_). Gak boleh diawali angka.
- Hanya boleh berisi karakter alfanumerik dan underscore (A-z, 0-9, dan _ ).
- Case-Sensitive:
nilai_ujianbeda denganNilai_Ujian. - Jangan pakai Keyword: Contohnya gak boleh bikin variabel bernama
if,print,for.
# Challenge: Hitung Luas Lingkaran
PI = 3.14
jari_jari_str = "10" # Teks
# TUGAS: Ubah jari_jari_str ke float, lalu hitung luas (PI x r x r)
jari_jari = ______________
luas = ___________________
print(f"Luas Lingkaran: {luas}")
3. Control Flow¶
Penjelasan Mendalam:
Program yang pintar adalah program yang bisa mengambil keputusan sendiri. Di sinilah kita menggunakan operator perbandingan (>, <, ==, !=) dan logika (and, or, not).
Contoh Kasus: Sistem login, jika user memasukkan password yang benar, berikan akses. Jika tidak, blokir.
usia = 18
punya_sim = False
if usia >= 17 and punya_sim:
print("Kamu boleh mengendarai mobil.")
elif usia >= 17 and not punya_sim:
print("Kamu cukup umur, tapi belum punya SIM!")
else:
print("Tunggu sampai cukup umur ya.")
Kamu cukup umur, tapi belum punya SIM!
Rahasia Truthy & Falsy¶
Di Python, kita gak harus selalu ngecek if x == True. Nilai apa pun yang "kosong" akan dianggap False.
- Falsy:
0,0.0,""(string kosong),[](list kosong),None. - Truthy: Apa pun selain yang di atas.
teks = input("Ketikkan sesuatu (atau biarkan kosong): ")
if teks:
print(f"Kamu mengetik: {teks}")
else:
print("Kamu tidak mengetikkan apa-apa!")
Kamu mengetik: jukut
Mini Quiz: Logika¶
Kira-kira apa hasil dari kode ini? (Hint: and lebih kuat daripada or)
if True or False and False:
print("Jalan")
else:
print("Berhenti")
4. Loops (Perulangan)¶
Penjelasan Mendalam: Perulangan digunakan untuk menjalankan baris kode yang sama berkali-kali. Ini sangat berguna untuk mengolah data dalam jumlah banyak (misal: ribuan data dalam list).
- For Loop: Berulang sebanyak jumlah elemen dalam sebuah koleksi atau jangkauan angka.
- While Loop: Berulang terus-menerus selama sebuah kondisi masih bernilai
True.
# Mengenal range(start, stop, step)
print("Angka genap dari 2 sampai 10:")
for x in range(2, 11, 2):
print(x)
# Perulangan mundur
print("\nHitung mundur mulai!")
for x in range(3, 0, -1):
print(x)
print("DOR!")
Angka genap dari 2 sampai 10: 2 4 6 8 10 Hitung mundur mulai! 3 2 1 DOR!
Latihan Pola Visual (Advanced)¶
Nested loop sangat bagus untuk melatih logika.
# Pola Segitiga Terbalik
tinggi = 5
print("Segitiga Terbalik:")
for i in range(tinggi, 0, -1):
print("* " * i)
Segitiga Terbalik: * * * * * * * * * * * * * * *
# Pola Piramida (Pohon Natal)
tinggi = 5
print("Piramida:")
for i in range(1, tinggi + 1):
spasi = " " * (tinggi - i)
bintang = "*" * (2 * i - 1)
print(spasi + bintang)
Piramida:
*
***
*****
*******
*********
# While loop dengan input user (Loop Interaktif)
permainan = True
while permainan:
aksi = input("Lanjut main? (y/n): ").lower()
if aksi == "n":
print("Terima kasih sudah bermain!")
permainan = False
elif aksi == "y":
print("Horee! Kita lanjut!")
else:
print("Input tidak dikenal, pilih y atau n.")
Horee! Kita lanjut! Terima kasih sudah bermain!
Enumerate (Tips Pro)¶
Seringkali kita butuh index (urutan) dan nilai-nya sekaligus saat looping. Gunakan enumerate().
juara = ["Andi", "Budi", "Caca"]
# Cara Pro:
for urutan, nama in enumerate(juara, 1): # 1 artinya mulai dari 1
print(f"Juara {urutan}: {nama}")
Juara 1: Andi Juara 2: Budi Juara 3: Caca
5. Functions (Fungsi)¶
Penjelasan Mendalam: Fungsi adalah blok kode yang bisa digunakan berulang kali. Ini seperti "Sihir" atau "Resep Masakan" yang kita simpan dan beri nama.
def: Kata kunci untuk membuat fungsi.return: Mengembalikan nilai hasil proses (agar bisa disimpan di variabel).
Parameter vs Argument¶
Sering tertukar, tapi beda!
- Parameter: Nama variabel saat mendefinisikan fungsi. (Contoh:
nama_resep) - Argument: Nilai nyata yang dikirim saat memanggil fungsi. (Contoh:
"Nasi Goreng")
Analogy:
- Parameter = Tempat kosong di formulir.
- Argument = Tulisan yang kamu isi di formulir itu.
def sapa(nama, waktu): # 'nama' dan 'waktu' adalah PARAMETER
print(f"Halo {nama}, selamat {waktu}!")
# 'Andi' dan 'Pagi' adalah ARGUMENT
sapa("Andi", "Pagi")
# Keyword Argument (Urutan tidak masalah)
sapa(waktu="Malam", nama="Budi")
Halo Andi, selamat Pagi! Halo Budi, selamat Malam!
def hitung_luas_persegi(sisi):
luas = sisi * sisi
return luas
# Memanggil fungsi
hasil_luas = hitung_luas_persegi(10)
print(f"Luasnya adalah: {hasil_luas}")
Luasnya adalah: 100
6. Data Structures¶
Penjelasan Mendalam: Jika variabel biasa hanya bisa simpan 1 data, struktur data bisa simpan banyak data sekaligus dalam satu variabel.
- List: Barisan data yang berurutan. Bisa ditambah, dihapus, dan diganti.
- Dictionary: Kumpulan data dengan label. Mirip gudang, barang dicari berdasarkan labelnya, bukan urutannya.
- Tuple: Seperti List, tapi Tidak Bisa Diubah (Immutable).
- Set: Himpunan unik (tidak boleh ada data duplikat).
# Tuple (Pakai Kurung Biasa)
koordinat = (10, 20)
# koordinat[0] = 5 <-- Ini akan Error!
# Set (Pakai Kurung Kurawal)
angka_unik = {1, 2, 2, 3, 3, 3}
print(f"Set otomatis hapus duplikat: {angka_unik}")
Set otomatis hapus duplikat: {1, 2, 3}
hewan = ["Kucing", "Anjing", "Burung"]
hewan.append("Kelinci") # Tambah di akhir
hewan.insert(1, "Ikan") # Tambah di index 1
hewan.remove("Anjing") # Hapus berdasarkan nama
hewan.sort() # Urutkan abjad
hewan_terakhir = hewan.pop() # Ambil dan hapus elemen terakhir
print(f"Daftar hewan sisa: {hewan}")
print(f"Hewan yang diambil: {hewan_terakhir}")
Daftar hewan sisa: ['Burung', 'Ikan', 'Kelinci'] Hewan yang diambil: Kucing
stok_toko = {"Sabun": 10, "Sampo": 5, "Sikat Gigi": 20}
# Menambah atau mengupdate data
stok_toko["Sabun"] = 8
stok_toko["Pasta Gigi"] = 15
# Mengakses data dengan aman
item = "Rinso"
stok = stok_toko.get(item, "Barang Gak Ada")
print(f"Stok {item}: {stok}")
print(f"Semua Label Barang: {list(stok_toko.keys())}")
Stok Rinso: Barang Gak Ada Semua Label Barang: ['Sabun', 'Sampo', 'Sikat Gigi', 'Pasta Gigi']
Challenge: Manajemen Kontak¶
Lengkapi kode di bawah untuk menambahkan nomor teman.
buku_telepon = {}
nama_teman = "Faiz"
nomor_hp = "08123456789"
# Masukkan data ke dictionary
buku_telepon[___________] = ___________
print(buku_telepon)
7. String Operations (Manipulasi Teks)¶
Penjelasan Mendalam: Teks bukan cuma sekedar hiasan. Kamu bisa mencari kata di dalamnya, mengubah hurufnya, atau memotong bagian tertentu (slicing).
kalimat = " Python sangat Menyenangkan sekali! "
print(f"1. Bersihkan spasi ujung: '{kalimat.strip()}'")
print(f"2. Cek apakah ada kata 'Python': {'Python' in kalimat}")
print(f"3. Hitung huruf 'a': {kalimat.count('a')}")
print(f"4. Ganti kata: {kalimat.replace('sekali', 'banget')}")
# Slicing (Memotong)
# [mulai : sampai_sebelum : langkah]
kode = "A123-B456"
id_depan = kode[0:4] # Ambil 4 karakter pertama
print(f"5. ID Depan: {id_depan}")
1. Bersihkan spasi ujung: 'Python sangat Menyenangkan sekali!' 2. Cek apakah ada kata 'Python': True 3. Hitung huruf 'a': 5 4. Ganti kata: Python sangat Menyenangkan banget! 5. ID Depan: A123
# Challenge: Sensor Kata
kalimat_kotor = "Dasar kamu bodoh dan jelek"
kata_larangan = ["bodoh", "jelek"]
# Ganti kata terlarang dengan "***"
for kata in kata_larangan:
kalimat_kotor = kalimat_kotor.replace(________, "***")
print(kalimat_kotor)
8. Error Handling (Menangani Eror)¶
Analogy: Seperti Airbag di mobil. Saat terjadi tabrakan (error), program tidak langsung mati total, tapi ditangkap dengan aman.
try: Coba jalankan kode berbahaya.except: Jalankan ini jika terjadi error.
try:
angka = int(input("Masukkan angka pembagi: "))
hasil = 100 / angka
print(f"Hasil: {hasil}")
except ValueError:
print("Error: Kamu harus memasukkan ANGKA, bukan teks!")
except ZeroDivisionError:
print("Error: Tidak bisa membagi dengan NOL!")
except Exception as e:
print(f"Error tidak dikenal: {e}")
Error: Tidak bisa membagi dengan NOL!
9. File Operations (Bekerja dengan File)¶
Penjelasan Mendalam: Data di program akan hilang kalau program ditutup. Untuk menyimpannya selamanya, kita harus menuliskannya ke dalam file harddisk.
Mode File:
"w"(Write): Tulis baru. Kalau file sudah ada, isinya dihapus dulu."a"(Append): Tambah di akhir. Isi yang lama tetap ada."r"(Read): Baca file.
# Tambahkan catatan tanpa menghapus isi lama
with open("log_belajar.txt", "a") as file:
file.write("Belajar File Operation jam 8 malam\n")
print("Isi file log_belajar.txt sekarang:")
with open("log_belajar.txt", "r") as file:
for line in file:
print("- " + line.strip())
Isi file log_belajar.txt sekarang: - Belajar File Operation jam 8 malam
10. Modules & Pip (Ekosistem Python)¶
Penjelasan Mendalam: Python sangat populer karena punya jutaan "modul" tambahan gratis yang dibuat orang lain.
- Standard Library: Modul bawaan (math, random, datetime).
- Third-Party: Modul tambahan dari internet (requests, pandas, numpy).
- Local Module: File
.pylain yang kamu buat sendiri.
# Cara import yang berbeda
import math
from datetime import datetime
import my_tools # File buatan kita
sekarang = datetime.now()
print(f"Tgl/Waktu sekarang: {sekarang}")
print(f"Akar dari 64: {math.sqrt(64)}")
print(my_tools.greet_user("Pythoner"))
Tgl/Waktu sekarang: 2026-01-15 20:23:01.886318 Akar dari 64: 8.0 Hello, Pythoner! Welcome to Python learning.
import requests, json
response = requests.get('https://api.github.com/events')
print(response.status_code)
print(json.dumps(response.json()[0], indent=4))
200
{
"id": "7500912290",
"type": "CreateEvent",
"actor": {
"id": 146629030,
"login": "Zorinman",
"display_login": "Zorinman",
"gravatar_id": "",
"url": "https://api.github.com/users/Zorinman",
"avatar_url": "https://avatars.githubusercontent.com/u/146629030?"
},
"repo": {
"id": 1134977667,
"name": "Zorinman/Diary",
"url": "https://api.github.com/repos/Zorinman/Diary"
},
"payload": {
"ref": "main",
"ref_type": "branch",
"full_ref": "refs/heads/main",
"master_branch": "main",
"description": "Share what I want to share",
"pusher_type": "user"
},
"public": true,
"created_at": "2026-01-15T13:29:07Z"
}