Asosiy qismga o'tish

Ma'lumot turlari va o'girish

2-bob 27 kod bloki 1677 so'z

Bu bobda

  • int, float, str, bool turlari bilan ishlashni
  • input() dan kelgan matnni songa o'girishni
  • int() kasrni qanday kesishini va round() qanday yaxlitlashini
  • sonlarni chiroyli chiqarishni: f"{x:.2f}"

Muammo: "5" + "3" = "53"

O'tgan bobda input() har doim matn qaytarishini ko'rdik. Endi bu nimaga olib kelishini ko'ramiz:

python3 qator
a = input("a = ")
b = input("b = ")
print(a + b)
Natija
a = 5
b = 3
53

8 emas, 53. Chunki ikkita matnni + bilan qo'shish ularni yopishtiradi (concatenation): "5" + "3" → "53". Python bu yerda xato qilmadi, u aynan aytilganini bajardi.

Matnni songa ko'paytirish ham ishlaydi, lekin u matnni takrorlaydi:

python2 qator
print("ha" * 3)
print("-" * 20)
Natija
hahaha
--------------------

Matnga sonni qo'shib bo'lmaydi. Python bu ikki turni qanday qo'shishni bilmaydi:

python2 qator
yosh = "20"
print(yosh + 1)
Xato xabari
TypeError: can only concatenate str (not "int") to str

int() va float(): matnni songa o'girish

Yechim: matnni songa o'girish (type conversion). int() butun songa, float() kasr songa o'giradi:

python3 qator
a = int(input("a = "))
b = int(input("b = "))
print(a + b)
Natija
a = 5
b = 3
8

int(input(...)) ni ichkaridan tashqariga o'qing: avval input() matn oladi, keyin int() uni songa aylantiradi, so'ng natija a ga bog'lanadi.

Agar foydalanuvchi kasr son kiritishi mumkin bo'lsa, float() ishlating:

python3 qator
narx = float(input("1 kg narxi: "))
kg = float(input("Necha kg: "))
print("Jami:", narx * kg)
Natija
1 kg narxi: 2.5
Necha kg: 4
Jami: 10.0

int() ga kasr matnini berish

int() faqat butun son yozilgan matnni tushunadi. "2.5" ni bersangiz, xato beradi:

python1 qator
son = int("2.5")
Xato xabari
ValueError: invalid literal for int() with base 10: '2.5'

Agar kasr kelishi mumkin bo'lsa, float() ishlating. Agar baribir butun son kerak bo'lsa, ikki bosqichda: int(float("2.5")).

Sondan matnga o'girish uchun str():

python3 qator
yosh = 20
xabar = "Men " + str(yosh) + " yoshdaman"
print(xabar)
Natija
Men 20 yoshdaman

Lekin buni f-string bilan yozish ancha qulay, o'girish o'zi bo'ladi: f"Men {yosh} yoshdaman".

int va float: farqi nima?

int float
Nima butun son kasr son
Misol 7, -3, 1000000 7.0, -3.5, 0.25
Aniqlik har doim aniq, istalgancha katta taxminan 15–16 xona

Python butun sonlarni istalgancha katta saqlay oladi:

python1 qator
print(2 ** 100)
Natija
1267650600228229401496703205376

Uzun sonlarni o'qish oson bo'lishi uchun xonalarni _ bilan ajratish mumkin. Python _ ni e'tiborga olmaydi:

python2 qator
aholi = 37_000_000
print(aholi)
Natija
37000000

Bitta float qatnashsa, natija ham float bo'ladi. / bilan bo'lish esa har doim float beradi, hatto qoldiqsiz bo'linsa ham:

python3 qator
print(2 + 3.0)
print(4 / 2)
print(type(4 / 2))
Natija
5.0
2.0
<class 'float'>

int() kasrni kesadi, yaxlitlamaydi

Bu juda muhim va ko'p adashtiradigan joy. int() kasr qismini shunchaki tashlab yuboradi:

python3 qator
print(int(2.8))
print(int(2.2))
print(int(-2.8))
Natija
2
2
-2

2.8 dan 3 emas, 2 chiqdi. Manfiy sonda ham kasr tashlanadi, shuning uchun -2.8 dan -2 chiqdi.

Kasrlarni qo'shib, keyin int() qilish

python3 qator
a = float(input("a = "))
b = float(input("b = "))
print(int(a + b))
Natija
a = 2.4
b = 2.4
4

2.4 + 2.4 = 4.8, lekin ekranda 4. Foydalanuvchi buni xato deb o'ylaydi va haqli bo'ladi. Natijani kesish kerak bo'lmasa, int() qilmang.

Kitobdagi misolga e'tibor bering

"Python asoslari" kitobining 20-betida "float turidan intga o'tkazish" deb b = int(x) yozilgan. Lekin u yerda x = 1, ya'ni x allaqachon int. Aslida b = int(y) bo'lishi kerak edi (y = 2.8). Unda natija 1 emas, 2 bo'ladi va int() kasrni kesishi ko'rinadi.

round(): yaxlitlash

Yaxlitlash uchun round() bor. Ikkinchi qiymat — verguldan keyin nechta xona qolishi:

python3 qator
print(round(2.8))
print(round(3.14159, 2))
print(round(1234.5678, 1))
Natija
3
3.14
1234.6

Kutilmagan natija

python3 qator
print(round(2.5))
print(round(3.5))
print(round(4.5))
Natija
2
4
4

Maktabda 2.5 → 3 deb o'rganganmiz. Python esa .5 bo'lganda eng yaqin juft songa yaxlitlaydi: 2.5 → 2, 3.5 → 4, 4.5 → 4. Bu "bankir yaxlitlashi" (banker's rounding) deyiladi: ko'p sonlarni yaxlitlaganda xato bir tomonga to'planib qolmasligi uchun.

f-string bilan sonlarni chiroyli chiqarish

Hisob-kitobda ko'pincha juda uzun kasr chiqadi:

python2 qator
narx = 10 / 3
print(narx)
Natija
3.3333333333333335

f-string ichida : dan keyin format yozish mumkin. .2f — "verguldan keyin 2 xona":

python3 qator
narx = 10 / 3
print(f"Narx: {narx:.2f} so'm")
print(f"Narx: {narx:.0f} so'm")
Natija
Narx: 3.33 so'm
Narx: 3 so'm

Katta sonlarni xonalarga ajratish uchun , yoki _:

python3 qator
maosh = 7500000
print(f"{maosh:,} so'm")
print(f"{maosh:_} so'm")
Natija
7,500,000 so'm
7_500_000 so'm
Format Ma'nosi x = 1234.5678 bo'lsa
{x:.2f} 2 xona kasr 1234.57
{x:.0f} kasrsiz 1235
{x:,.1f} xonalarga ajratib, 1 xona 1,234.6
{x:10.2f} 10 belgi joy, o'ngga tekislab 1234.57

bool: rost yoki yolg'on

bool turida faqat ikkita qiymat bor: True va False. Ular taqqoslashdan chiqadi:

python3 qator
print(5 > 3)
print(10 == 7)
print(type(5 > 3))
Natija
True
False
<class 'bool'>

Istalgan qiymatni bool() ga bersa bo'ladi. Qoida oddiy: bo'sh yoki nol bo'lsa False, qolgan hamma narsa True:

python3 qator
print(bool(0), bool(0.0), bool(""))
print(bool(5), bool(-1), bool("salom"))
print(bool("0"), bool(" "))
Natija
False False False
True True True
True True

Oxirgi qatorga qarang: "0" va " " — bo'sh emas, ichida belgi bor. Shuning uchun True. Buni 6-bobda shartlar bilan ishlaganda ko'p ishlatamiz.

Kitoblarda

  • Python asoslari: ma'lumot turlari 16-bet, sonlar 17–19-betlar, sonlarni o'girish 20-bet.
  • Python Crash Course: 2-bob, Integers, Floats, Integers and Floats, Underscores in Numbers 26–28-betlar.

Xulosa

  • input() matn beradi; hisoblash uchun int() yoki float() bilan o'giring.
  • "5" + "3" = "53", "ha" * 3 = "hahaha", "20" + 1 esa xato.
  • int() kasrni kesadi, round() yaxlitlaydi (.5 da juft tomonga).
  • / har doim float beradi.
  • f"{x:.2f}" — 2 xona bilan chiqarish, f"{x:,}" — xonalarga ajratish.
  • Bo'sh va nol qiymatlar False, qolganlari True.

Mashqlar

Qiymatlarni float(input()) bilan oling. Kasr natijani yaxlitlamasangiz ham bo'ladi, tekshiruvchi sonlarni o'zi solishtiradi.

Begin1

Kvadratning tomoni a berilgan. Uning perimetrini toping: P = 4·a.

KirishKutilgan natija
520
2.510
0.10.4
Yechimni ko'rish
python2 qator
a = float(input())
print(4 * a)
Begin2

Kvadratning tomoni a berilgan. Uning yuzini toping: S = a·a.

KirishKutilgan natija
525
1.52.25
10100
Yechimni ko'rish
python2 qator
a = float(input())
print(a * a)
Begin3

To'g'ri to'rtburchakning tomonlari a va b berilgan. Avval yuzini, keyin perimetrini chiqaring: S = a·b, P = 2·(a + b).

KirishKutilgan natija
3, 412 14
2.5, 25 9
10, 110 22
Yechimni ko'rish
python3 qator
a = float(input())
b = float(input())
print(a * b, 2 * (a + b))
Begin5

Kubning qirrasi a berilgan. Avval hajmini, keyin to'la sirtini chiqaring: V = a·a·a, S = 6·a·a.

KirishKutilgan natija
28 24
327 54
1.53.375 13.5
Yechimni ko'rish
python2 qator
a = float(input())
print(a * a * a, 6 * a * a)
Begin6

Parallelepipedning qirralari a, b, c berilgan. Avval hajmini, keyin to'la sirtini chiqaring: V = a·b·c, S = 2·(a·b + b·c + a·c).

KirishKutilgan natija
2, 3, 424 52
1, 1, 11 6
1.5, 2, 39 27
Yechimni ko'rish
python4 qator
a = float(input())
b = float(input())
c = float(input())
print(a * b * c, 2 * (a * b + b * c + a * c))
Begin8

Ikkita son a va b berilgan. Ularning o'rta arifmetigini toping: (a + b) / 2.

KirishKutilgan natija
4, 65
3, 43.5
-2, 20
Yechimni ko'rish
python3 qator
a = float(input())
b = float(input())
print((a + b) / 2)
2.1

Foydalanuvchi tug'ilgan yilini kiritadi. 2026-yilda u necha yoshga to'lishini chiqaring. Javob butun son bo'lsin.

KirishKutilgan natija
200026
201016
199036
Yechimni ko'rish
python2 qator
yil = int(input())
print(2026 - yil)
2.2

Mahsulot narxi (so'mda, butun son) va soni berilgan. Jami summani xonalarga ajratib, Jami: 1,250,000 so'm ko'rinishida chiqaring.

KirishKutilgan natija
250000, 5Jami: 1,250,000 so'm
12500, 3Jami: 37,500 so'm
Yechimni ko'rish
python3 qator
narx = int(input())
soni = int(input())
print(f"Jami: {narx * soni:,} so'm")

Bu bobni bepul o'qidingiz.

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

Telegramda yozish Narxlar