Nega formatlaş muhim?
Dastur töğri hisoblaşi — işning yarmi. Qolgan yarmi — natijani odam tuşunadigan körinişda körsatiş. 12500000.0 va 12 500 000.00 soʻm — bir xil son, lekin ikkinçisini öqiş ança oson. Çek, hisobot, jadval yoki oddiy xabar — hammasida çiroyli formatlaş kerak böladi.
Bu bobda print() funksiyasini çuqurroq örganamiz va Pythondagi eng qulay formatlaş vositasi — f-satrlar bilan tanişamiz.
print() funksiyasining parametrlari
Oldingi boblarda print() ga vergul bilan bir neçta qiymat beriş mumkinligini kördik. Python ularni böş joy bilan ajratib çiqaradi va oxirida yangi qatorga ötadi. Bu xatti-harakatni ikkita parametr boşqaradi:
sep— qiymatlar orasiga nima qöyilişi (standart qiymati — bitta böş joy" ");end— oxirida nima çiqarilişi (standart qiymati — yangi qator"\n").
print("2026", "10", "26", sep="-")
print("Olma", "Anor", "Uzum", sep=", ")
print("Toşkent", "Samarqand", "Buxoro", sep=" → ")
Natija:
2026-10-26
Olma, Anor, Uzum
Toşkent → Samarqand → Buxoro
end parametri yordamida bir neçta print() natijasini bitta qatorga yoziş mumkin:
print("Yuklanmoqda", end="")
print("...", end=" ")
print("tayyor!")
print()
print("Yangi bölim")
Natija:
Yuklanmoqda... tayyor!
Yangi bölim
Heç qanday argumentsiz print() şunçaki böş qator çiqaradi — natijani bölimlarga ajratiş uçun qulay.
Maxsus belgilar (escape-ketma-ketliklar)
Satr içida ayrim belgilarni töğridan-töğri yozib bölmaydi. Masalan, satrni qöştirnoq bilan boşlagan bölsangiz, uning içida yana qöştirnoq yozsangiz, Python satr tugadi deb öylaydi. Bunday hollarda teskari çiziq \ bilan boşlanadigan maxsus belgilar işlatiladi:
| Belgi | Maʼnosi |
|---|---|
\n | yangi qator |
\t | tabulyatsiya (katta böş joy) |
\\ | teskari çiziqning özi |
\" | qöştirnoq |
\' | bittalik tirnoq |
print("Birinçi qator\nIkkinçi qator")
print("Ism:\tLola\nYoş:\t21")
print("Kitob nomi: \"Ötkan kunlar\"")
print("Papka: C:\\Hujjatlar\\2026")
Natija:
Birinçi qator
Ikkinçi qator
Ism: Lola
Yoş: 21
Kitob nomi: "Ötkan kunlar"
Papka: C:\Hujjatlar\2026
Qöştirnoqni çiqarişning yana bir oson yöli — satrni bittalik tirnoq bilan oçiş: 'Kitob nomi: "Ötkan kunlar"'. Python uçun '...' va "..." bir xil, şuning uçun içidagi belgiga qarab qulayini tanlang.
Bir neça qatorli matn uçun uçtalik qöştirnoq """...""" işlatiladi — unda yangi qatorlar öz holiça saqlanadi:
elon = """Diqqat!
Ertaga soat 10:00 da
majlis böladi."""
print(elon)
Natija:
Diqqat!
Ertaga soat 10:00 da
majlis böladi.
Xom satrlar (raw string)
Baʼzan teskari çiziqning maxsus maʼnosi xalaqit beradi. Windowsdagi fayl yölini olaylik:
yol = "C:\nodir\tarix"
print(yol)
Natija:
C:
odir arix
Python \n ni yangi qator, \t ni esa tabulyatsiya deb tuşundi. Har bir \ ni ikkilantiriş mumkin, lekin oddiyroq yöl bor: satr oldiga r harfini qöyiş. Bunday xom satrda teskari çiziq oddiy belgi sifatida qoladi:
yol = r"C:\nodir\tarix"
print(yol)
Natija:
C:\nodir\tarix
Xom satrlar fayl yöllari va keyinroq örganadigan muntazam ifodalar (re moduli) uçun juda qulay.
Qiymat turini biliş: type()
Formatlaşda qiymat turini biliş muhim, çunki "5" va 5 butunlay boşqa narsalar. type() funksiyasi buni aniqlaşga yordam beradi:
print(type("5"))
print(type(5))
print(type(5.0))
print(type(True))
print("5" * 3, 5 * 3)
Natija:
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
555 15
Oxirgi qator qiziq: satrni songa köpaytiriş uni takrorlaydi, sonni köpaytiriş esa hisoblaydi.
f-satrlar — asosiy formatlaş vositasi
Satr içiga özgaruvçi qiymatini qöyişning eng qulay usuli — f-satr (inglizça f-string). Satr oldiga f harfi qöyiladi, özgaruvçi yoki ifoda esa jingalak qavs {} içida yoziladi:
ism = "Malika"
yosh = 19
shahar = "Namangan"
print(f"{ism} {yosh} yoşda, {shahar}da yaşaydi.")
print(f"Kelasi yili u {yosh + 1} yoşga töladi.")
Natija:
Malika 19 yoşda, Namanganda yaşaydi.
Kelasi yili u 20 yoşga töladi.
Qavs içida istalgan ifoda yoziş mumkin: hisob-kitob, funksiya çaqiruvi va hokazo. f-satrlar tez işlaydi va kodni öqiş oson, şuning uçun zamonaviy Python kodida asosan ular işlatiladi.
Kasr xonalari soni
Qavs içida ikki nuqtadan keyin format spetsifikatori yoziladi. .2f — "ikki xonali kasr" degani:
narx = 12650.5
pi = 3.141592653589793
print(f"Dollar kursi: {narx:.2f}")
print(f"Pi soni: {pi:.3f}")
print(f"Butun qismi: {pi:.0f}")
Natija:
Dollar kursi: 12650.50
Pi soni: 3.142
Butun qismi: 3
Format faqat körinişni özgartiradi, özgaruvçidagi qiymat esa avvalgidek qoladi.
Minglik ajratgiç
Katta sonlarni xonalarga ajratib çiqariş uçun , yoki _ işlatiladi. Özbekistonda xonalarni böş joy bilan ajratiş odatiy, şuning uçun vergulni böş joyga almaştiriş mumkin:
maosh = 8750000
print(f"{maosh:,}")
print(f"{maosh:_}")
print(f"{maosh:,}".replace(",", " ") + " söm")
print(f"{1234567.891:,.2f}")
Natija:
8,750,000
8_750_000
8 750 000 söm
1,234,567.89
Kenglik va tekislaş
Jadval körinişidagi natija uçun har bir ustunga aniq kenglik beriş kerak. Kenglik son bilan, tekislaş esa belgi bilan beriladi:
| Belgi | Tekislaş |
|---|---|
< | çapga (satrlar uçun standart) |
> | öngga (sonlar uçun standart) |
^ | markazga |
print(f"|{'Anor':<10}|")
print(f"|{'Anor':>10}|")
print(f"|{'Anor':^10}|")
print(f"|{'Anor':*^10}|")
print(f"|{42:>6}|{42:<6}|{42:06}|")
Natija:
|Anor |
| Anor|
| Anor |
|***Anor***|
| 42|42 |000042|
Tekislaş belgisidan oldin töldiruvçi belgini ham körsatiş mumkin (*^10). 06 esa sonni çap tomondan nollar bilan töldiradi — çek raqamlari yoki ID uçun qulay.
Endi hammasini birlaştirib, bozordan xarid çekini çiqaramiz:
print(f"{'Mahsulot':<10}{'Soni':>6}{'Narx':>10}")
print("-" * 26)
print(f"{'Olma':<10}{3:>6}{12000:>10,}")
print(f"{'Anor':<10}{2:>6}{18500:>10,}")
print(f"{'Asal':<10}{1:>6}{95000:>10,}")
print("-" * 26)
jami = 3 * 12000 + 2 * 18500 + 95000
print(f"{'Jami':<16}{jami:>10,}")
Natija:
Mahsulot Soni Narx
--------------------------
Olma 3 12,000
Anor 2 18,500
Asal 1 95,000
--------------------------
Jami 168,000
Foizlar
% spetsifikatori sonni 100 ga köpaytirib, oxiriga foiz belgisini qöşadi:
toplagan = 42
jami_savol = 50
ulush = toplagan / jami_savol
print(f"Natija: {ulush:.0%}")
print(f"Inflyatsiya: {0.0875:.1%}")
Natija:
Natija: 84%
Inflyatsiya: 8.8%
Işora va kenglikni özgaruvçidan oliş
+ belgisi musbat sonlarga ham işora qöyadi — masalan, kurs özgarişini körsatiş uçun. Kenglikni esa içki qavs bilan özgaruvçidan oliş mumkin:
ozgarish = 35.4
print(f"Kurs özgarişi: {ozgarish:+.1f}")
print(f"Kurs özgarişi: {-12.0:+.1f}")
kenglik = 12
print(f"[{'Buxoro':^{kenglik}}]")
Natija:
Kurs özgarişi: +35.4
Kurs özgarişi: -12.0
[ Buxoro ]
Tekşiriş uçun = belgisi
Dastur yozayotganda özgaruvçilarning qiymatini tez körib oliş kerak böladi. Qavs içida ifodadan keyin = qöysangiz, Python ifodaning özini ham, qiymatini ham çiqaradi:
narx = 15000
soni = 4
print(f"{narx=}")
print(f"{narx * soni = }")
print(f"{narx / 7 = :.2f}")
Natija:
narx=15000
narx * soni = 60000
narx / 7 = 2142.86
Bu imkoniyat xatolarni qidirişda juda qulay: print("narx:", narx) deb yozib ötirmaysiz.
Eski usullar: .format() va %
Internetdagi eski kodlarda yana ikki formatlaş usulini uçratasiz. Ular hozir ham işlaydi, şuning uçun ularni tanib oliş foydali:
ism = "Sardor"
ball = 87.456
print("{} {:.1f} ball töpladi".format(ism, ball))
print("%s %.1f ball töpladi" % (ism, ball))
print(f"{ism} {ball:.1f} ball töpladi")
Natija:
Sardor 87.5 ball töpladi
Sardor 87.5 ball töpladi
Sardor 87.5 ball töpladi
Uçala qator bir xil natija beradi. .format() usuli f-satrlardan oldin keng tarqalgan edi, % usuli esa undan ham eskiroq. Yangi kod yozganda f-satrlardan foydalaning — ular qisqaroq va öqilişi oson.
Xulosa
print()ningsepparametri qiymatlar orasidagi belgini,endesa oxiridagi belgini belgilaydi.\n,\t,\\,\"— satr içidagi maxsus belgilar;r"..."xom satrda ular oddiy belgi bölib qoladi.type()qiymat turini körsatadi:str,int,float,bool.- f-satrlar:
f"{qiymat:format}". Asosiy spetsifikatorlar:.2f(kasr),,(minglik),<>^(tekislaş),%(foiz),+(işora),06(nollar bilan töldiriş). f"{x=}"özgaruvçi nomi va qiymatini birga çiqaradi — xato qidirişda qulay..format()va%— eski usullar; yangi kodda f-satrlarni işlating.
Maşqlar
- Uçta qiymat bilan
print()ni bir marta çaqirib,12:45:30körinişidagi vaqtni çiqaring.
Yeçim
soat = 12
minut = 45
soniya = 30
print(soat, minut, soniya, sep=":")
- Talaba haqida maʼlumotni f-satr yordamida çiqaring: ism
Bekzod, guruhIT-21, örtaça baho4.6666(ikki xonali kasr bilan).
Yeçim
ism = "Bekzod"
guruh = "IT-21"
ortacha = 4.6666
print(f"Talaba: {ism}, guruh: {guruh}, örtaça baho: {ortacha:.2f}")
- Uç şahar böyiça haroratlar jadvalini çiqaring: şahar nomi 12 belgili ustunda çapga, harorat 8 belgili ustunda öngga tekislansin va bitta kasr xonasi bilan körsatilsin. Şaharlar: Samarqand 31.5, Termiz 38.4, Andijon 29.0.
Yeçim
print(f"{'Samarqand':<12}{31.5:>8.1f}")
print(f"{'Termiz':<12}{38.4:>8.1f}")
print(f"{'Andijon':<12}{29.0:>8.1f}")
- Dökon 2 400 000 sömlik mahsulotga 15% çegirma qildi. Çegirma miqdorini va yangi narxni böş joy bilan ajratilgan minglik xonalarda, çegirma foizini esa
%spetsifikatori bilan çiqaring.
Yeçim
narx = 2_400_000
chegirma_foizi = 0.15
chegirma = narx * chegirma_foizi
yangi_narx = narx - chegirma
print(f"Çegirma: {chegirma_foizi:.0%}")
print(f"Çegirma miqdori: {chegirma:,.0f}".replace(",", " ") + " söm")
print(f"Yangi narx: {yangi_narx:,.0f}".replace(",", " ") + " söm")