O'zgaruvchilar
Dasturlar ma'lumotlarni eslab qolishi kerak: foydalanuvchining ismi, o'yindagi ochko, savatchadagi mahsulotlar narxi. Buning uchun o'zgaruvchilar ishlatiladi — dasturlashning eng muhim tushunchalaridan biri.
Bu darsda
- O'zgaruvchi nima va u nima uchun kerak
- O'zgaruvchiga qiymat berish va uni o'zgartirish
=belgisining dasturlashdagi ma'nosi- O'zgaruvchilarni to'g'ri nomlash qoidalari
- Ko'p uchraydigan xatolar
O'zgaruvchi — nomli quti
Ko'chib o'tayotganda narsalarni qutilarga solib, ustiga yorliq yopishtirasiz: «Idishlar», «Kitoblar», «Qishki kiyimlar». Keyin qaysi qutida nima borligini yorliqqa qarab bilib olasiz.
O'zgaruvchi — xuddi shunday yorliqli quti. Yorliq — o'zgaruvchining nomi, ichidagi narsa esa uning qiymati.
Python'da o'zgaruvchi yaratish juda oddiy — nomini yozasiz, = belgisini qo'yasiz va qiymatini yozasiz:
ism = "Dilnoza" yosh = 17 print(ism) print(yosh)
Bu yerda ikkita o'zgaruvchi yaratdik: ism nomli qutiga "Dilnoza" matnini, yosh nomli qutiga esa 17 sonini soldik. Keyin print() ga o'zgaruvchi nomini berdik va Python uning ichidagi qiymatni chiqardi.
print(ism) va print("ism") — butunlay boshqa narsalar! Birinchisi o'zgaruvchi ichidagi qiymatni (Dilnoza) chiqaradi, ikkinchisi esa shunchaki «ism» so'zini chiqaradi. Qo'shtirnoqlar ma'noni o'zgartiradi.
= — «teng» emas, «qiymat ber»
Matematikada = «teng» degani. Dasturlashda esa u boshqacha ishlaydi: o'ng tomondagi qiymatni chap tomondagi nomga beradi. Bu amal o'zlashtirish deyiladi.
yosh = 17 ni «yosh 17 ga teng» emas, «yoshga 17 ni ber» yoki «yosh qutisiga 17 ni sol» deb o'qing. Shuning uchun 17 = yosh deb yozish xato bo'ladi — songa nom berib bo'lmaydi.
O'zgaruvchilardan foydalanish
O'zgaruvchini qiymat kerak bo'lgan istalgan joyda ishlatish mumkin:
ism = "Dilnoza"
shahar = "Buxoro"
print("Salom,", ism)
print(ism, shahar, "shahrida yashaydi.")
print("Xayr,", ism)
Endi ismni bitta joyda — birinchi qatorda — o'zgartirsangiz, u dasturning hamma joyida o'zgaradi. O'zgaruvchilarning asosiy foydasi ham shunda: qiymat bir marta yoziladi, ko'p marta ishlatiladi.
Qiymatni o'zgartirish
O'zgaruvchi shuning uchun «o'zgaruvchi» deyiladi: uning qiymatini istalgan paytda almashtirish mumkin. Yangi qiymat berilganda, eskisi butunlay o'chib ketadi:
ob_havo = "quyoshli"
print("Ertalab:", ob_havo)
ob_havo = "yomg'irli"
print("Kechqurun:", ob_havo)
Ertalab: quyoshli Kechqurun: yomg'irli
O'zgaruvchining o'zidan foydalanib yangilash
Dasturlashda juda ko'p uchraydigan holat — o'zgaruvchining yangi qiymatini uning eski qiymatidan hisoblash:
ochko = 10
print("Boshida:", ochko)
ochko = ochko + 5
print("Bonusdan keyin:", ochko)
Boshida: 10 Bonusdan keyin: 15
ochko = ochko + 5 matematik jihatdan mantiqsiz ko'rinadi, lekin dasturlashda hammasi to'g'ri. Python avval o'ng tomonni hisoblaydi: ochko ichida 10 bor, 10 + 5 = 15. Keyin natijani chap tomondagi ochko qutisiga soladi.
O'zgaruvchilarni nomlash qoidalari
Nom tanlashda Python'ning qat'iy qoidalari bor:
- Nom faqat lotin harflari, raqamlar va pastki chiziq
_dan iborat bo'lishi mumkin. - Nom raqam bilan boshlanmasligi kerak.
- Nomda bo'sh joy bo'lmaydi. So'zlarni pastki chiziq bilan ajrating:
talaba_ismi. - Python'ning maxsus so'zlarini (
if,for,while,Trueva boshqalar) nom sifatida ishlatib bo'lmaydi. - Katta va kichik harflar farq qiladi:
Ism,ismvaISM— uchta boshqa-boshqa o'zgaruvchi.
O'zbek tilidagi nomlar uchun muhim! Apostrof ' nomda ishlatilmaydi: o'quvchi, to'g'ri_javob, bog' — xato nomlar. «O'» va «g'» harflarini apostrofsiz yozing: oquvchi, togri_javob, bog.
| Nom | To'g'rimi? | Izoh |
|---|---|---|
yosh | Ha | Oddiy, tushunarli nom |
talaba_soni | Ha | So'zlar pastki chiziq bilan ajratilgan |
narx2 | Ha | Raqam nomning oxirida — mumkin |
2narx | Yo'q | Raqam bilan boshlanyapti |
mening ismim | Yo'q | Bo'sh joy bor |
o'quvchi | Yo'q | Apostrof bor — oquvchi deb yozing |
for | Yo'q | Python'ning maxsus so'zi |
narx-chegirma | Yo'q | Chiziqcha ayirish belgisi deb tushuniladi |
Yaxshi nom — yarim hujjat
Qoidalardan tashqari, nomlar ma'noli bo'lishi kerak. Quyidagi ikki dasturni solishtiring — ikkalasi ham bir xil ishni qiladi:
a = 4000 b = 3 c = a * b
non_narxi = 4000 soni = 3 jami_narx = non_narxi * soni
Ikkinchisini izohsiz ham tushunish mumkin. Python'da nomlar odatda kichik harflar bilan yozilib, so'zlar pastki chiziq bilan ajratiladi: jami_narx, foydalanuvchi_ismi. Bu uslub snake_case («ilon uslubi») deb ataladi.
Amaliy misol: do'kondagi xarid
non_narxi = 4000
non_soni = 3
sut_narxi = 12000
jami = non_narxi * non_soni + sut_narxi
print("Non:", non_narxi * non_soni, "so'm")
print("Sut:", sut_narxi, "so'm")
print("Jami:", jami, "so'm")
Non: 12000 so'm Sut: 12000 so'm Jami: 24000 so'm
Narxlar o'zgarsa, faqat yuqoridagi qiymatlarni almashtirish kifoya — qolgan hisob-kitob o'zi to'g'rilanadi. Sinab ko'ring: nonni 5000 so'm qiling.
Bir qatorda bir nechta o'zgaruvchi
Python bir qatorda bir nechta o'zgaruvchiga qiymat berishga imkon beradi:
ism, familiya, yosh = "Jasur", "Rahimov", 20 print(ism, familiya, yosh) x = y = 0 print(x, y)
Shu usul bilan ikki o'zgaruvchining qiymatini bitta qatorda almashtirish ham mumkin:
a = 5
b = 10
a, b = b, a
print("a =", a)
print("b =", b)
a = 10 b = 5
Ko'p uchraydigan xatolar
1. Qiymat berilmagan o'zgaruvchidan foydalanish. Python o'zgaruvchini faqat unga qiymat berilgandan keyin taniydi:
print(mehmon) mehmon = "Sardor"
Bu yerda NameError chiqadi, chunki 1-qator bajarilayotganda mehmon hali yaratilmagan. Qatorlar o'rnini almashtirsangiz, xato yo'qoladi.
2. Nomni xato yozish. talaba_soni deb yaratib, keyin talabalar_soni deb ishlatsangiz, Python ularni boshqa-boshqa nom deb biladi va yana NameError beradi.
Mashqlar
1-mashq Anketa
ism, yosh va shahar o'zgaruvchilarini yarating va ularni ishlatib, quyidagiga o'xshash gapni chiqaring: Mening ismim Kamola, men 19 yoshdaman va Namanganda yashayman.
ism = "Kamola" # qolgan o'zgaruvchilarni yarating va gapni chiqaring
Yechimni ko'rish
ism = "Kamola"
yosh = 19
shahar = "Namangan"
print("Mening ismim", ism + ",", "men", yosh, "yoshdaman va", shahar + "da yashayman.")
Bu yerda ism + "," matnlarni birlashtiradi, shunda vergul ismga yopishib turadi. Matnlarni birlashtirishni 6-darsda batafsil o'rganamiz.
2-mashq Qiymatlarni almashtiring
chap va ong o'zgaruvchilari qiymatlarini o'rnini almashtiring, shunda dastur sut non chiqarsin. Mavjud qatorlarni o'zgartirmang — faqat o'rtaga kod qo'shing.
chap = "non" ong = "sut" # shu yerga kod yozing print(chap, ong)
Yechimni ko'rish
chap = "non" ong = "sut" chap, ong = ong, chap print(chap, ong)
3-mashq Yillik ijara
Kvartira ijarasi oyiga 2 500 000 so'm. oylik o'zgaruvchisini yarating va bir yillik to'lovni hisoblab, Yillik to'lov: 30000000 ko'rinishida chiqaring.
oylik = 2500000
Yechimni ko'rish
oylik = 2500000
yillik = oylik * 12
print("Yillik to'lov:", yillik)
O'zingizni sinang
Qaysi biri to'g'ri o'zgaruvchi nomi?
2ismo'quvchitalaba_sonimening ismim
To'g'ri. Qolganlarida raqam bilan boshlanish, apostrof yoki bo'sh joy bor.
Quyidagi kod nima chiqaradi?
x = 5 x = x + 3 print(x)
58x + 3- Xato beradi
To'g'ri. Avval o'ng tomon hisoblanadi: 5 + 3 = 8. Keyin 8 yana x ga yoziladi.
Dasturlashda = belgisi nimani bildiradi?
- O'ng tomondagi qiymatni chap tomondagi nomga berishni
- Ikki qiymat tengligini tekshirishni
- Qo'shishni
- Dastur oxirini
To'g'ri. Tenglikni tekshirish uchun boshqa belgi — == ishlatiladi. U bilan 8-darsda tanishamiz.
Quyidagi kod nima chiqaradi?
a = 5 b = a a = 10 print(b)
10515a
To'g'ri. b = a qatorida b ga o'sha paytdagi qiymat — 5 berildi. Keyin a o'zgargani b ga ta'sir qilmaydi.
Xulosa
- O'zgaruvchi — qiymat saqlanadigan nomli «quti»:
yosh = 17. =— o'ng tomondagi qiymatni chap tomondagi nomga beradi. Avval o'ng tomon hisoblanadi.- Yangi qiymat berilsa, eskisi o'chib ketadi.
- Nomlar lotin harflari, raqamlar va
_dan iborat bo'ladi, raqam bilan boshlanmaydi, bo'sh joy va apostrof bo'lmaydi. - Ma'noli nomlar tanlang:
jami_narx— yaxshi,x1— yomon.