Command Palette

Search for a command to run...

Pemrograman AI

Pemformatan String

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 TypeSimbolContoh InputOutputKegunaan
Desimald4545Default untuk integer
Binerb45101101Representasi bit
Oktalo4555Sistem Unix
Heksadesimalx/X452d/2DPemrograman tingkat rendah
Pythonwidth_and_types.py
# Width control dengan berbagai formatprint('|{0:15}|'.format('xxx'))     # Output: |xxx            |print('a = {0:6d}'.format(45))      # Output: a =     45print('a = {0:10b}'.format(45))     # Output: a =     101101print('a = {0:6x}'.format(45))      # Output: a =     2d# Width lebih kecil dari string - tidak dipotongprint('|{0:1}|'.format('xxx'))      # Output: |xxx|

Pengaturan Posisi dan Karakter Pengisi

Opsi Alignment

Mermaidmermaid
Loading
SimbolNamaBehaviorDefault untuk
<LeftTeks di kiri, padding di kananString, objek
>RightTeks di kanan, padding di kiriAngka
^CenterTeks 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 }.

Pythonalignment_fill.py
# Basic alignmentprint('|{0:<15}|'.format('xxx'))    # Output: |xxx            |print('|{0:>15}|'.format('xxx'))    # Output: |            xxx|print('|{0:^15}|'.format('xxx'))    # Output: |      xxx      |# Custom fill charactersprint('|{0:-<15}|'.format('xxx'))   # Output: |xxx------------|print('|{0:*>15}|'.format('xxx'))   # Output: |************xxx|print('|{0:^^15}|'.format('xxx'))   # Output: |^^^^^^xxx^^^^^^|# Decimal formattingx = 123.98print('x = {0:12f}'.format(x))      # Output: x =   123.980000print('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.

Mermaidmermaid
Loading

Perbandingan Metode Referensi

MetodeSintaksKelebihanBatasan
Numbered{0}, {1}Kontrol eksplisit, bisa diulangHarus sesuai jumlah argumen
Keyword{name}, {age}Mudah dibaca, fleksibelNama harus cocok
Automatic{}, {}Sintaks sederhanaTidak bisa dicampur dengan numbered
Pythonargument_methods.py
# Numbered fields - kontrol eksplisitprint('{2} - {0} - {1}'.format('first', 'second', 'third'))# Output: third - first - second# Keyword fields - menggunakan namaprint('{name} is {age} years old'.format(name='Alice', age=25))# Output: Alice is 25 years old# Automatic numbering - urutan berurutanprint('{} + {} = {}'.format(5, 3, 8))# Output: 5 + 3 = 8# Error handlingtry:  print('{a} - {b}'.format(a='xxx'))  # Akan errorexcept KeyError as e:  print(f"KeyError: {e}")  # Output: KeyError: 'b'  try:  print('{0} - {1}'.format('xxx'))    # Akan errorexcept IndexError as e:  print(f"IndexError: {e}")  # Output: IndexError: Replacement index 1 out of range for positional args tuple

Kontrol Presisi dan Spesifikasi Tanda

Presisi untuk Angka Desimal

Precision mengontrol jumlah digit desimal atau digit signifikan dalam tampilan angka.

Format TypePrecision BehaviorContoh
f/FTempat desimal{:.2f}123.99
e/ETempat desimal dalam eksponensial{:.2e}1.24e+02
g/GDigit signifikan{:.3g}124

Opsi Tanda

Mermaidmermaid
Loading
SimbolBehaviorContoh
+Selalu tampilkan tanda+100, -200
-Hanya tanda negatif (default)100, -200
(spasi)Spasi untuk positif 100, -200
Pythonprecision_sign.py
# Precision controlprint('x = {0:.3f}'.format(123.98765))     # Output: x = 123.988print('x = {0:12.2e}'.format(1.987e-10))   # Output: x =     1.99e-10print('x = {0:.3g}'.format(1.123456))      # Output: x = 1.12# Sign specificationnumbers = [-100, 200, -300]print('Default:', ['{:d}'.format(n) for n in numbers])# Output: Default: ['-100', '200', '-300']print('Always sign:', ['{:+d}'.format(n) for n in numbers])# Output: Always sign: ['-100', '+200', '-300']print('Space positive:', ['{: d}'.format(n) for n in numbers])# Output: Space positive: ['-100', ' 200', '-300']# Rounding behaviorprint('Tiny number f: {0:12f}'.format(1.1e-10))  # Output: Tiny number f:     0.000000print('Tiny number g: {0:12g}'.format(1.1e-10))  # Output: Tiny number g:      1.1e-10

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.

Pythonfstrings_dynamic.py
# F-strings - sintaks sederhananame, age = 'Alice', 25print(f'{name} is {age} years old')           # Output: Alice is 25 years oldprint(f'Next year: {name} will be {age + 1}') # Output: Next year: Alice will be 26# Dynamic format templatesvalue, width, fill, align = 'data', 12, '-', '^'template = '|{val:{f}{a}{w}}|'result = template.format(val=value, w=width, f=fill, a=align)print(result)                                 # Output: |----data----|# Comparison - same output, different methodsx = 123.456print('Old style: %8.2f' % x)                # Output: Old style:   123.46print('Format method: {0:8.2f}'.format(x))   # Output: Format method:   123.46print(f'F-string: {x:8.2f}')                 # Output: F-string:   123.46# Complex f-string with format specimport mathradius = 5.7print(f'Area: {math.pi * radius**2:.2f} cm²') # Output: Area: 102.07 cm²

Pola Lengkap Format Specification

Mermaidmermaid
Loading

Format specification mengikuti pola {name:fill align sign width .prec type} dimana setiap komponen opsional dan memiliki fungsi spesifik untuk mengontrol tampilan output.