Foydalanuvchi bilan muloqot: input()

Hozirgacha dasturlarimiz har safar bir xil ish qilardi. Haqiqiy dasturlar esa foydalanuvchi bilan «gaplashadi»: savol beradi, javobni oladi va shunga qarab ishlaydi. Bu darsda dasturimizga quloq beramiz.

Bu darsda

  • input() yordamida klaviaturadan ma'lumot olish
  • Nega input() doim matn qaytaradi
  • Kiritilgan matnni songa aylantirish
  • «Kiritish → hisoblash → chiqarish» tuzilmasidagi dasturlar

input() qanday ishlaydi

input() funksiyasi dasturni to'xtatib turadi va foydalanuvchi biror narsa yozib, Enter bosishini kutadi. Yozilgan matn esa dasturga qaytariladi — uni odatda o'zgaruvchiga saqlaymiz:

ism = input("Ismingiz nima? ")
print("Salom,", ism + "!")

Ishga tushiring. Natija oynasida sariq chiziqli maydon paydo bo'ladi — ismingizni yozing va Enter bosing. Masalan, «Nodira» deb yozsangiz:

Ismingiz nima? Nodira
Salom, Nodira!

Qavs ichidagi matn — taklif (inglizcha prompt). U foydalanuvchiga nima kiritish kerakligini aytadi. Taklif oxiriga bo'sh joy qo'yishni unutmang, aks holda javob savolga yopishib qoladi: Ismingiz nima?Nodira.

Bu saytda dastur input() ga yetganda to'xtaydi va javob kutadi. Javobni yozganingizdan so'ng dastur boshidan qayta ishlaydi va oldingi javoblaringizni o'zi qo'yib ketadi — shuning uchun natija xuddi kompyuterdagi kabi ko'rinadi. Kompyuterdagi Python'da esa javobni terminal oynasiga yozasiz.

Bir nechta savol

ism = input("Ismingiz: ")
shahar = input("Qaysi shahardansiz? ")
qiziqish = input("Nimaga qiziqasiz? ")

print()
print(f"{ism} {shahar}dan. U {qiziqish}ni yaxshi ko'radi.")

Har bir input() o'z navbatida dasturni to'xtatadi. Dastur yuqoridan pastga qarab bajarilishini eslang.

input() doim matn qaytaradi

Bu juda muhim qoida: foydalanuvchi nima yozmasin — ismmi, sonmi — input() uni satr (str) sifatida qaytaradi. Tekshirib ko'ring, so'ralganda biror son yozing:

javob = input("Biror son yozing: ")
print(type(javob))

Son yozsangiz ham <class 'str'> chiqadi. Bu ko'pincha xatoga olib keladi:

yosh = input("Yoshingiz: ")
print("Kelasi yil siz", yosh + 1, "yoshda bo'lasiz")

TypeError chiqdi: Python "17" + 1 ni hisoblay olmaydi, chunki matnga son qo'shib bo'lmaydi.

Matnni songa aylantirish

Yechim — 4-darsdan tanish int() va float() funksiyalari. Odatda ular input() ni o'rab turadi:

yosh = int(input("Yoshingiz: "))
print("Kelasi yil siz", yosh + 1, "yoshda bo'lasiz")
Yoshingiz: 17
Kelasi yil siz 18 yoshda bo'lasiz

int(input(...)) ni ichkaridan tashqariga qarab o'qing: avval input() matnni oladi, keyin int() uni butun songa aylantiradi.

Agar int(input()) so'raganda foydalanuvchi «o'n yetti» yoki «17.5» deb yozsa, Python ValueError beradi. Bunday xatolarni ushlashni 17-darsda o'rganamiz. Hozircha so'ralganda to'g'ri son kiriting.

Kiritish → hisoblash → chiqarish

«Kompyuter qanday ishlaydi?» darsidagi to'rt bosqichni eslaysizmi? Endi ularni o'z dasturimizda ko'ramiz. Ko'p dasturlar aynan shu tuzilishda bo'ladi:

# 1. Kiritish
a = float(input("Birinchi son: "))
b = float(input("Ikkinchi son: "))

# 2. Hisoblash
yigindi = a + b
ayirma = a - b
kopaytma = a * b
bolinma = a / b

# 3. Chiqarish
print(f"{a} + {b} = {yigindi}")
print(f"{a} - {b} = {ayirma}")
print(f"{a} * {b} = {kopaytma}")
print(f"{a} / {b} = {bolinma:.2f}")
Birinchi son: 12
Ikkinchi son: 7
12.0 + 7.0 = 19.0
12.0 - 7.0 = 5.0
12.0 * 7.0 = 84.0
12.0 / 7.0 = 1.71

Mana sizning birinchi foydali dasturingiz — kalkulyator! Ikkinchi son o'rniga 0 yozib ko'ring: nima bo'ladi va nima uchun?

Amaliy misol: valyuta ayirboshlash

kurs = 12600   # 1 dollar necha so'm (misol uchun olingan)

dollar = float(input("Necha dollar almashtirmoqchisiz? "))
som = dollar * kurs
print(f"{dollar} dollar = {som:,.0f} so'm")
Necha dollar almashtirmoqchisiz? 150
150.0 dollar = 1,890,000 so'm

Kurs o'zgarib turadi, shuning uchun u alohida o'zgaruvchida — kerak bo'lsa, faqat bitta qatorni yangilaysiz.

Mashqlar

Bu mashqlarda dastur sizdan javob so'raydi, shuning uchun natijani o'zingiz tekshirasiz. Har bir yechim ostida namunaviy natija berilgan.

1-mashq To'rtburchak

Foydalanuvchidan to'rtburchakning eni va bo'yini so'rab, uning yuzi va perimetrini chiqaring.

# eni va bo'yini so'rang, keyin yuzi va perimetrini chiqaring
Yechimni ko'rish
eni = float(input("Eni (m): "))
boyi = float(input("Bo'yi (m): "))
print("Yuzi:", eni * boyi, "kv. m")
print("Perimetri:", 2 * (eni + boyi), "m")
Eni (m): 4
Bo'yi (m): 6
Yuzi: 24.0 kv. m
Perimetri: 20.0 m

2-mashq Restoran hisobi

Do'stlar restoranda ovqatlanishdi. Dastur umumiy hisobni va odamlar sonini so'rasin. Hisobga 10 foiz xizmat haqi qo'shib, har bir kishi qancha to'lashini hisoblasin.

# Kodingizni shu yerga yozing
Ishora

10 foiz qo'shish — summani 1.1 ga ko'paytirish degani. Keyin natijani odamlar soniga bo'ling.

Yechimni ko'rish
hisob = float(input("Umumiy hisob (so'm): "))
odamlar = int(input("Necha kishi? "))
jami = hisob * 1.1
har_biri = jami / odamlar
print(f"Xizmat haqi bilan: {jami:.0f} so'm")
print(f"Har bir kishi: {har_biri:.0f} so'm")
Umumiy hisob (so'm): 360000
Necha kishi? 4
Xizmat haqi bilan: 396000 so'm
Har bir kishi: 99000 so'm

3-mashq Tug'ilgan yil

Foydalanuvchidan tug'ilgan yilini so'rang va 2030-yilda u necha yoshda bo'lishini ayting.

# Kodingizni shu yerga yozing
Yechimni ko'rish
yil = int(input("Tug'ilgan yilingiz: "))
print(f"2030-yilda siz {2030 - yil} yoshda bo'lasiz.")
Tug'ilgan yilingiz: 2008
2030-yilda siz 22 yoshda bo'lasiz.

4-mashq Daqiqalar

Foydalanuvchi daqiqalar sonini kiritadi. Dastur uni soat va daqiqaga ajratib chiqarsin (5-darsdagi // va % ni eslang).

# Kodingizni shu yerga yozing
Yechimni ko'rish
daqiqa = int(input("Necha daqiqa? "))
print(daqiqa // 60, "soat", daqiqa % 60, "daqiqa")
Necha daqiqa? 200
3 soat 20 daqiqa

O'zingizni sinang

input() qaysi turdagi qiymat qaytaradi?

  1. int
  2. float
  3. str
  4. Foydalanuvchi nima yozganiga qarab

To'g'ri. Foydalanuvchi son yozsa ham, input() doim satr qaytaradi.

Foydalanuvchi 5 yozdi. x = input() dan keyin print(x * 2) nima chiqaradi?

  1. 10
  2. 55
  3. 5 5
  4. Xato beradi

To'g'ri. x — bu "5" satri, satrni 2 ga ko'paytirish uni takrorlaydi.

Foydalanuvchidan butun son olishning to'g'ri usuli qaysi?

  1. input(int())
  2. int input()
  3. input("Son: ").int()
  4. int(input("Son: "))

To'g'ri. Avval input() matnni oladi, keyin int() uni songa aylantiradi.

int(input()) ga foydalanuvchi abc deb yozsa, nima bo'ladi?

  1. ValueError xatosi chiqadi
  2. 0 qaytariladi
  3. Dastur javob kutishda davom etadi
  4. "abc" qaytariladi

To'g'ri. «abc» ni butun songa aylantirib bo'lmaydi. Bunday holatlarni boshqarishni 17-darsda o'rganamiz.

Xulosa

  • input("Taklif: ") dasturni to'xtatib, foydalanuvchi javobini kutadi.
  • input() har doim satr qaytaradi.
  • Son kerak bo'lsa: int(input()) yoki float(input()).
  • Ko'p dasturlar «kiritish → hisoblash → chiqarish» tuzilishida yoziladi.