For AI agents: use /llms.txt for the Nakafa content index.
Setiap bilangan Python adalah objek dengan tipe numerik. Tipe tersebut menentukan atribut dan metode yang tersedia selain operator aritmetika.
Sebagai contoh, membuat int dan membuat float. Objek numerik tidak dapat diubah, sehingga metodenya mengembalikan informasi atau nilai baru tanpa mengubah bilangan asal.
Baca atribut dengan objek.atribut. Panggil metode dengan objek.metode(), termasuk tanda kurung yang menjalankan pemanggilan.
Mari kita lihat contoh praktis dengan bilangan kompleks:
# Membuat bilangan kompleks
c = 2 + 3j
# Mengakses atribut real (bagian riil)
print(c.real) # Output: 2.0
# Mengakses atribut imag (bagian imajiner)
print(c.imag) # Output: 3.0
# Memanggil metode conjugate() untuk mendapatkan konjugat
print(c.conjugate()) # Output: (2-3j)Sebelum memakai operasi khusus suatu tipe, kamu dapat memeriksa tipe numerik sebuah nilai.
Fungsi type() mengembalikan kelas nilai tersebut:
# Melihat tipe data bilangan
print(type(42)) # Output: <class 'int'>
print(type(3.14)) # Output: <class 'float'>
print(type(2+3j)) # Output: <class 'complex'>Bilangan kompleks menampilkan kedua komponennya melalui atribut real dan imag. Keduanya dikembalikan sebagai nilai floating-point.
Atribut real mengembalikan komponen riil:
# Contoh penggunaan atribut real
z1 = 4 + 5j
z2 = -2 + 7j
z3 = 10 + 0j # Bilangan riil murni
print(f"Bagian riil dari {z1} adalah {z1.real}")
print(f"Bagian riil dari {z2} adalah {z2.real}")
print(f"Bagian riil dari {z3} adalah {z3.real}")
# Output:
# Bagian riil dari (4+5j) adalah 4.0
# Bagian riil dari (-2+7j) adalah -2.0
# Bagian riil dari (10+0j) adalah 10.0Atribut imag mengembalikan koefisien . Python menulis satuan tersebut sebagai j dalam literal bilangan kompleks.
# Contoh penggunaan atribut imag
z1 = 3 + 8j
z2 = 6 - 4j
z3 = 0 + 9j # Bilangan imajiner murni
print(f"Bagian imajiner dari {z1} adalah {z1.imag}")
print(f"Bagian imajiner dari {z2} adalah {z2.imag}")
print(f"Bagian imajiner dari {z3} adalah {z3.imag}")
# Output:
# Bagian imajiner dari (3+8j) adalah 8.0
# Bagian imajiner dari (6-4j) adalah -4.0
# Bagian imajiner dari 9j adalah 9.0Untuk , conjugate() mengembalikan . Bagian riilnya tetap, sedangkan tanda bagian imajinernya berubah.
# Contoh penggunaan metode conjugate()
z1 = 3 + 4j
z2 = -2 - 5j
z3 = 7 + 0j
print(f"Konjugat dari {z1} adalah {z1.conjugate()}")
print(f"Konjugat dari {z2} adalah {z2.conjugate()}")
print(f"Konjugat dari {z3} adalah {z3.conjugate()}")
# Output:
# Konjugat dari (3+4j) adalah (3-4j)
# Konjugat dari (-2-5j) adalah (-2+5j)
# Konjugat dari (7+0j) adalah (7-0j)Identitas menghubungkan bilangan kompleks dengan modulusnya. Contoh berikut memperlihatkan hubungan itu secara eksplisit. Dalam kode Python biasa, abs(z) merupakan cara langsung untuk menghitung modulus.
import math
# Menghitung modulus bilangan kompleks menggunakan konjugat
z = 3 + 4j
modulus_squared = z * z.conjugate()
modulus = math.sqrt(modulus_squared.real)
print(f"Bilangan kompleks: {z}")
print(f"Konjugatnya: {z.conjugate()}")
print(f"z × z*: {modulus_squared}")
print(f"Modulus |z|: {modulus}")
print(f"abs(z) bawaan: {abs(z)}")
# Output:
# Bilangan kompleks: (3+4j)
# Konjugatnya: (3-4j)
# z × z*: (25+0j)
# Modulus |z|: 5.0
# abs(z) bawaan: 5.0Bilangan bulat dan floating-point juga menyediakan metode yang sesuai dengan representasinya.
# Beberapa metode pada bilangan integer
n = 42
# Metode bit_length() - menghitung jumlah bit yang diperlukan
print(f"Jumlah bit untuk {n}: {n.bit_length()}")
# Metode to_bytes() - mengkonversi ke bytes
byte_representation = n.to_bytes(2, byteorder='big')
print(f"Representasi byte dari {n}: {byte_representation}")
# Output:
# Jumlah bit untuk 42: 6
# Representasi byte dari 42: b'\x00*'bit_length() menghitung jumlah bit untuk nilai absolut bilangan bulat, tanpa tanda dan nol di depan. to_bytes() juga memerlukan panjang keluaran serta urutan byte, sehingga hasil dua byte di atas diawali byte nol.
# Beberapa metode pada bilangan float
f = 3.14159
# Metode is_integer() - mengecek apakah float adalah bilangan bulat
print(f"{f} adalah bilangan bulat: {f.is_integer()}")
print(f"{4.0} adalah bilangan bulat: {(4.0).is_integer()}")
# Metode as_integer_ratio() - mengembalikan rasio sebagai pecahan
ratio = f.as_integer_ratio()
print(f"Rasio dari {f}: {ratio}")
# Output:
# 3.14159 adalah bilangan bulat: False
# 4.0 adalah bilangan bulat: True
# Rasio dari 3.14159: (3537115888337719, 1125899906842624)is_integer() memeriksa apakah float terbatas tidak memiliki bagian pecahan. as_integer_ratio() mengembalikan pecahan persis dari float biner yang tersimpan, yang dapat berbeda dari pecahan desimal yang dibayangkan pembaca.
Atribut dapat mendukung aturan validasi yang eksplisit. Fungsi berikut mengharuskan masukan berupa objek complex, lalu menerapkan dua contoh aturan domain pada komponennya.
def validate_complex_input(z):
"""Fungsi untuk memvalidasi input bilangan kompleks"""
if not isinstance(z, complex):
return False, "Input bukan bilangan kompleks"
if z.real < 0:
return False, "Bagian riil tidak boleh negatif"
if z.imag == 0:
return False, "Bagian imajiner tidak boleh nol"
return True, "Input valid"
# Testing fungsi validasi
test_numbers = [3+4j, -2+5j, 7+0j, 2.5+1.5j]
for num in test_numbers:
is_valid, message = validate_complex_input(num)
print(f"{num}: {message}")def complex_operations(z1, z2):
"""Melakukan berbagai operasi pada bilangan kompleks"""
print(f"Bilangan 1: {z1}")
print(f"Bilangan 2: {z2}")
print(f"Bagian riil z1: {z1.real}")
print(f"Bagian imajiner z1: {z1.imag}")
print(f"Konjugat z1: {z1.conjugate()}")
# Operasi matematika
penjumlahan = z1 + z2
perkalian = z1 * z2.conjugate()
print(f"z1 + z2 = {penjumlahan}")
print(f"z1 × z2* = {perkalian}")
# Contoh penggunaan
z1 = 2 + 3j
z2 = 1 - 2j
complex_operations(z1, z2)Pola pentingnya adalah mengenali tipe numerik, memilih operasi yang dimiliki tipe tersebut, dan memahami apakah hasilnya berupa komponen, representasi, atau nilai baru. Perbedaan ini makin penting saat kode numerik berkembang melampaui satu ekspresi.