Satrlar bilan ishlash

Ismlar, xabarlar, manzillar, parollar — dasturlar doimo matn bilan ishlaydi. Python'da matn satr (str) deb ataladi. Bu darsda satrlarni birlashtirish, bo'laklarga ajratish va o'zgartirishni o'rganamiz.

Bu darsda

  • Satrlarni birlashtirish va takrorlash
  • Satr uzunligi — len()
  • Indekslar: satrdan bitta belgini olish
  • Kesmalar: satrning bir qismini olish
  • Satr metodlari: upper(), strip(), replace(), split() va boshqalar
  • f-satrlar — o'zgaruvchilarni matnga qulay joylash

Satr yaratish

Satr — qo'shtirnoq ichidagi belgilar ketma-ketligi. Bir necha qatorli matn uchun uchtalik qo'shtirnoq """ ishlatiladi:

shahar = "Samarqand"
maqol = """Ilm olish — igna bilan
quduq qazishdek gap."""
print(shahar)
print(maqol)

Birlashtirish va takrorlash

+ belgisi satrlarni bir-biriga yopishtiradi, * esa satrni takrorlaydi:

ism = "Aziz"
familiya = "Karimov"
toliq = familiya + " " + ism
print(toliq)
print("-" * 20)
print("Ha" * 3)
Karimov Aziz
--------------------
HaHaHa

+ o'z-o'zidan bo'sh joy qo'ymaydi — uni " " ko'rinishida o'zingiz qo'shishingiz kerak.

Satr uzunligi: len()

len() funksiyasi satrdagi belgilar sonini qaytaradi. Bo'sh joylar va tinish belgilari ham sanaladi:

print(len("Python"))
print(len("Salom, dunyo!"))
print(len(""))
6
13
0

Indekslar: bitta belgini olish

Satrdagi har bir belgining o'z tartib raqami — indeksi bor. Diqqat: dasturlashda sanash 0 dan boshlanadi! Belgini olish uchun o'zgaruvchi nomidan keyin kvadrat qavs ichida indeks yoziladi: soz[0].

BelgiPython
Indeks012345
Teskari-6-5-4-3-2-1
soz = "Python"
print(soz[0])
print(soz[3])
print(soz[-1])
print(soz[-2])
P
h
n
o

Manfiy indekslar satrni oxiridan sanaydi: -1 — oxirgi belgi, -2 — oxiridan ikkinchisi. Bu satr uzunligini bilmasdan ham oxirgi belgini olishning qulay usuli.

Mavjud bo'lmagan indeksni so'rasangiz, Python IndexError beradi:

soz = "Python"
print(soz[6])

Kesmalar: satrning bir qismini olish

Kesma (inglizcha slice) satrning bir bo'lagini qaytaradi: soz[boshi:oxiri]. Bunda boshi indeksli belgi kiradi, oxiri esa kirmaydi.

soz = "Toshkent"
print(soz[0:4])
print(soz[4:8])
print(soz[:4])
print(soz[4:])
print(soz[-3:])
print(soz[::-1])
Tosh
kent
Tosh
kent
ent
tnekhsoT

Satrlarni o'zgartirib bo'lmaydi

Satr yaratilgandan keyin uning ichidagi belgini almashtirib bo'lmaydi:

soz = "Salom"
soz[0] = "K"

Buning o'rniga yangi satr yasaladi: soz = "K" + soz[1:]. Quyida ko'radigan barcha metodlar ham asl satrni o'zgartirmaydi, balki yangi satr qaytaradi.

Satr metodlari

Metod — muayyan turdagi qiymatga tegishli funksiya. U qiymatdan keyin nuqta qo'yib chaqiriladi: matn.upper(). Satrlarning eng foydali metodlari:

MetodNima qiladiMisolNatija
upper()Hammasini katta harf qiladi"salom".upper()"SALOM"
lower()Hammasini kichik harf qiladi"SALOM".lower()"salom"
title()Har so'zni bosh harf bilan"ali valiyev".title()"Ali Valiyev"
capitalize()Faqat birinchi harf katta"salom DUNYO".capitalize()"Salom dunyo"
strip()Chetdagi bo'sh joylarni olib tashlaydi" ha ".strip()"ha"
replace(a, b)a ni b ga almashtiradi"olma".replace("o", "a")"alma"
count(a)a necha marta uchrashini sanaydi"banan".count("a")2
find(a)a ning birinchi indeksi (yo'q bo'lsa -1)"salom".find("l")2
startswith(a)a bilan boshlanadimi?"+998901234567".startswith("+998")True
endswith(a)a bilan tugaydimi?"rasm.jpg".endswith(".jpg")True
isdigit()Faqat raqamlardan iboratmi?"2026".isdigit()True
split()Satrni bo'laklarga ajratadi"a b c".split()['a', 'b', 'c']
matn = "  Bugun havo juda issiq  "
print(matn.strip())
print(matn.upper())
print(matn.replace("issiq", "salqin").strip())
print(matn.count("u"))
Bugun havo juda issiq
  BUGUN HAVO JUDA ISSIQ
Bugun havo juda salqin
3

Metodlarni ketma-ket ham chaqirish mumkin: matn.strip().upper() — avval bo'sh joylar olinadi, keyin natija katta harflarga o'tkaziladi.

split() va join()

split() satrni bo'laklarga ajratib, ro'yxat qaytaradi (ro'yxatlarni 12-darsda o'rganamiz). Qavs ichida ajratuvchi belgini ko'rsatish mumkin. join() esa aksincha — bo'laklarni bitta satrga yig'adi:

sana = "18.10.2026"
qismlar = sana.split(".")
print(qismlar)

mevalar = "olma,anor,uzum"
print(mevalar.split(","))

print(" - ".join(["olma", "anor", "uzum"]))
['18', '10', '2026']
['olma', 'anor', 'uzum']
olma - anor - uzum

in — satr ichida bormi?

in kalit so'zi bir satr ikkinchisining ichida bor-yo'qligini tekshiradi va True yoki False qaytaradi:

xabar = "Ertaga dars soat 9:00 da boshlanadi"
print("dars" in xabar)
print("imtihon" in xabar)

f-satrlar: matnga qiymat joylash

O'zgaruvchilarni matnga joylashtirishning eng qulay usuli — f-satr. Qo'shtirnoq oldiga f harfi qo'yiladi, o'zgaruvchilar esa figurali qavs { } ichiga yoziladi:

ism = "Malika"
yosh = 16
print(f"Salom, {ism}! Siz {yosh} yoshdasiz.")
print(f"Kelasi yili {yosh + 1} yoshga to'lasiz.")
Salom, Malika! Siz 16 yoshdasiz.
Kelasi yili 17 yoshga to'lasiz.

Solishtiring: xuddi shu natijani + bilan olish uchun "Salom, " + ism + "! Siz " + str(yosh) + " yoshdasiz." deb yozish kerak bo'lardi. f-satr ancha qisqa va o'qilishi oson, u sonlarni ham o'zi matnga aylantiradi.

Sonlarni chiroyli ko'rsatish

Figurali qavs ichida ikki nuqtadan keyin format ko'rsatish mumkin:

narx = 1250000
pi = 3.14159265
print(f"{pi:.2f}")
print(f"{narx:,}")
print(f"{narx:,} so'm".replace(",", " "))
3.14
1,250,000
1 250 000 so'm

Mashqlar

1-mashq Ismni tartibga keltiring

Foydalanuvchi ismini tartibsiz kiritdi. Uni chetidagi bo'sh joylarsiz va har so'z bosh harf bilan chiqaring: Ali Valiyev.

ism = "   aLI vaLIyev  "
Yechimni ko'rish
ism = "   aLI vaLIyev  "
print(ism.strip().title())

2-mashq Teskari so'z

soz o'zgaruvchisidagi so'zni teskari tartibda chiqaring.

soz = "Python"
Yechimni ko'rish
soz = "Python"
print(soz[::-1])

3-mashq Chek

f-satr yordamida xarid chekini chiqaring. Natija aynan shunday bo'lishi kerak: Olma: 2.5 kg x 12000 so'm = 30000 so'm

mahsulot = "Olma"
kg = 2.5
narx = 12000
Ishora

kg * narx natijasi 30000.0 bo'ladi (kasr son). Uni nuqtasiz ko'rsatish uchun :.0f formatidan yoki int() dan foydalaning.

Yechimni ko'rish
mahsulot = "Olma"
kg = 2.5
narx = 12000
print(f"{mahsulot}: {kg} kg x {narx} so'm = {kg * narx:.0f} so'm")

4-mashq Elektron pochta

Elektron pochta manzilidan foydalanuvchi nomini (@ belgisigacha bo'lgan qismni) va domenni ajratib oling.

Foydalanuvchi: aziz.karimov
Domen: mail.uz
pochta = "aziz.karimov@mail.uz"
Ishora

pochta.split("@") ikki bo'lakli ro'yxat qaytaradi. Birinchi bo'lak — [0], ikkinchisi — [1].

Yechimni ko'rish
pochta = "aziz.karimov@mail.uz"
qismlar = pochta.split("@")
print("Foydalanuvchi:", qismlar[0])
print("Domen:", qismlar[1])

5-mashq Harflarni sanang

Matnda «a» harfi necha marta uchrashini sanang. Katta «A» ham hisobga olinsin.

salom = "Assalomu alaykum"
Ishora

Avval butun matnni kichik harflarga o'tkazing, keyin sanang.

Yechimni ko'rish
salom = "Assalomu alaykum"
print(salom.lower().count("a"))

O'zingizni sinang

"Salom"[1] nimaga teng?

  1. "S"
  2. "a"
  3. "l"
  4. Xato beradi

To'g'ri. Indekslar 0 dan boshlanadi: S — 0, a — 1.

len("Python") nimaga teng?

  1. 5
  2. 7
  3. 6
  4. 0

To'g'ri. Python so'zida 6 ta harf bor. Indekslar esa 0 dan 5 gacha.

"ab" * 3 nimaga teng?

  1. "ababab"
  2. "ab3"
  3. "aaabbb"
  4. Xato beradi

To'g'ri. Satrni songa ko'paytirish uni takrorlaydi.

"Toshkent"[:4] nimani qaytaradi?

  1. "Toshk"
  2. "kent"
  3. "oshk"
  4. "Tosh"

To'g'ri. 0, 1, 2, 3-indeksli belgilar olinadi; 4-indeks kirmaydi.

x = 7 bo'lsa, f"Natija: {x * 2}" nimaga teng?

  1. "Natija: {x * 2}"
  2. "Natija: 14"
  3. "Natija: 77"
  4. "Natija: x * 2"

To'g'ri. f-satrda figurali qavs ichidagi ifoda hisoblanadi va natija matnga qo'yiladi.

Xulosa

  • + satrlarni yopishtiradi, * takrorlaydi, len() uzunligini beradi.
  • Indekslar 0 dan boshlanadi; -1 — oxirgi belgi.
  • Kesma s[boshi:oxiri] — oxiri indeksi kirmaydi. s[::-1] — teskari satr.
  • Satrni o'zgartirib bo'lmaydi — metodlar yangi satr qaytaradi.
  • Muhim metodlar: upper, lower, title, strip, replace, split, count, find.
  • f-satr — f"Salom, {ism}!" — qiymatlarni matnga joylashning eng qulay usuli.