AMALIYOT
Python izohli lug'atini yarating va lug'atga kamida 10 ta so'z qo'shing. Lug'atdagi har bir kalit va qiymatni for tsikli yordamida, alifbo ketma-ketligida chiroyli qilib konsolga chiqaring.
Davlatlar va ularning poytaxtlari lug'atini tuzing. Avval lug'atdagi davlatlarni, keyin poytaxtlarni alohida-alohida, alifbo ketma-ketligida konsolga chiqaring.
Foydalanuvchidan istalgan davlatni kiritishni so'rang va shu davlatning poytaxtini konsolga chiqaring. Agar foydalanuvchi lug'atda yo'q davlatni kiritsa, "Bizda bunday ma'lumot yo'q" degan xabarni chiqaring.
Restoran menusi lug'atini tuzing (kamida 10 ta taom-narh juftligini kiriting). Foydalanuvchidan 3 ta ovqat buyurtma berishni so'rang. Foydalanuvchi kiritgan taomlarni menu bilan solishtiring, agar taom menuda bo'lsa narhini ko'rsating, aks holda "bizda bunday taom yo'q" degan xabarni chiqaring.
JAVOBLAR
In [16]:
python_words = {
'integer':'Butun son',
'float': "O'nlik son",
'boolean':"Mantiqiy qiymat",
'for':"Biror amalni qayta-qayta bajarish tsikli",
'if':'Shartlarni tekshirish operatori'}
for key, value in sorted(python_words.items()):
print(f"{key.title()} - {value}")
Boolean - Mantiqiy qiymat Float - O'nlik son For - Biror amalni qayta-qayta bajarish tsikli If - Shartlarni tekshirish operatori Integer - Butun son
In [18]:
davlatlar = {
"o'zbekiston":'toshkent',
'aqsh':'washington d.c.',
'rossiya':'moskva',
'tojikiston':'dushanbe',
"qirg'iziston":'bishkek',
'qozog\'iston':'nursulton',
'malayziya':'kuala-lumpur',
'singapur':'sungapur',
'italiya':'rim'}
print('Dunyo davlatlari:')
for davlat in sorted(davlatlar):
print(davlat.upper())
print('\nDavlatlarning poytaxtlari')
for poytaxt in sorted(davlatlar.values()):
print(poytaxt.title())
Dunyo davlatlari: AQSH ITALIYA MALAYZIYA O'ZBEKISTON QIRG'IZISTON QOZOG'ISTON ROSSIYA SINGAPUR TOJIKISTON Davlatlarning poytaxtlari Bishkek Dushanbe Kuala-Lumpur Moskva Nursulton Rim Sungapur Toshkent Washington D.C.
In [19]:
country = input('Qaysi davlatning poytaxtini bilishni istaysiz?:').lower()
capital = davlatlar.get(country)
if capital==None:
print('Kechirasiz, bizda bu haqida ma\'lumot yo\'q')
else:
print(f"{country.upper()}ning poytaxti {capital.title()} shahri"
Qaysi davlatning poytaxtini bilishni istaysiz?:Rossiya ROSSIYAning poytaxti Moskva shahri
In [20]:
menu = {
'osh':20000,
"lag'mon":22000,
'non':4000,
'choy':5000,
'shashlik':12000,
'somsa':6000,
'tabaka':15000
}
print('3 ta taom buyurtma bering.')
buyurtmalar = []
for n in range(3):
buyurtmalar.append(input(f"{n+1}-taom:").lower())
for buyurtma in buyurtmalar:
if buyurtma in menu:
print(f"{buyurtma.title()} {menu[buyurtma]} so'm")
else:
print(f"Kechirasiz, bizda {buyurtma} yo'q.")
3 ta taom buyurtma bering. 1-taom:osh
2-taom:non
3-taom:norin
Osh 20000 so'm
Non 4000 so'm
Kechirasiz, bizda norin yo'q.
16-DARS. NESTING
Lug'at ichida ro'yxat, ro'yxat ichida lug'at?
NESTING
Ba'zida dasturlash jarayonida lug'atning ichida ro'yxatlar yoki boshqa lug'atni, yoki aksincha ro'yxat ichida lug'atni saqlash ham qo'l kelishi mumkin. Bu ingliz tilida Nesting deyiladi. Nesting Pythondagi foydali xususiyatlardan biri.
Keling, bunga bir nechta misollar ko'ramiz.
LUG'ATLAR RO'YXATI
Biz avvalgi darsimizda talabalarning ma'lumotlarini lug'at shaklida saqlashni ko'rgan edik. Shunday talabalardan yuzlab bo'lganda, ularning har biriga alohida lug'at qilishimiz tabiiy, lekin bu lug'atlar bilan ishlash qiyinchilik tug'dirishi mumkin. Shunday xolatda barcha lug'atlarni (talabalarni) bitta ro'yxatga joylab, ular ustida turli amallar bajarish mumkin. Kelin quyidagi misolni ko'ramiz, bazamizda bir nechta mashinalar bor. Har bir mashina alohida lug'at shaklida.
In [4]:
car0 = {
'model':'lacetti',
'rang':'oq',
'yil':2018,
'narh':13000,
'km':50000,
'korobka':'avtomat'
}
car1 = {
'model':'nexia 3',
'rang':'qora',
'yil':2015,
'narh':9000,
'km':89000,
'korobka':'mexanika'
}
car2 = {
'model':'gentra',
'rang':'qizil',
'yil':2019,
'narh':15000,
'km':20000,
'korobka':'mexanika'
}
Agar biz har bir lug'atga alohida murojat qiladigan bo'lsak, lug'atlarning nomlarini yodlab qolishimiz talab qilinar edi:
In [5]:
car = car0
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
car = car1
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
car = car2
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
Lacetti, oq rang, 2018-yil, 13000$ Nexia 3, qora rang, 2015-yil, 9000$ Gentra, qizil rang, 2019-yil, 15000$
Keling, barcha avtolarni bitta ro'yxatga joylaymiz, va for tsikli yordamida birma-bir konsolga chiqaramiz:
In [6]:
cars = [car0, car1, car2]
for car in cars:
print(f"{car['model'].title()}, "
f"{car['rang']} rang, "
f"{car['yil']}-yil, {car['narh']}$")
Lacetti, oq rang, 2018-yil, 13000$ Nexia 3, qora rang, 2015-yil, 9000$ Gentra, qizil rang, 2019-yil, 15000$
E'tibor bering, ishimiz bir muncha yengillashdi, kodimiz ham qisqardi. Natija esa bir hil.
Endi biz ro'yxat ichidagi istalgan lug'atga indeks bo'yicha murojat qilaveramiz (lug'at nomini yodlab qolish shart emas)
In [7]:
print(cars[0])
{'model': 'lacetti', 'rang': 'oq', 'yil': 2018, 'narh': 13000, 'km': 50000, 'korobka': 'avtomat'}
Biror lug'atdagi elementga murojat qilish uchun esa quyidagi usuldan foydalanishimiz mumkin:
In [8]:
print(cars[0]['model'])
lacetti
In [9]:
print(f"{cars[2]['rang'].title()} "
f"{cars[2]['model']}")
Qizil gentra
for tsikli yordamida biz bo'sh lug'atlar ro'yxatini ham yaratib olishimiz mumkin:
In [10]:
malibus=[] # Malibu mashinalari uchun bo'sh ro'yxat yaratdik
for n in range(10):
new_car = { # har bir yangi mashina uchun lug'at yaratamiz
'model':'malibu',
'rang':None, # rangi noaniq
'yil':2020,
'narh':None, # narhi belgilanmagan
'km':0,
'korobka':'avto'
}
malibus.append(new_car) # yangi lug'atni ro'yxatga qo'shamiz
Yuqoridagi misloda biz 10 ta Malibu mashinasidan iborat ro'yxat tuzdik. E'tibor qiling, 'rang' kalitiga qiymat bermadik va None deb qoldirdik. Endi ishlab chiqarish jarayonida mashinalarga turli ranglarni berishimiz mumkin. Misol uchun birinchi 3 ta mashinaga qizil rang beramiz:
In [11]:
for malibu in malibus[:3]:
malibu['rang']='qizil'
Keyingi 3 tasiga esa qora:
In [12]:
for malibu in malibus[3:6]:
malibu['rang']='qora'
Oxirgi 4 ta avtoni qora, lekin korobkasini mexanika qilamiz:
In [13]:
for malibu in malibus:
if malibu['korobka']=='avto':
malibu['narh']=40000
else:
malibu['narh']=35000
Keling endi, mashinalarning korobkasidan chiqqan holda narh belgilaymiz:
In [15]:
for malibu in malibus:
if malibu['korobka']=='avto':
malibu['narh']=40000
else:
malibu['narh']=35000
In [17]:
for malibu in malibus:
print(malibu)
{'model': 'malibu', 'rang': 'qizil', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': 'qizil', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': 'qizil', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': 'qora', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': 'qora', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': 'qora', 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': None, 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': None, 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': None, 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'} {'model': 'malibu', 'rang': None, 'yil': 2020, 'narh': 40000, 'km': 0, 'korobka': 'avto'}
LUG'AT ICHIDA RO'YXAT
Bir kalitga bir nechta qiymatlar berish talab qilinganda, qiymatlarni ro'yxat ko'rinishida yozish o'rinlidir. Misol uchun, bir tashkilotda bir nechta dasturchilar ishlaydi va har bir dasturchi turli dasturlash tillarini biladi. Keling dasturchilar lug'atini tuzamiz va har bir dasturchi haqidagi ma'umotni konsolga chiqaramiz:
In [18]:
dasturchilar = {
'ali':['python','c++'],
'vali':['html','css','js'],
'hasan':['php','sql'],
'husan':['python','php'],
'maryam':['c++','c#']
}
for ism, tillar in dasturchilar.items():
print(f"\n{ism.title()} quyidagi dasturlash tillarini biladi:")
for til in tillar:
print(til.upper())
Ali quyidagi dasturlash tillarini biladi: PYTHON C++ Vali quyidagi dasturlash tillarini biladi: HTML CSS JS Hasan quyidagi dasturlash tillarini biladi: PHP SQL Husan quyidagi dasturlash tillarini biladi: PYTHON PHP Maryam quyidagi dasturlash tillarini biladi: C++ C#
Pythondagi print() funktsiyasi har bir matndan so'ng yangi qator tashlaydi. Buning oldini olish uchun quyidagi usuldan foydalanish mumkin: print(string, end = '')
In [19]:
for ism, tillar in dasturchilar.items():
print(f"\n{ism.title()} quyidagi dasturlash tillarini biladi:", end='')
for til in tillar:
print(f'{til.upper()} ', end='')
Ali quyidagi dasturlash tillarini biladi:PYTHON C++ Vali quyidagi dasturlash tillarini biladi:HTML CSS JS Hasan quyidagi dasturlash tillarini biladi:PHP SQL Husan quyidagi dasturlash tillarini biladi:PYTHON PHP Maryam quyidagi dasturlash tillarini biladi:C++ C#
LUG'AT ICHIDA LUG'AT
Bunday qilish tavsiya etilmasada, istisno holatlarda lug'at ichidagi qiymatlarni lug'at ko'rinishida ham saqlash mumkin. Misol uchun, ish joyingizdagi hamkasblaringiz haqidagi ma'lumotlarni saqlashda, hamkasbingizning ismi kalit, u haqidagi ma'lumotlarni esa lug'at ko'rinishida berilishi mumkin.
In [20]:
hamkasblar = {
'ali':{'familiya':'valiyev',
'tyil':1995,
'malumot':'oliy',
'tillar':['python','c++']
},
'vali':{'familiya':'aliyev',
'tyil':2001,
'malumot':"o'rta-maxsus",
'tillar':['html', 'css', 'js']},
'hasan':{'familiya':'husanov',
'tyil':1999,
'malumot':'maxsus',
'tillar':['python','php']}
}
Hamkasblar to'g'risidagi ma'lumotlarni esa quyidagicha ko'rish mumkin:
In [21]:
for ism, info in hamkasblar.items():
print(f"\n{ism.title()} {info['familiya'].title()}, "
+ f"{info['tyil']}-yilda tug'ilgan. "
f"Ma'lumoti: {info['malumot']}. \n"
"Quyidagi dasturlash tillarini biladi:")
for til in info['tillar']:
print(til.upper())
Ali Valiyev, 1995-yilda tug'ilgan. Ma'lumoti: oliy. Quyidagi dasturlash tillarini biladi: PYTHON C++ Vali Aliyev, 2001-yilda tug'ilgan. Ma'lumoti: o'rta-maxsus. Quyidagi dasturlash tillarini biladi: HTML CSS JS Hasan Husanov, 1999-yilda tug'ilgan. Ma'lumoti: maxsus. Quyidagi dasturlash tillarini biladi: PYTHON PHP
Do'stlaringiz bilan baham: |