21. Functions — Solusi Pekerjaan Rumah
File solusi .py ada di
exercises/21/homework/solutions/.
Soal 1 — Greet
Soal. Sebuah function greet(name) yang
mencetak salam, dipanggil tiga kali.
Cara berpikir. Satu parameter, satu baris
print; si pemanggil mengoper sebuah string di setiap
pemanggilan.
Solusi.
def greet(name):
print(f"Hello, {name}!")
greet("Keiko")
greet("Python")
greet("World")Kesalahan umum.
- Menulis statement
returnalih-alihprint. Function harus mencetak langsung; si pemanggil tidak butuh nilai balik. - Lupa titik dua di akhir
def greet(name):. Python memerlukannya dan akan memunculkanSyntaxErrortanpanya.
Soal 2 — is_even
Soal. Kembalikan True atau
False dari n % 2 == 0. Tidak ada pencetakan di
dalam function.
Cara berpikir. n % 2 == 0 sudah berupa
boolean. return langsung; biarkan si pemanggil yang
mencetak.
Solusi.
def is_even(n):
return n % 2 == 0
print(is_even(4)) # True
print(is_even(7)) # False
print(is_even(0)) # True
print(is_even(-2)) # TrueSatu baris itu adalah seluruh isi function: Python mengevaluasi
n % 2, lalu ... == 0, dan mengembalikan
boolean-nya.
Kesalahan umum.
Menulis function seperti ini:
if n % 2 == 0: return True else: return FalseEmpat baris untuk apa yang bisa dilakukan satu baris di atas.
n % 2 == 0sudah berupa boolean.
Soal 3 — Clamp
Soal. clamp(x, lo, hi) mengembalikan
x yang dibatasi oleh lo dan
hi.
Cara berpikir. Dua pengecekan guard di bagian atas
menangani kasus di luar rentang; jika tidak, kembalikan x
apa adanya.
Solusi.
def clamp(x, lo, hi):
if x < lo:
return lo
if x > hi:
return hi
return x
print(clamp(5, 0, 10)) # 5
print(clamp(-3, 0, 10)) # 0
print(clamp(99, 0, 10)) # 10Dua blok if bersifat independen karena masing-masing
me-return: yang pertama terpenuhi akan keluar dari function. Jika tidak,
return x yang dijalankan.
Kesalahan umum.
- Mengharapkan
clamp(99, 0, 10)menghasilkan99. Dibatasi oleh memaksa output berada di dalam rentang, sehingga mengembalikan10.
Tantangan — Swap
Soal. Sebuah function yang mengembalikan dua nilai yang ditukar, beserta pemanggilan multi-assignment.
Cara berpikir. Isinya hanya satu baris:
return b, a. Si pemanggil menulis
x, y = swap(x, y) untuk menerima keduanya sekaligus.
Solusi.
def swap(a, b):
return b, a
x = 1
y = 2
print(f"Before: x={x} y={y}")
x, y = swap(x, y)
print(f"After: x={x} y={y}")Output:
Before: x=1 y=2
After: x=2 y=1
Trik a, b = b, a yang sama dari Bab 11, dibungkus dalam
sebuah function. Tidak menambah kemampuan, tapi memberi nama
pada operasinya sehingga kode pemanggil lebih mudah dibaca.
Kesalahan umum.
- Menulis
x, y = swap(x, y), 0. Itu adalah syntax error atau memberikan hasil yang tidak terduga. Untuk membongkar nilai return yang berjumlah banyak, pemanggilan harus berdiri sendiri di sisi kanan assignment.
Selesai?
Dua bab berikutnya membahas list dan dictionary, struktur data bawaan Python. Lalu module untuk memisahkan kode ke beberapa file, dan mini-project Part 5: petualangan teks.