# Nakafa Framework: LLM
URL: /id/subject/university/bachelor/ai-ds/ai-programming/string-formatting
Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/ai-programming/string-formatting/id.mdx
Output docs content for large language models.
---
export const metadata = {
    title: "Pemformatan String",
    description: "Pelajari teknik pemformatan string Python dengan format(), f-strings, alignment, precision control, dan error handling. Panduan lengkap dengan contoh praktis.",
    authors: [{ name: "Nabil Akbarazzima Fatih" }],
    date: "09/17/2025",
    subject: "Pemrograman AI",
};
## Konsep Dasar dan Width Control
Pemformatan string mengatur tampilan data dalam program Python. Bayangkan menyusun data dalam tabel yang rapi, setiap kolom memiliki lebar konsisten. Python menyediakan metode `format()` dan f-strings untuk mengontrol tampilan output.
Sintaks dasar replacement field adalah `{name : width}`, dimana `name` menentukan argumen dan `width` mengatur lebar minimum output. Ketika width lebih kecil dari panjang string asli, Python tetap menampilkan string lengkap.
### Format Types untuk Sistem Bilangan
| Format Type | Simbol | Contoh Input | Output | Kegunaan |
|-------------|---------|--------------|--------|----------|
| Desimal | `d` | `45` | `45` | Default untuk integer |
| Biner | `b` | `45` | `101101` | Representasi bit |
| Oktal | `o` | `45` | `55` | Sistem Unix |
| Heksadesimal | `x/X` | `45` | `2d/2D` | Pemrograman tingkat rendah |
## Pengaturan Posisi dan Karakter Pengisi
### Opsi Alignment
 B["Pilihan Alignment"]
        
        B --> C["< (Left)"]
        B --> D["> (Right)"] 
        B --> E["^ (Center)"]
        
        C --> F["Output:
'xxx            '"]
        D --> G["Output:
'            xxx'"]
        E --> H["Output:
'      xxx      '"]
  `}
/>
| Simbol | Nama | Behavior | Default untuk |
|--------|------|----------|---------------|
| `<` | Left | Teks di kiri, padding di kanan | String, objek |
| `>` | Right | Teks di kanan, padding di kiri | Angka |
| `^` | Center | Teks di tengah, padding merata | - |
### Karakter Pengisi dan Format Lanjutan
Fill character menentukan karakter pengisi ruang kosong. Default menggunakan spasi, tapi bisa diganti dengan karakter apapun kecuali `{` dan `}`.
15}|'.format('xxx'))    # Output: |            xxx|
print('|{0:^15}|'.format('xxx'))    # Output: |      xxx      |
# Custom fill characters
print('|{0:-<15}|'.format('xxx'))   # Output: |xxx------------|
print('|{0:*>15}|'.format('xxx'))   # Output: |************xxx|
print('|{0:^^15}|'.format('xxx'))   # Output: |^^^^^^xxx^^^^^^|
# Decimal formatting
x = 123.98
print('x = {0:12f}'.format(x))      # Output: x =   123.980000
print('x = {0:12e}'.format(x))      # Output: x = 1.239800e+02`
    }
  ]}
/>
## Metode Referensi Argumen
Python menyediakan tiga cara mereferensikan argumen dalam replacement fields, masing-masing dengan aturan berbeda.
 B["Metode Referensi Argumen"]
        
        B --> C["Numbered Fields
{0} {1} {2}"]
        B --> D["Keyword Fields
{name} {age}"]
        B --> E["Automatic Fields
{} {} {}"]
        
        C --> F["✓ Kontrol eksplisit
✓ Bisa diulang
✗ Harus sesuai jumlah"]
        D --> G["✓ Mudah dibaca
✓ Urutan fleksibel
✗ Nama harus cocok"]
        E --> H["✓ Sintaks sederhana
✓ Urutan berurutan
✗ Tidak bisa dicampur"]
  `}
/>
### Perbandingan Metode Referensi
| Metode | Sintaks | Kelebihan | Batasan |
|--------|---------|-----------|---------|
| Numbered | `{0}, {1}` | Kontrol eksplisit, bisa diulang | Harus sesuai jumlah argumen |
| Keyword | `{name}, {age}` | Mudah dibaca, fleksibel | Nama harus cocok |
| Automatic | `{}, {}` | Sintaks sederhana | Tidak bisa dicampur dengan numbered |
## Kontrol Presisi dan Spesifikasi Tanda
### Presisi untuk Angka Desimal
Precision mengontrol jumlah digit desimal atau digit signifikan dalam tampilan angka.
| Format Type | Precision Behavior | Contoh |
|-------------|-------------------|--------|
| `f/F` | Tempat desimal | `{:.2f}` → `123.99` |
| `e/E` | Tempat desimal dalam eksponensial | `{:.2e}` → `1.24e+02` |
| `g/G` | Digit signifikan | `{:.3g}` → `124` |
### Opsi Tanda
 B{"Pilihan Sign"}
        
        B --> C["+ (selalu tampilkan)"]
        B --> D["- (default)"]
        B --> E["spasi (untuk positif)"]
        
        C --> F["Output:
+100, -200"]
        D --> G["Output:
100, -200"]
        E --> H["Output:
 100, -200"]
  `}
/>
| Simbol | Behavior | Contoh |
|--------|----------|--------|
| `+` | Selalu tampilkan tanda | `+100`, `-200` |
| `-` | Hanya tanda negatif (default) | `100`, `-200` |
| ` ` (spasi) | Spasi untuk positif | ` 100`, `-200` |
## F-Strings dan Template Dinamis
### F-Strings (Python 3.6+)
F-strings menyediakan sintaks paling sederhana dengan evaluasi ekspresi langsung. Lebih cepat dan mudah dibaca dibandingkan `format()`.
### Template Format Dinamis
Template format dapat menggunakan variabel untuk specification, berguna ketika format ditentukan secara dinamis.
### Pola Lengkap Format Specification
 B["Urutan Komponen"]
        
        B --> C[": (mulai)"]
        C --> D["fill (karakter pengisi)"]
        D --> E["align (posisi: < > ^)"]
        E --> F["sign (tanda: + - spasi)"]
        F --> G["width (lebar minimum)"]
        G --> H[".prec (presisi desimal)"]
        H --> I["type (tipe: d b o x f e g)"]
        
        J["Contoh Lengkap"] --> K["{nilai:*^+10.2f}"]
        K --> L["* = fill character
^ = center align
+ = always show sign
10 = width minimum
.2 = 2 decimal places
f = float type"]
  `}
/>
Format specification mengikuti pola `{name:fill align sign width .prec type}` dimana setiap komponen opsional dan memiliki fungsi spesifik untuk mengontrol tampilan output.