6-dars: String va Format
Dars
Davomiyligi: 90 daqiqa Maqsad: Python string'ning kuchli funksiyalarini chuqur o'rganish.
1. String yaratish
a = "Akmal"
b = 'Karimov'
c = """Bir nechta
qatorli"""
d = '''Apostrof bilan'''" va ' — bir xil.
2. String — immutable
s = "Akmal"
s[0] = "B" # XATO!
# Yangi string yaratish
s = "B" + s[1:] # "Bkmal"C'da char[] o'zgartirilardi. Python — yangi string yaratiladi.
3. Asosiy operatsiyalar
s = "Akmal Karimov"
len(s) # 13
s[0] # 'A'
s[-1] # 'v'
s[6:13] # 'Karimov'
s[::-1] # 'vomiraK lamkA'
s + " - 22 yosh" # konkatenatsiya
s * 3 # takrorlash
"Akmal" in s # True
"Botir" in s # False4. String metodlar — keng tarqalgan
s = " Akmal Karimov "
s.upper() # ' AKMAL KARIMOV '
s.lower() # ' akmal karimov '
s.title() # ' Akmal Karimov '
s.capitalize() # ' akmal karimov '
s.swapcase() # ' aKMAL kARIMOV '
s.strip() # 'Akmal Karimov'
s.lstrip() # 'Akmal Karimov '
s.rstrip() # ' Akmal Karimov'
s.replace("Akmal", "Botir") # ' Botir Karimov '
s.split() # ['Akmal', 'Karimov']
s.split("a") # specific delimiter
"-".join(["a", "b", "c"]) # 'a-b-c'5. Tekshirish
s = "Akmal123"
s.isalpha() # False (raqamlar bor)
s.isdigit() # False (harflar bor)
s.isalnum() # True (alpha + numeric)
"123".isdigit() # True
"abc".isalpha() # True
s.isupper() # False
s.islower() # False
"AKMAL".isupper() # True
s.startswith("Akm") # True
s.endswith("123") # True
"".isspace() # False (bo'sh)
" ".isspace() # True (faqat bo'shliq)6. Qidirish
s = "Hello World, hello Python"
s.find("World") # 6 (index)
s.find("xyz") # -1 (yo'q)
s.rfind("hello") # 13 (oxirgi)
s.index("World") # 6 (xato — agar yo'q bo'lsa)
s.count("hello") # 1 (case-sensitive!)
s.lower().count("hello") # 27. f-string (chuqurroq)
name = "Akmal"
age = 22
pi = 3.14159
# Asosiy
print(f"{name}, {age}")
# Aniqlik
print(f"{pi:.2f}") # 3.14
print(f"{pi:.5f}") # 3.14159
print(f"{pi:e}") # 3.141590e+00
# Maydon
print(f"{name:10}") # 'Akmal '
print(f"{name:<10}") # 'Akmal '
print(f"{name:>10}") # ' Akmal'
print(f"{name:^10}") # ' Akmal '
print(f"{name:*^10}") # '**Akmal***'
# Raqamlar
print(f"{age:5d}") # ' 22'
print(f"{age:05d}") # '00022'
print(f"{age:+d}") # '+22'
# Hex, octal
print(f"{255:x}") # 'ff'
print(f"{255:X}") # 'FF'
print(f"{255:o}") # '377'
print(f"{255:b}") # '11111111' (binary)
# Comma separator
big = 1_000_000
print(f"{big:,}") # '1,000,000'
# Percentage
print(f"{0.25:.0%}") # '25%'
print(f"{0.25:.1%}") # '25.0%'
# Debug
print(f"{age=}") # 'age=22'
# Expression
print(f"{2 + 3}") # '5'
print(f"{name.upper()}") # 'AKMAL'8. Eski formatlar
% format
"%s, %d" % ("Akmal", 22)C'ga o'xshash. Eski.
.format()
"{} {}".format("Akmal", 22)
"{0} {1}".format("Akmal", 22)
"{name} {age}".format(name="Akmal", age=22)F-string — eng yaxshi.
9. Multiline va escape
s = "Birinchi\nIkkinchi\nUchinchi"
print(s)
# Raw (escape ishlamaydi)
path = r"C:\Users\Akmal"
print(path) # C:\Users\Akmal
# Triple quotes
text = """
Bu juda
uzun matn,
bir nechta qatorda.
"""10. Encode/Decode
s = "Salom dunyo"
# String → bytes
b = s.encode("utf-8")
print(b) # b'Salom dunyo'
# Bytes → string
s2 = b.decode("utf-8")
print(s2) # Salom dunyoUTF-8 — universal kodlash.
11. String manipulyatsiya misollari
Word count
text = "Bu matnda besh ta so'z"
words = text.split()
print(len(words)) # 5Vowel count
def count_vowels(s):
return sum(1 for c in s.lower() if c in "aeiou")
print(count_vowels("Hello World")) # 3Reverse
s = "Akmal"
print(s[::-1]) # 'lamkA'Palindrome
def is_palindrome(s):
s = s.lower().replace(" ", "")
return s == s[::-1]
print(is_palindrome("Madam")) # True
print(is_palindrome("Was it a car or a cat I saw")) # TrueTitle case
def my_title(s):
return " ".join(w.capitalize() for w in s.split())
print(my_title("akmal karimov")) # "Akmal Karimov"12. Caesar cipher (Python)
def caesar(text, shift):
result = ""
for c in text:
if c.isupper():
result += chr((ord(c) - ord('A') + shift) % 26 + ord('A'))
elif c.islower():
result += chr((ord(c) - ord('a') + shift) % 26 + ord('a'))
else:
result += c
return result
print(caesar("Hello", 3)) # "Khoor"
print(caesar("Khoor", -3)) # "Hello"ord() — char → ASCII, chr() — ASCII → char.
13. Regular expressions (qisqacha)
Murakkab string operatsiyalar uchun regex:
import re
text = "Email: akmal@example.com, telefon: +998901234567"
# Email topish
emails = re.findall(r"[\w.]+@[\w.]+", text)
print(emails) # ['akmal@example.com']
# Telefon
phones = re.findall(r"\+\d+", text)
print(phones) # ['+998901234567']
# Almashtirish
clean = re.sub(r"\s+", " ", "Ko'p bo'sh joy")
print(clean) # "Ko'p bo'sh joy"Regex — kuchli, lekin qiyin. Asoslar — kelajakda.
14. Real misol: Parol kuchini tekshirish
def check_password(password):
errors = []
if len(password) < 8:
errors.append("Kamida 8 belgi")
if not any(c.isupper() for c in password):
errors.append("Katta harf kerak")
if not any(c.islower() for c in password):
errors.append("Kichik harf kerak")
if not any(c.isdigit() for c in password):
errors.append("Raqam kerak")
special = "!@#$%^&*()_+-=[]{}|;:,.<>?"
if not any(c in special for c in password):
errors.append("Maxsus belgi kerak")
if errors:
print("Zaif parol:")
for e in errors:
print(f" - {e}")
return False
print("Kuchli parol!")
return True
check_password("password") # Zaif
check_password("Pass123!") # Kuchli15. Tezkor string operatsiyalar
# Bo'sh string?
if not s:
print("Bo'sh")
# Necha so'z?
len(s.split())
# Tozalash (bo'shliq, \n, \t)
s.strip()
# Bir nechta bo'shliqni bittasiga
" ".join(s.split())
# Faqat raqamlar
"".join(c for c in s if c.isdigit())
# Faqat harflar
"".join(c for c in s if c.isalpha())Topshiriqlar
1 — String asoslari
basics.py:
s = "Python Dasturlash"
print(s.upper())
print(s.lower())
print(s.title())
print(s.replace("Python", "C"))
print(s.split())
print("Python" in s)
print(len(s))2 — Formatlash
format.py — Dars matnidagi barcha f-string misollarini sinab ko'ring.
3 — Word counter
word_count.py:
text = input("Matn: ")
words = text.split()
print(f"So'zlar: {len(words)}")
print(f"Belgilar: {len(text)}")
print(f"Belgilar (bo'shliqsiz): {len(text.replace(' ', ''))}")
print(f"Qatorlar: {text.count(chr(10)) + 1}")4 — Palindrome
palindrome.py — Bir nechta variantlarni sinab ko'ring.
5 — Caesar
caesar.py — Encrypt va decrypt.
Bonus: brute force decryption (har 26 ta shift'ni sinash).
6 — Password validator
password.py — Dars matnidagi kuchli versiya.
Bonus: parol generatori.
7 — Email extractor
emails.py:
import re
text = """
Akmal: akmal@gmail.com
Aziza - aziza@example.uz
Botir email: botir.k@company.com
"""
emails = re.findall(r"[\w.]+@[\w.]+", text)
print(emails)8 — String analysis
analyze.py:
s = input("Matn: ")
print(f"Uzunlik: {len(s)}")
print(f"So'zlar: {len(s.split())}")
print(f"Unli: {sum(1 for c in s.lower() if c in 'aeiou')}")
print(f"Undosh: {sum(1 for c in s.lower() if c.isalpha() and c not in 'aeiou')}")
print(f"Raqam: {sum(1 for c in s if c.isdigit())}")
print(f"Bo'shliq: {s.count(' ')}")9 — Reverse words
reverse_words.py:
s = "Hello World Python"
# Word'larni teskari
reversed_words = " ".join(s.split()[::-1])
print(reversed_words) # "Python World Hello"
# Har word ichida teskari
each_reversed = " ".join(w[::-1] for w in s.split())
print(each_reversed) # "olleH dlroW nohtyP"10 — GitHub
$ mkdir 6-oy-dars-6
$ git add . && git commit -m "feat: dars 6 - strings" && git pushLug'at
| Termin | Izoh |
|---|---|
| Immutable | O'zgartirib bo'lmaydi |
| Slicing | s[1:5] |
| f-string | f"{var}" |
| strip / lstrip / rstrip | Bo'shliq olish |
| split / join | Bo'lish / qo'shish |
| find / index | Topish |
| ord / chr | Char ↔ ASCII |
| encode / decode | String ↔ bytes |
| re | Regular expressions |