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.
- Butun son kerak bo'lsa (yosh, soni, yil) —
int(input()). - Kasr son bo'lishi mumkin bo'lsa (vazn, narx, harorat) —
float(input()). - Matn kerak bo'lsa (ism, shahar) — shunchaki
input().
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?
intfloatstr- 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?
10555 5- 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?
input(int())int input()input("Son: ").int()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?
ValueErrorxatosi chiqadi0qaytariladi- Dastur javob kutishda davom etadi
"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())yokifloat(input()). - Ko'p dasturlar «kiritish → hisoblash → chiqarish» tuzilishida yoziladi.