Skip to content

A complete Python fundamentals tutorial with step-by-step examples and exercises. Covers conditions, loops, functions, data structures, and classes for beginners

Notifications You must be signed in to change notification settings

minggo-commits/python-fundamentals-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Learning Guide / Panduan Belajar Python

Table of Contents / Daftar Isi


English Version

1. Conditions

Conditions allow your program to make decisions based on different scenarios.

Basic If Statement

age = 18
if age >= 18:
    print("You are an adult")

If-Else Statement

temperature = 25
if temperature > 30:
    print("It's hot outside")
else:
    print("It's not too hot")

If-Elif-Else Statement

grade = 85
if grade >= 90:
    print("A")
elif grade >= 80:
    print("B")
elif grade >= 70:
    print("C")
else:
    print("F")

Comparison Operators

  • == : Equal to
  • != : Not equal to
  • > : Greater than
  • < : Less than
  • >= : Greater than or equal to
  • <= : Less than or equal to

Logical Operators

# AND operator
age = 25
income = 50000
if age >= 18 and income >= 30000:
    print("Eligible for loan")

# OR operator
day = "Saturday"
if day == "Saturday" or day == "Sunday":
    print("It's weekend!")

# NOT operator
is_raining = False
if not is_raining:
    print("Go for a walk")

2. Loops

Loops allow you to repeat code multiple times.

For Loop

# Loop through numbers
for i in range(5):
    print(f"Number: {i}")

# Loop through a list
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(f"I like {fruit}")

# Loop with start, stop, step
for i in range(2, 10, 2):  # Start=2, Stop=10, Step=2
    print(i)  # Prints: 2, 4, 6, 8

While Loop

# Basic while loop
count = 0
while count < 5:
    print(f"Count: {count}")
    count += 1

# While loop with user input
password = ""
while password != "secret":
    password = input("Enter password: ")
print("Access granted!")

Loop Control Statements

# Break statement
for i in range(10):
    if i == 5:
        break
    print(i)  # Prints: 0, 1, 2, 3, 4

# Continue statement
for i in range(5):
    if i == 2:
        continue
    print(i)  # Prints: 0, 1, 3, 4

Nested Loops

for i in range(3):
    for j in range(3):
        print(f"i={i}, j={j}")

3. Functions

Functions are reusable blocks of code that perform specific tasks.

Basic Function

def greet():
    print("Hello, World!")

greet()  # Call the function

Function with Parameters

def greet_person(name):
    print(f"Hello, {name}!")

greet_person("Alice")

Function with Return Value

def add_numbers(a, b):
    return a + b

result = add_numbers(5, 3)
print(result)  # Output: 8

Function with Default Parameters

def greet_with_title(name, title="Mr."):
    return f"Hello, {title} {name}!"

print(greet_with_title("Smith"))  # Hello, Mr. Smith!
print(greet_with_title("Johnson", "Dr."))  # Hello, Dr. Johnson!

Function with Multiple Return Values

def calculate(a, b):
    addition = a + b
    subtraction = a - b
    return addition, subtraction

sum_result, diff_result = calculate(10, 3)
print(f"Sum: {sum_result}, Difference: {diff_result}")

Lambda Functions (Anonymous Functions)

# Basic lambda
square = lambda x: x ** 2
print(square(5))  # Output: 25

# Lambda with multiple parameters
multiply = lambda x, y: x * y
print(multiply(3, 4))  # Output: 12

# Using lambda with built-in functions
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)  # Output: [1, 4, 9, 16, 25]

4. Data Structures

Python provides several built-in data structures to organize and store data.

Lists

# Creating lists
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
mixed_list = ["hello", 42, True, 3.14]

# List operations
fruits.append("grape")  # Add to end
fruits.insert(1, "mango")  # Insert at index
fruits.remove("banana")  # Remove by value
popped_item = fruits.pop()  # Remove and return last item

# List methods
print(len(fruits))  # Length
print(fruits[0])  # First item
print(fruits[-1])  # Last item
print(fruits[1:3])  # Slicing

# List comprehension
squares = [x**2 for x in range(5)]
print(squares)  # Output: [0, 1, 4, 9, 16]

Tuples

# Creating tuples (immutable)
coordinates = (10, 20)
rgb_color = (255, 128, 0)

# Tuple operations
x, y = coordinates  # Unpacking
print(f"X: {x}, Y: {y}")

# Named tuples
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(f"Point: {p.x}, {p.y}")

Dictionaries

# Creating dictionaries
student = {
    "name": "Alice",
    "age": 20,
    "grade": "A"
}

# Dictionary operations
student["email"] = "alice@email.com"  # Add key-value
student["age"] = 21  # Update value
del student["grade"]  # Delete key

# Dictionary methods
print(student.keys())    # Get all keys
print(student.values())  # Get all values
print(student.items())   # Get key-value pairs

# Dictionary comprehension
squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Sets

# Creating sets (unique elements)
unique_numbers = {1, 2, 3, 4, 5}
colors = {"red", "green", "blue"}

# Set operations
colors.add("yellow")
colors.remove("red")
colors.discard("purple")  # Won't raise error if not found

# Set operations
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

print(set1.union(set2))        # {1, 2, 3, 4, 5, 6}
print(set1.intersection(set2)) # {3, 4}
print(set1.difference(set2))   # {1, 2}

5. Classes

Classes are blueprints for creating objects with attributes and methods.

Basic Class

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed
    
    def bark(self):
        return f"{self.name} says Woof!"
    
    def get_info(self):
        return f"{self.name} is a {self.breed}"

# Creating objects
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.bark())      # Buddy says Woof!
print(my_dog.get_info())  # Buddy is a Golden Retriever

Class with Properties

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius cannot be negative")
        self._radius = value
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

circle = Circle(5)
print(f"Area: {circle.area}")  # Area: 78.53975
circle.radius = 10
print(f"New area: {circle.area}")  # New area: 314.159

Inheritance

class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species
    
    def make_sound(self):
        pass
    
    def get_info(self):
        return f"{self.name} is a {self.species}"

class Cat(Animal):
    def __init__(self, name, breed):
        super().__init__(name, "Cat")
        self.breed = breed
    
    def make_sound(self):
        return "Meow!"

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name, "Dog")
        self.breed = breed
    
    def make_sound(self):
        return "Woof!"

# Using inheritance
cat = Cat("Whiskers", "Persian")
dog = Dog("Rex", "German Shepherd")

print(cat.get_info())    # Whiskers is a Cat
print(cat.make_sound())  # Meow!
print(dog.make_sound())  # Woof!

Class Methods and Static Methods

class MathUtils:
    pi = 3.14159
    
    @staticmethod
    def add(x, y):
        return x + y
    
    @classmethod
    def get_pi(cls):
        return cls.pi
    
    @staticmethod
    def circle_area(radius):
        return MathUtils.pi * radius ** 2

# Using static and class methods
print(MathUtils.add(5, 3))        # 8
print(MathUtils.get_pi())         # 3.14159
print(MathUtils.circle_area(5))   # 78.53975

Indonesian Version / Versi Bahasa Indonesia

1. Kondisi

Kondisi memungkinkan program Anda membuat keputusan berdasarkan skenario yang berbeda.

Pernyataan If Dasar

umur = 18
if umur >= 18:
    print("Anda sudah dewasa")

Pernyataan If-Else

suhu = 25
if suhu > 30:
    print("Cuaca panas di luar")
else:
    print("Cuaca tidak terlalu panas")

Pernyataan If-Elif-Else

nilai = 85
if nilai >= 90:
    print("A")
elif nilai >= 80:
    print("B")
elif nilai >= 70:
    print("C")
else:
    print("D")

Operator Perbandingan

  • == : Sama dengan
  • != : Tidak sama dengan
  • > : Lebih besar dari
  • < : Lebih kecil dari
  • >= : Lebih besar atau sama dengan
  • <= : Lebih kecil atau sama dengan

Operator Logika

# Operator AND
umur = 25
penghasilan = 50000
if umur >= 18 and penghasilan >= 30000:
    print("Memenuhi syarat untuk pinjaman")

# Operator OR
hari = "Sabtu"
if hari == "Sabtu" or hari == "Minggu":
    print("Ini akhir pekan!")

# Operator NOT
sedang_hujan = False
if not sedang_hujan:
    print("Pergi jalan-jalan")

2. Perulangan

Perulangan memungkinkan Anda mengulangi kode beberapa kali.

Perulangan For

# Perulangan melalui angka
for i in range(5):
    print(f"Angka: {i}")

# Perulangan melalui list
buah_buahan = ["apel", "pisang", "jeruk"]
for buah in buah_buahan:
    print(f"Saya suka {buah}")

# Perulangan dengan start, stop, step
for i in range(2, 10, 2):  # Start=2, Stop=10, Step=2
    print(i)  # Mencetak: 2, 4, 6, 8

Perulangan While

# Perulangan while dasar
hitung = 0
while hitung < 5:
    print(f"Hitungan: {hitung}")
    hitung += 1

# Perulangan while dengan input pengguna
kata_sandi = ""
while kata_sandi != "rahasia":
    kata_sandi = input("Masukkan kata sandi: ")
print("Akses diberikan!")

Pernyataan Kontrol Perulangan

# Pernyataan break
for i in range(10):
    if i == 5:
        break
    print(i)  # Mencetak: 0, 1, 2, 3, 4

# Pernyataan continue
for i in range(5):
    if i == 2:
        continue
    print(i)  # Mencetak: 0, 1, 3, 4

Perulangan Bersarang

for i in range(3):
    for j in range(3):
        print(f"i={i}, j={j}")

3. Fungsi

Fungsi adalah blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu.

Fungsi Dasar

def sapa():
    print("Halo, Dunia!")

sapa()  # Memanggil fungsi

Fungsi dengan Parameter

def sapa_orang(nama):
    print(f"Halo, {nama}!")

sapa_orang("Alice")

Fungsi dengan Nilai Kembali

def tambah_angka(a, b):
    return a + b

hasil = tambah_angka(5, 3)
print(hasil)  # Output: 8

Fungsi dengan Parameter Default

def sapa_dengan_gelar(nama, gelar="Pak"):
    return f"Halo, {gelar} {nama}!"

print(sapa_dengan_gelar("Smith"))  # Halo, Pak Smith!
print(sapa_dengan_gelar("Johnson", "Dr."))  # Halo, Dr. Johnson!

Fungsi dengan Banyak Nilai Kembali

def hitung(a, b):
    penjumlahan = a + b
    pengurangan = a - b
    return penjumlahan, pengurangan

hasil_jumlah, hasil_kurang = hitung(10, 3)
print(f"Jumlah: {hasil_jumlah}, Selisih: {hasil_kurang}")

Fungsi Lambda (Fungsi Anonim)

# Lambda dasar
kuadrat = lambda x: x ** 2
print(kuadrat(5))  # Output: 25

# Lambda dengan banyak parameter
kali = lambda x, y: x * y
print(kali(3, 4))  # Output: 12

# Menggunakan lambda dengan fungsi built-in
angka = [1, 2, 3, 4, 5]
angka_kuadrat = list(map(lambda x: x**2, angka))
print(angka_kuadrat)  # Output: [1, 4, 9, 16, 25]

4. Struktur Data

Python menyediakan beberapa struktur data built-in untuk mengorganisir dan menyimpan data.

List

# Membuat list
buah_buahan = ["apel", "pisang", "jeruk"]
angka = [1, 2, 3, 4, 5]
list_campuran = ["halo", 42, True, 3.14]

# Operasi list
buah_buahan.append("anggur")  # Tambah di akhir
buah_buahan.insert(1, "mangga")  # Sisipkan di indeks
buah_buahan.remove("pisang")  # Hapus berdasarkan nilai
item_keluar = buah_buahan.pop()  # Hapus dan kembalikan item terakhir

# Method list
print(len(buah_buahan))  # Panjang
print(buah_buahan[0])  # Item pertama
print(buah_buahan[-1])  # Item terakhir
print(buah_buahan[1:3])  # Slicing

# List comprehension
kuadrat = [x**2 for x in range(5)]
print(kuadrat)  # Output: [0, 1, 4, 9, 16]

Tuple

# Membuat tuple (tidak dapat diubah)
koordinat = (10, 20)
warna_rgb = (255, 128, 0)

# Operasi tuple
x, y = koordinat  # Unpacking
print(f"X: {x}, Y: {y}")

# Named tuple
from collections import namedtuple
Titik = namedtuple('Titik', ['x', 'y'])
p = Titik(10, 20)
print(f"Titik: {p.x}, {p.y}")

Dictionary

# Membuat dictionary
siswa = {
    "nama": "Alice",
    "umur": 20,
    "nilai": "A"
}

# Operasi dictionary
siswa["email"] = "alice@email.com"  # Tambah key-value
siswa["umur"] = 21  # Update nilai
del siswa["nilai"]  # Hapus key

# Method dictionary
print(siswa.keys())    # Dapatkan semua key
print(siswa.values())  # Dapatkan semua value
print(siswa.items())   # Dapatkan pasangan key-value

# Dictionary comprehension
kuadrat_dict = {x: x**2 for x in range(5)}
print(kuadrat_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Set

# Membuat set (elemen unik)
angka_unik = {1, 2, 3, 4, 5}
warna = {"merah", "hijau", "biru"}

# Operasi set
warna.add("kuning")
warna.remove("merah")
warna.discard("ungu")  # Tidak akan error jika tidak ditemukan

# Operasi set
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

print(set1.union(set2))        # {1, 2, 3, 4, 5, 6}
print(set1.intersection(set2)) # {3, 4}
print(set1.difference(set2))   # {1, 2}

5. Kelas

Kelas adalah blueprint untuk membuat objek dengan atribut dan method.

Kelas Dasar

class Anjing:
    def __init__(self, nama, ras):
        self.nama = nama
        self.ras = ras
    
    def gonggong(self):
        return f"{self.nama} menggonggong Guk!"
    
    def dapat_info(self):
        return f"{self.nama} adalah {self.ras}"

# Membuat objek
anjing_saya = Anjing("Buddy", "Golden Retriever")
print(anjing_saya.gonggong())      # Buddy menggonggong Guk!
print(anjing_saya.dapat_info())  # Buddy adalah Golden Retriever

Kelas dengan Properties

class Lingkaran:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, nilai):
        if nilai < 0:
            raise ValueError("Radius tidak boleh negatif")
        self._radius = nilai
    
    @property
    def luas(self):
        return 3.14159 * self._radius ** 2

lingkaran = Lingkaran(5)
print(f"Luas: {lingkaran.luas}")  # Luas: 78.53975
lingkaran.radius = 10
print(f"Luas baru: {lingkaran.luas}")  # Luas baru: 314.159

Pewarisan (Inheritance)

class Hewan:
    def __init__(self, nama, spesies):
        self.nama = nama
        self.spesies = spesies
    
    def buat_suara(self):
        pass
    
    def dapat_info(self):
        return f"{self.nama} adalah {self.spesies}"

class Kucing(Hewan):
    def __init__(self, nama, ras):
        super().__init__(nama, "Kucing")
        self.ras = ras
    
    def buat_suara(self):
        return "Meong!"

class Anjing(Hewan):
    def __init__(self, nama, ras):
        super().__init__(nama, "Anjing")
        self.ras = ras
    
    def buat_suara(self):
        return "Guk!"

# Menggunakan inheritance
kucing = Kucing("Whiskers", "Persia")
anjing = Anjing("Rex", "German Shepherd")

print(kucing.dapat_info())    # Whiskers adalah Kucing
print(kucing.buat_suara())  # Meong!
print(anjing.buat_suara())  # Guk!

Method Kelas dan Method Statis

class UtilMatematika:
    pi = 3.14159
    
    @staticmethod
    def tambah(x, y):
        return x + y
    
    @classmethod
    def dapat_pi(cls):
        return cls.pi
    
    @staticmethod
    def luas_lingkaran(radius):
        return UtilMatematika.pi * radius ** 2

# Menggunakan method statis dan kelas
print(UtilMatematika.tambah(5, 3))        # 8
print(UtilMatematika.dapat_pi())         # 3.14159
print(UtilMatematika.luas_lingkaran(5))   # 78.53975

Additional Resources

English Resources

Sumber Bahasa Indonesia


Contributing

Feel free to contribute to this learning guide by submitting pull requests or opening issues.

About

A complete Python fundamentals tutorial with step-by-step examples and exercises. Covers conditions, loops, functions, data structures, and classes for beginners

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages