OzbekPython / Bob 03

print() va satrlarni formatlaş

print() funksiyasining imkoniyatlari, maxsus belgilar, xom satrlar va f-satrlar yordamida çiroyli, tartibli natija çiqariş.

Boşlanğiç daraja20 daqiqa20 kod misoli3 / 24

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.

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").
Python
print("2026", "10", "26", sep="-")
print("Olma", "Anor", "Uzum", sep=", ")
print("Toşkent", "Samarqand", "Buxoro", sep=" → ")

Natija:

Natija
2026-10-26
Olma, Anor, Uzum
Toşkent → Samarqand → Buxoro

end parametri yordamida bir neçta print() natijasini bitta qatorga yoziş mumkin:

Python
print("Yuklanmoqda", end="")
print("...", end=" ")
print("tayyor!")
print()
print("Yangi bölim")

Natija:

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:

BelgiMaʼnosi
\nyangi qator
\ttabulyatsiya (katta böş joy)
\\teskari çiziqning özi
\"qöştirnoq
\'bittalik tirnoq
Python
print("Birinçi qator\nIkkinçi qator")
print("Ism:\tLola\nYoş:\t21")
print("Kitob nomi: \"Ötkan kunlar\"")
print("Papka: C:\\Hujjatlar\\2026")

Natija:

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:

Python
elon = """Diqqat!
Ertaga soat 10:00 da
majlis böladi."""
print(elon)

Natija:

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:

Python
yol = "C:\nodir\tarix"
print(yol)

Natija:

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:

Python
yol = r"C:\nodir\tarix"
print(yol)

Natija:

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:

Python
print(type("5"))
print(type(5))
print(type(5.0))
print(type(True))
print("5" * 3, 5 * 3)

Natija:

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:

Python
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:

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:

Python
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:

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:

Python
maosh = 8750000
print(f"{maosh:,}")
print(f"{maosh:_}")
print(f"{maosh:,}".replace(",", " ") + " söm")
print(f"{1234567.891:,.2f}")

Natija:

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:

BelgiTekislaş
<çapga (satrlar uçun standart)
>öngga (sonlar uçun standart)
^markazga
Python
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:

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:

Python
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:

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:

Python
toplagan = 42
jami_savol = 50
ulush = toplagan / jami_savol
print(f"Natija: {ulush:.0%}")
print(f"Inflyatsiya: {0.0875:.1%}")

Natija:

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:

Python
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:

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:

Python
narx = 15000
soni = 4
print(f"{narx=}")
print(f"{narx * soni = }")
print(f"{narx / 7 = :.2f}")

Natija:

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:

Python
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:

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() ning sep parametri qiymatlar orasidagi belgini, end esa 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

  1. Uçta qiymat bilan print() ni bir marta çaqirib, 12:45:30 körinişidagi vaqtni çiqaring.
Yeçim
Python
soat = 12
minut = 45
soniya = 30
print(soat, minut, soniya, sep=":")
  1. Talaba haqida maʼlumotni f-satr yordamida çiqaring: ism Bekzod, guruh IT-21, örtaça baho 4.6666 (ikki xonali kasr bilan).
Yeçim
Python
ism = "Bekzod"
guruh = "IT-21"
ortacha = 4.6666
print(f"Talaba: {ism}, guruh: {guruh}, örtaça baho: {ortacha:.2f}")
  1. 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
Python
print(f"{'Samarqand':<12}{31.5:>8.1f}")
print(f"{'Termiz':<12}{38.4:>8.1f}")
print(f"{'Andijon':<12}{29.0:>8.1f}")
  1. 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
Python
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")