Asosiy qismga o'tish

Satrlar (str) bilan ishlash

5-bob 29 kod bloki 1817 so'z

Bu bobda

  • satr ichida maxsus belgilarni: \n, \t, \'
  • len(), indeks va kesish (slicing) bilan satr bo'laklarini olishni
  • eng kerakli metodlarni: upper, lower, capitalize, strip, replace, count, find
  • o'zbekcha matndagi title() tuzog'ini
  • f-string bilan jadvaldek tekis chiqarishni

Satr — belgilar ketma-ketligi

Satr (string) — harflar, raqamlar, probel va boshqa belgilarning tartiblangan ketma-ketligi. "Salom" — 5 ta belgidan iborat satr.

python3 qator
shahar = "Samarqand"
print(shahar)
print(len(shahar))
Natija
Samarqand
9

len() — satr uzunligi, ya'ni undagi belgilar soni. Probel ham belgi:

python2 qator
print(len("Salom dunyo"))
print(len(""))
Natija
11
0

"" — bo'sh satr, uzunligi 0.

Maxsus belgilar: \n, \t, \

Satr ichida \ (teskari chiziq) dan keyingi harf maxsus ma'noga ega bo'ladi:

python4 qator
print("Birinchi qator\nIkkinchi qator")
print("Ism:\tAli")
print("Fayl yo'li: C:\\Users\\Ali")
print('Bu O\'zbekiston')
Natija
Birinchi qator
Ikkinchi qator
Ism:	Ali
Fayl yo'li: C:\Users\Ali
Bu O'zbekiston
Yozuv Ma'nosi
\n yangi qator (new line)
\t tabulyatsiya (bir nechta probel)
\\ teskari chiziqning o'zi
\' va \" tirnoq, satr tugamasligi uchun

Ko'p qatorli matn uchun uchtalik qo'shtirnoq """...""" qulay:

python4 qator
xabar = """Hurmatli talaba!
Ertangi dars soat 18:00 da.
Daftaringizni olib keling."""
print(xabar)
Natija
Hurmatli talaba!
Ertangi dars soat 18:00 da.
Daftaringizni olib keling.

Indeks: bitta belgini olish

Satrdagi har bir belgining tartib raqami — indeksi bor. Sanash 0 dan boshlanadi:

Belgi P y t h o n
Indeks 0 1 2 3 4 5
Manfiy indeks -6 -5 -4 -3 -2 -1
python5 qator
til = "Python"
print(til[0])
print(til[3])
print(til[-1])
print(til[-2])
Natija
P
h
n
o

Manfiy indeks oxiridan sanaydi: -1 — oxirgi belgi. Satr uzunligi qanday bo'lishidan qat'i nazar, s[-1] doim oxirgi belgini beradi.

python2 qator
til = "Python"
print(til[6])
Xato xabari
IndexError: string index out of range

6 ta belgi bor, indekslar 0 dan 5 gacha. til[6] mavjud emas.

Kesish (slicing): bo'lakni olish

s[boshi:oxiri] — boshi indeksidan oxiri gacha (oxiri kirmaydi) bo'lakni beradi:

python6 qator
soz = "Toshkent"
print(soz[0:4])
print(soz[4:8])
print(soz[:4])
print(soz[4:])
print(soz[-4:])
Natija
Tosh
kent
Tosh
kent
kent
  • [:4] — boshidan 4 ta belgi.
  • [4:] — 4-indeksdan oxirigacha.
  • [-4:] — oxirgi 4 ta belgi.

Nega oxiri kirmaydi?

Shunda s[:n] + s[n:] har doim butun satrni beradi va s[a:b] uzunligi b − a ga teng: soz[0:4] — 4 ta belgi.

Uchinchi qiymat — qadam (step):

python4 qator
raqamlar = "0123456789"
print(raqamlar[::2])
print(raqamlar[1::2])
print(raqamlar[::-1])
Natija
02468
13579
9876543210

[::-1] — satrni teskari aylantirishning eng qisqa yo'li.

Kesishda chegaradan chiqib ketish xato bermaydi, Python borini oladi:

python1 qator
print("Python"[2:100])
Natija
thon

Satrni o'zgartirib bo'lmaydi

Satr o'zgarmas (immutable): uning belgisini almashtirib bo'lmaydi.

python2 qator
soz = "kitob"
soz[0] = "K"
Xato xabari
TypeError: 'str' object does not support item assignment

Buning o'rniga yangi satr yasaladi va o'sha nomga bog'lanadi:

python3 qator
soz = "kitob"
soz = "K" + soz[1:]
print(soz)
Natija
Kitob

Metodlar

Metod — satrga "yopishgan" funksiya. U nuqta bilan chaqiriladi: satr.metod().

python5 qator
ism = "abulqosim RAFIQOV"
print(ism.upper())
print(ism.lower())
print(ism.capitalize())
print(ism.title())
Natija
ABULQOSIM RAFIQOV
abulqosim rafiqov
Abulqosim rafiqov
Abulqosim Rafiqov

title() va o'zbekcha apostrof

python3 qator
print("o'zbekiston".title())
print("g'ulom".title())
print("o'zbekiston".capitalize())
Natija
O'Zbekiston
G'Ulom
O'zbekiston

title() har bir so'z boshini katta qiladi va apostrofni so'z chegarasi deb hisoblaydi: O'Zbekiston. Bitta so'z bo'lsa capitalize() ishlating. Bir nechta so'zli ism uchun yechimni 9-bobda (split()) ko'ramiz.

Metod satrni o'zgartirmaydi, yangi satr qaytaradi:

python5 qator
ism = "ali"
ism.upper()
print(ism)
ism = ism.upper()
print(ism)
Natija
ali
ALI

Natijani saqlash uchun uni qayta o'zgaruvchiga bog'lash kerak.

Probellarni tozalash

Foydalanuvchi ko'pincha bilmasdan boshida yoki oxirida probel qoldiradi:

python5 qator
kiritilgan = "   Toshkent  "
print(f"[{kiritilgan}]")
print(f"[{kiritilgan.strip()}]")
print(f"[{kiritilgan.lstrip()}]")
print(f"[{kiritilgan.rstrip()}]")
Natija
[   Toshkent  ]
[Toshkent]
[Toshkent  ]
[   Toshkent]

strip() — ikki tomondan, lstrip() — chapdan, rstrip() — o'ngdan. input() dan keladigan matnni deyarli doim .strip() qilish yaxshi odat.

Qidirish va almashtirish

python6 qator
gap = "Python oson. Python kuchli. Python mashhur."
print(gap.count("Python"))
print(gap.find("oson"))
print(gap.find("qiyin"))
print(gap.replace("Python", "Java"))
print(gap.replace("Python", "Java", 1))
Natija
3
7
-1
Java oson. Java kuchli. Java mashhur.
Java oson. Python kuchli. Python mashhur.
  • count(x) — x necha marta uchraydi.
  • find(x) — x birinchi uchragan indeks; topilmasa -1.
  • replace(eski, yangi) — hammasini almashtiradi; uchinchi qiymat — nechtasini.

in operatori "ichida bormi?" savoliga True yoki False bilan javob beradi:

python5 qator
email = "talaba@pysphere.uz"
print("@" in email)
print("gmail" in email)
print(email.startswith("talaba"))
print(email.endswith(".uz"))
Natija
True
False
True
True

Tekshirish metodlari

python4 qator
print("2026".isdigit())
print("20.5".isdigit())
print("Salom".isalpha())
print("Salom dunyo".isalpha())
Natija
True
False
True
False

isdigit() — hamma belgi raqammi. "20.5" da nuqta bor, shuning uchun False. isalpha() — hamma belgi harfmi; probel harf emas.

Metod Nima qiladi " Salom " uchun
upper() hammasi katta " SALOM "
lower() hammasi kichik " salom "
strip() chetdagi probellarni olib tashlaydi "Salom"
replace("a", "o") almashtiradi " Solom "
count("a") sanaydi 1
find("l") indeksini topadi 4

f-string bilan tekis chiqarish

f-string ichida : dan keyin kenglik va tekislash berish mumkin: < chapga, > o'ngga, ^ o'rtaga.

python3 qator
print(f"[{'Ali':<10}]")
print(f"[{'Ali':>10}]")
print(f"[{'Ali':^10}]")
Natija
[Ali       ]
[       Ali]
[   Ali    ]

Buning yordamida chiroyli jadval chiqarish mumkin:

python5 qator
print(f"{'Mahsulot':<10}{'Narx':>12}")
print("-" * 22)
print(f"{'Non':<10}{4000:>12,}")
print(f"{'Sut':<10}{12500:>12,}")
print(f"{'Guruch':<10}{21000:>12,}")
Natija
Mahsulot          Narx
----------------------
Non              4,000
Sut             12,500
Guruch          21,000

{4000:>12,} — 12 belgi joyda o'ngga tekislab, xonalarga ajratib chiqar.

Kitoblarda

  • Python asoslari: satrlar 21–27-betlar, satrlarni formatlash 28–29-betlar.
  • Python Crash Course: 2-bob, Strings 19–25-betlar (title, upper, lower, f-string, \n, \t, strip).

Xulosa

  • Indeks 0 dan boshlanadi, -1 — oxirgi belgi.
  • s[a:b] — a dan b gacha, b kirmaydi; s[::-1] — teskari.
  • Satr o'zgarmas: metodlar yangi satr qaytaradi, natijani saqlang.
  • O'zbekcha so'zlarda title() emas, capitalize().
  • find() topmasa -1 beradi; in — True/False.
  • f"{x:<10}", f"{x:>10}", f"{x:^10}" — tekislash.

Mashqlar

Satrlarni input() bilan oling. Matnli javob aynan ko'rsatilgandek chiqishi kerak.

5.1

Foydalanuvchi ismini kichik harflar bilan kiritadi. Salom, <Ism>! ko'rinishida, ismning birinchi harfini katta qilib chiqaring.

KirishKutilgan natija
aliSalom, Ali!
o'tkirSalom, O'tkir!
sarvinozSalom, Sarvinoz!
Yechimni ko'rish
python2 qator
ism = input()
print(f"Salom, {ism.capitalize()}!")
5.2

So'z berilgan. Uni teskari tartibda chiqaring.

KirishKutilgan natija
PythonnohtyP
kitobbotik
aa
Yechimni ko'rish
python2 qator
s = input()
print(s[::-1])
5.3

So'z berilgan. Uning uzunligini chiqaring.

KirishKutilgan natija
Samarqand9
olma4
O'zbekiston11
Yechimni ko'rish
python1 qator
print(len(input()))
5.4

Gap berilgan. Undagi a harfi necha marta uchrashini chiqaring (faqat kichik a).

KirishKutilgan natija
Salom dunyo1
banana3
Toshkent0
Yechimni ko'rish
python1 qator
print(input().count("a"))
5.5

Gap berilgan. Undagi so'zlar sonini toping. So'zlar orasida aynan bitta probel bor. Maslahat: probellar soni + 1.

KirishKutilgan natija
Men Python o'rganyapman3
Salom1
bir ikki uch tort besh5
Yechimni ko'rish
python1 qator
print(input().count(" ") + 1)
5.6

Telefon raqami 9 ta raqam ko'rinishida berilgan, masalan 901234567. Uni +998 90 123 45 67 ko'rinishida chiqaring.

KirishKutilgan natija
901234567+998 90 123 45 67
935550011+998 93 555 00 11
Yechimni ko'rish
python2 qator
t = input()
print(f"+998 {t[:2]} {t[2:5]} {t[5:7]} {t[7:]}")
5.7

Familiya va ism bitta probel bilan berilgan, masalan rafiqov abulqosim. Bosh harflarni nuqta bilan chiqaring: R.A. Maslahat: probelning indeksini find() bilan toping.

KirishKutilgan natija
rafiqov abulqosimR.A.
karimova sarvinozK.S.
ali valiyevA.V.
Yechimni ko'rish
python3 qator
s = input()
i = s.find(" ")
print(f"{s[0].upper()}.{s[i + 1].upper()}.")
5.8

Gapda yomon so'zi uchrasa, uni ***** ga almashtiring.

KirishKutilgan natija
bu yomon fikrbu ***** fikr
yomon emas, yomon***** emas, *****
hammasi yaxshihammasi yaxshi
Yechimni ko'rish
python1 qator
print(input().replace("yomon", "*****"))
5.9

Fayl nomi berilgan, masalan rasm.png. Uning kengaytmasini (nuqtadan keyingi qismini) chiqaring. Nuqta bitta.

KirishKutilgan natija
rasm.pngpng
hisobot.xlsxxlsx
dars.ipynbipynb
Yechimni ko'rish
python2 qator
f = input()
print(f[f.find(".") + 1:])

Bu bobni bepul o'qidingiz.

Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.

Telegramda yozish Narxlar