input() va print() — f-string, format(), sep, end
Muammodan boshlaylik
Siz birinchi dasturingizni yozdingiz — u hisoblaydi, qarorlar qabul qiladi. Lekin natija ko'rinmaydi. Foydalanuvchi ismi so'ralgan emas. Dastur ishlamoqda — lekin kimdir bilan gaplashmaydi.
Har qanday foydali dastur foydalanuvchi bilan muloqot qiladi. input() — foydalanuvchidan ma'lumot olish, print() — unga natijani ko'rsatish. Bular — dastur va insonning "tilmoch"lari.
print() — ekranga chiqarish
print("Salom!") # Salom!
print(42) # 42
print(True) # True
# Bir nechta qiymat — bo'sh joy bilan ajratiladi
print("Ism:", "Jasur", "Yosh:", 25) # Ism: Jasur Yosh: 25
f-string — zamonaviy va qulay usul
O'zgaruvchi qiymatini matnga joylashtirish uchun. Python 3.6 dan beri mavjud — bugun eng ko'p ishlatiladigan usul:
ism = "Malika"
yosh = 22
print(f"Ismim {ism}, yoshim {yosh}") # Ismim Malika, yoshim 22
f"..." — f belgisi va figurali qavslar {}. Qavslar ichiga istalgan Python ifodasi yoziladi:
a, b = 15, 4
print(f"{a} + {b} = {a + b}") # 15 + 4 = 19
print(f"Umumiy: {a + b} so'm") # Umumiy: 19 so'm
Sonlarni formatlash:
narx = 45750.5
print(f"{narx:.2f}") # 45750.50 — 2 ta kasr
print(f"{narx:,.0f}") # 45,751 — minglik ajratuvchi, butun
print(f"{narx:_,.2f}") # 45_750.50 — pastchiziq ajratuvchi
: dan keyin format spetsifikatori keladi. .2f — 2 ta o'nlik kasr, f float demak.
Nima uchun f-string?
Avval boshqa usullar bor edi. Ularni bilish kerak — eski kodni o'qiydigansiz:
ism = "Jasur"
yosh = 25
# Eski usul — % operatori (Python 2 dan kelgan)
print("Ism: %s, Yosh: %d" % (ism, yosh))
# .format() — f-string dan oldingi usul
print("Ism: {}, Yosh: {}".format(ism, yosh))
# f-string — zamonaviy, qulay, o'qish oson
print(f"Ism: {ism}, Yosh: {yosh}")
f-string tanlanishining sababi: kod ichida to'g'ridan-to'g'ri ifoda yozish mumkin, alohida argument uzatish kerak emas. O'qish ham oson.
sep va end parametrlari
print() ning ikki muhim parametri:
sep — qiymatlar orasidagi ajratuvchi (standart: bo'sh joy):
print("2024", "12", "31", sep="-") # 2024-12-31
print("a", "b", "c", sep=", ") # a, b, c
print("a", "b", "c", sep="") # abc
end — qator oxirida nima (standart: \n — yangi qator):
print("Yuklanmoqda", end="")
print("...")
# Yuklanmoqda... — bir qatorda chiqadi
print(1, end=" | ")
print(2, end=" | ")
print(3)
# 1 | 2 | 3
input() — foydalanuvchidan ma'lumot olish
ism = input("Ismingizni kiriting: ")
print(f"Salom, {ism}!")
Muhim: input() doim str qaytaradi — hatto raqam kiritsangiz ham:
yosh = input("Yoshingiz: ")
print(type(yosh)) # <class 'str'> — "25" emas, 25
# Hisoblash uchun aylantirish kerak:
yosh_son = int(yosh)
print(f"10 yildan keyin {yosh_son + 10} yoshda bo'lasiz")
Bir qatorda aylantirish:
yosh = int(input("Yoshingiz: "))
narx = float(input("Narx: "))
Amaliy misol
import math
r = float(input("Doira radiusi (sm): "))
yuza = math.pi * r ** 2
atrof = 2 * math.pi * r
print(f"\nRadius: {r} sm")
print(f"Yuza: {yuza:.2f} sm²")
print(f"Atrof: {atrof:.2f} sm")
Doira radiusi (sm): 5
Radius: 5.0 sm
Yuza: 78.54 sm²
Atrof: 31.42 sm
Maxsus belgilar
print("Birinchi\nIkkinchi") # \n — yangi qator
print("Ism:\tJasur") # \t — tab
print("U \"salom\" dedi") # \" — tirnoq ichida tirnoq
print(r"C:\Users\Ali") # r"..." — raw string, \ ni oddiy belgi ko'radi
Tez-tez uchraydigan xatolar
input() qaytargan qiymatni aylantirmasdan hisoblash:
a = input("Birinchi son: ") # "10" — matn
b = input("Ikkinchi son: ") # "20" — matn
print(a + b) # ❌ "1020" — matn birlashtirish!
# ✅
a = int(input("Birinchi son: "))
b = int(input("Ikkinchi son: "))
print(a + b) # 30
Harf kiritilganda int() xato berishi:
# Foydalanuvchi "yigirma" yozsa:
yosh = int(input("Yoshingiz: ")) # ❌ ValueError
Bunday holatlar uchun keyingi bo'limlarda try/except o'rganamiz.
f-string da figurali qavslarni unutish:
ism = "Jasur"
print(f"Salom, ism!") # ❌ "Salom, ism!" — o'zgaruvchi ko'rsatilmadi
print(f"Salom, {ism}!") # ✅ "Salom, Jasur!"
Xulosa
print() va input() — foydalanuvchi bilan muloqotning asosi.
Eslab qoling:
- f-string
f"..."—{}ichiga ifoda, eng zamonaviy usul :.2f— 2 kasr;:,— minglik ajratuvchisep=— qiymatlar orasidagi belgi;end=— qator oxiriinput()doimstrqaytaradi — son kerak bo'lsaint()yokifloat()
Keyingi dars
6-dars: Shartlar — if, elif, else, ternary expression