Press "Enter" to skip to content

Python Izoh qoldirish

Sharh yoki Izoh Yaratish.

Python dasturlash tilida sikllar bilan ishlashga misol

Salom! Hackerank platformasi haqida eshitgandirsiz balki? yoki unda o’zingiz ham birorta misol/masala(lar)ni ishlab ham chiqgandirsiz. Bazi-bazida problem-solving skillarni charxlab turish foydadan holi emas. Quyida men Hackerrank dan olinganDesigner Door Mat malasiga yechimni keltirib o’tdim.

Door mat — ya’ni ostona gilamchasi

Masala: Janob vincent ostonoga qo’yiladigan “gilam” ishlab chiqarish korxonasida ishlaydi. Bir kuni, quyidagi parametrli ostona gilamini loyihasini ishlab chiqdi:

  1. Gilam o’lchami N * M. (N toq natural son, va M = 3 * N)
  2. Gilamning qoq markazida “WELCOME” degan yozuv bo’lishi kerak
  3. Ushbu dizaynda — ‘|’, ‘.’ va ‘-’ simvollaridan foydalaniladi.

Masalan, 7 * 21 o’lchamdagi gilamning ko’rishini quyidagicha bo’lishi kerak.

 ---------.|.--------- 
------.|..|..|.------
---.|..|..|..|..|.---
-------WELCOME-------
---.|..|..|..|..|.---
------.|..|..|.------
---------.|.---------

Dastlab, ikkita natural sonni o’qib olib ularni ikkita o’zgaruvchiga o’zlashtirish kerak bo’ladi. “WELCOME” yozuvini gilamning markazida chiqarish uchun mazkaziy qatorni aniqlab olamiz.

n = int(input())
m = int(input())
rows_mid_point = int(n / 2)

E’tibor bergan bo’lsangiz kerak, 0-qatorda bir dona ‘.|.’ simvoli bor, keyingi qatorda esa 3 ta ‘.|.’ simvoli bor undan keyingi qatorda esa 5 ta. Axaa! Ketma-ketlikning har bir qatorida ‘.|.’ simvollar soni 2 tadan oshib bormoqda. Bu farqni iteration_number deb belgilaymiz va dastlabki qiymat sifatida 1 beramiz va har bir keyingi qatorlarda uni ikkitaga oshirib borishimiz kerak bo’ladi.

iteration_number = 1

Endi, ‘.|.’ simvollar qaysi nuqtadan boshlanib qaysi nuqtada tugashiga qarasak — no’linchi qatorda ‘|’ simvoli shu qatorning qoq markazida joylashgan. Ya’ni, 0-qatorning uzunligi 21 ga teng (0 dan 20 gacha bo’lgan ketma-ketlikda simvollar joylashgan) shu qatorning markazi 10-o’rinda bo’lib unda ‘|’ simvoli joylashgan undan bitta oldin 9-o’rinda ‘.’ simvoli bor. Bundan kelib chiqadiki, ‘.|.’ simvolning boshlanishini quyidagicha hisoblash mumkin:

simvolning_boshlanishi = (qator_uzunligi / 2) -1ga teng ekan.

Navbatdagi qatorga e’tibor qilsak, ‘.|.’ simvollari soni 3ta teng va birinchi simvol ‘.’ 6-o’rinda turibdi. 0-qatordagi dastlabki simvol esa 9-o’rinda edi, taxmin qilishimiz mumkinki orada 3tadan farq bilan ‘.|.’ simvollar ketma-ketligi ko’rsatilyapti. 2-qatorda dastlabki ‘.’ simvoli 3-o’rinda turibdi. Demak

simvollar_boshlanishi -> har keyingi qatorda 3ta qadamdan kamayar ekan

x_difference nomli o’zgaruvchi yaratib unga dastlabki qiymatdan deb 0 beramiz, va har bir qatordan keyin(siklda) 3ta ga oshirib boramiz.

x_difference = 0

Shuningdek bizga qatorlarning boshini va o’rtasini ko’rsatuvchi o’zgaruvchilar kerak bo’ladi. Qatorlarning boshlanish o’rnini start_point deb olamiz va unga 0 qiymatni beramiz, qatorning markazi sifatida esa mid_column degan o’zgaruvchi olib unda qator uzunligi qiymatini beramiz.

start_point = 0
mid_column = int(m / 2) + 1

O’zgaruvchilarni kitib oldik endi masalani ishlashni boshlasak ham bo’lar. Har bir qatorda ‘.|.’ simvollarni chiqaruvchi funksiya yozaylik, Bunda birinchi ‘.’ simvolining o’rnini(start_point), qator uzunligini(m) va biror qatorda nechta ‘.|.’ simvoli chiqarilishi kerakligini(‘.|.’ simvollar soni — masalan 0-qatorda 1ta) argument sifatida beramiz.

def print_sybmols(start_point, m, num): 
for j in range(start_point-1):
print('-', end='')
print(".|." * num, end='')
for j in range(start_point - 1):
print('-', end='')
print()

Funksiyadagi birinchi siklda 0-o’rindan ‘.’ simvolining o’rnigacha(8) bo’lgan qismda ‘-’ simvollarini chiqariladi.

Misol uchun 0-qatorni ko’rib chiqsak: Funksiyaga start_point = 9(birinchi ‘.’ simvolining o’rni), m = 21(qator uzunligi) va num = 1 qiymatlar berilsin. Funksiyadagi birinchi sikl 0 dan boshlab start_point-1 gacha(9–1 = 8 gacha) ‘-’ simvoli console’da chop etadi. Keyingi qatordagi print() da “.|.” n marta qora ekran da chiqariladi(0-qator uchun bir marta) va yana noldan 9gacha “-” simvoli chiqariladi.

start_point ga bitta oldingi qadamdagi qiymatdan 3 ni ayirish kerak. Ya’ni 0-qatorda start_point = 9, demak 1-qatorda start_point = 6 bo’ladi. Bu ikkinchi iteratsiya(sikl aylanishi) ekanligini hisobga olsak num = num + 2 bo’ladi: num endi 3ga teng.

WELCOME so’zidan keyingi qatordagi simvollarni chiqarishni ham shu funksiyadan foydalanamiz, buning uchun funksiyaga x_difference ni va num ni kamayish tartibida berish kifoya

Qatorlar soniga teng bo’lgan sikl ochamiz va unda 3 xil holatni tekshirish kerak.

Markaziy qatordan kichik qatorlarda simvollarni chop etish

Markaziy qatorda “WELCOME” so’zini chop etish

Markaziy qatordan katta bo’lgan qatorlarda simvollarni chop etish

Bularni esa if, elif va else kontruksiyada quyidagicha yozib olamiz. mid_column o’zgaruvchisiga qatorning markaziy o’rnini qiymat qilib beramiz(M=21 bo’lganda mid_column = 10 bo’ladi). Yuqorida yozgan print_symbols() funksiyamizga har bir siklda start_point, m va iteration_number larni argument qilib beramiz u esa har bir qatorni chizib chiqadi. Markaziy qatorda shunchaki o’rtaga WELCOME so’zini olib uning ikki chekkasida bir xil uzunlikda “-” simvollar bilan to’ldiramiz.

for i in range(n): 
if i < rows_mid_point:
start_point = mid_column - (1 + x_difference)
print_sybmols(start_point, m, iteration_number)
x_difference += 3
iteration_number += 2
elif i == rows_mid_point:
w1 = mid_column - 4
s = '-' * w1
print(s, end='')
print("WELCOME", end='')
print(s)
else:
x_difference -= 3
iteration_number -= 2
start_point = mid_column - (1 + x_difference)
print_sybmols(start_point, m, iteration_number)

Mazkaziy qatordan pastki qatorlarda esa print_symbols() funksiyasiga iteration_number va x_difference qiymatlarini kamaytirib beramiz. Natijada, “.|.” simvollari qatorlardagi soni kamayish tartibida chop etiladi. Ya’ni quyidagicha

Quyida esa masalaning to’liq yechimi bilan tanishishingiz mumkin.

# Designer Door Mat problem
def print_sybmols(start_point, m, num):
for j in range(start_point-1):
print('-', end='')
print(".|." * num, end='')
for j in range(start_point - 1):
print('-', end='')
print()

arr = list(map(int, input().split()))

n = arr[0]
m = arr[1]

rows_mid_point = int(n / 2)
x_difference = 0
iteration_number = 1
start_point = 0
mid_column = int(m / 2) + 1

for i in range(n):
if i < rows_mid_point:
start_point = mid_column - (1 + x_difference)
print_sybmols(start_point, m, iteration_number)
x_difference += 3
iteration_number += 2
elif i == rows_mid_point:
w1 = mid_column - 4
s = '-' * w1
print(s, end='')
print("WELCOME", end='')
print(s)
else:
x_difference -= 3
iteration_number -= 2
start_point = mid_column - (1 + x_difference)
print_sybmols(start_point, m, iteration_number)

P.S.: Masalani ishlashga 20 daqiqa ketgandi, ushbu maqolani yozishga esa 2 soat. Tushunarsiz bo’lgan joylarini izohlarda yozsangiz albatta baholi qudrat qo’ldan kelgancha javob yozaman 🙂

Happy coding! Stay safe!

Python Izoh qoldirish.

Assalomu alaykum hurmatli dasturchi bugun python dasturlash tilida izoh qoldirish haqida gaplashib olamiz! Boshlashdan oldin biz nima uchun Izoh dan foydalanishimiz kerak ekanligini bilib olishimiz zarur hisoblanadi! Shuni esda saqlab qoling! Izoh lar ochiq va Yopiq turga bo’linadi!

Ochiq IzohBu foydalanuvchiga ko’rinib turadigan izohlar sirasiga kiradi. Masalan! Tizimga kirish vaqtida sizning login parolingiz to’g’ri yoki notug’ri ekanligini bildiruvchi xabarni misol keltirishimiz mumkin!

Yopiq IzohBu dasturchilar o’rtasida qayta tushuntirish uchun hojat qolmasligi uchun dastur qismiga sharx sifatifa qoldiriladigan izohlar hisoblanadi!
Python dasturlash tilida Misol keltiramiz!
# Bu izoh uchun yozilgan
# MasterSherkulov.Uz saytida dasturlash tilini o’rganing!

Izoh o’zi nima uchun qo’llaniladi?

  • Izoh Python dasturlash tilini kodini tushuntirish uchun qo’llash mumkin!
  • Kodni o’qilishi uchun sharxlardan foydalanish mumkin.
  • Jamoa bo’lib ishlagan vaqtda kodingizni qayta jamoaningizga tushuntirish zarur emas! chunki izoh qoldirib bir yo’la yozgan kodingizni tushuntirish imkoniyatiga ega bo’lasiz!

Sharh yoki Izoh Yaratish.

Python dasturlash tilida izoh yaratish uchun # keyin izohni yozasiz! # belgidan so’ng Python yozilgan kodni Kompyuter tiliga o’tkazilganda e’tiborsiz qoldiradi!

# Bu izoh uchun yozildi print("Hello, World! Master Sherkulov")

Hello, World! Master Sherkulov

Izoh yozishda faqat alohida qatorga emas yozadigan kodingizni to’g’risiga kiritsangiz ham bo’ladi! quyidagi misol orqali ko’rsak bo’ladi!

print("Hello, World! Master Sherkulov") # Bu izoh uchun yozildi

Hello, World! Master Sherkulov

Kod yozish jarayonida # belgi qolib ketib kodingizni yozsangiz shu belgidan so’ng kodingizni o’qimaydi! Dasturchi bo’lishga ahd qilgan bo’lsangiz unutmang! E’tiborli bo’lishga harakat qiling.

Master Sherkulov

# print("Hello, World!") print("Master Sherkulov")

Yuqorida yozilgan kodni ko’rib turganimizdek! # dan keyin yozilgan kodni izoh sifatida qabul qilib. Dastur Natijasida Izoh ni chop qilmadi! Kompyuter tiliga o’tkazilgan vaqtda e’tiborsiz qoldiriladi!

  • Python Kirish.
  • Python Muhitini o’rnatish.
  • Python Izoh qoldirish.
  • Python O’zgaruvchi.
  • Python Ma’lumot turlari.
  • Python Sonlar.
  • Python Satrlar.
  • Python Boolean (Mantiqiy)
  • Python Operator.
  • Python Ma’lumot to’plami. List.
  • Python Ma’lumot to’plami. Tuple.
  • Python Ma’lumot to’plami. Set
  • Python If … Else (shart amali)

Do’stlarga Ulashing!

MasterSherkulov

Assalomu alaykum hurmatli dasturchi. Ushbu web sayt sizga foyda keltirayotgan bo’lsa bundan mamnun bo’laman. Dasturlash tili shunday bir imkoniyati keng sohaki. Bu sohani egasi bo’lish va faoliyat yuritish sizga katta foyda olib keladi. Quyidagi keltirilgan Ijtimoiy tarmoqlarda Uzbek tiliga asoslangan rasmiy kanallarim keltirilgan.

Python haqida umumiy ma’lumot

Python dasturlash tili sodda va o’qilishi oddiy bo’lgan dasturlash tili bo’lib u inglizcha so’zlarni qo’llab quvvatlaydi kalit so’zlar o’rnida shuning uchun bu boshqacha ko’rinishga ega.

  • Python Interpretori: Bu tarjimon tomonidan ish vaqtida qayta ishlanganligini va uni bajarishdan oldin dasturni kompilyatsiya qilishning hojati yo’qligini bildiradi. Bu PERL va PHP ga o’xshaydi.
  • Python Interaktiv: Bu siz aslida Python buyrug’ida o’tirib, dasturlarni yozish uchun to’g’ridan-to’g’ri tarjimon bilan aloqa o’rnatishingiz mumkin degan ma’noni anglatadi.
  • Python Ob’ektga Yo’naltirilgan: Python Ob’ektga yo’naltirish uslubini yoki dasturiy texnikasini qo’llab-quvvatlaydi.
  • Python Boshlovchilar tili: Python – boshlang’ich dasturchilar uchun ajoyib til bo’lib, oddiy matnni ishlashdan WWW brauzerlariga o’yinlarga keng ko’lamdagi ilovalarni ishlab chiqishni qo’llab-quvvatlaydi.

Pythonni tarixi

Python Guido van Rossum tomonidan sakson va sakkizinchi yillarda Niderlandiyadagi Matematika va informatika ilmiy tadqiqot institutida ishlab chiqildi.

Python ABC, Modula-3, C, C ++, Algol-68, SmallTalk va Unix shell kabi boshqa ko’plab tillardan va boshqa skript tillaridan olingan.

Python mualliflik huquqi bilan himoyalangan. Perl kabi, Python manba kodi endi GNU General Public License (GPL) ostida mavjud.

Python hozirda institutning asosiy rivojlanish jamoasi tomonidan faoliyat yuritmoqda, garchi Guido van Rossum hali ham o’z taraqqiyotini boshqarishda muhim rol o’ynaydi.

Python xususiyatlari:

Pythonning xususiyati quyidagilarni o’z ichiga oladi:

  • O’qish oson: Python nisbatan kam kalit so’zlar, oddiy tuzilish va aniq belgilangan sintaksisga ega. Bu o’rganuvchini qisqa vaqt ichida yodlab olish imkonini beradi.
  • O’qish oson: Python kodi juda aniq va ko’zga ko’rinadigan bo’ladi.
  • Oson ishlash: Pythonning muvaffaqiyati – manba kodi juda oson.
  • Keng standart kutubxona: Pythonning eng qudratli jihatlaridan biri kutubxonaning asosiy qismi juda portativ va UNIX, Windows va Macintosh-da o’zaro faoliyat platformalar bilan mos keladi.
  • Interaktiv usul: Pythonda ishlashda terminalda ishlash uchun juda qulay terminalda test qilib ko’rsa bo’ladi.
  • Portativ: Python keng apparat platformalarida ishlaydi va barcha platformalarda bir xil interfeysga ega.
  • Kengaytirilgan: Python tarjimoniga past darajadagi modullarni qo’shishingiz mumkin. Ushbu modullar dasturchilarni o’zlarining vositalarini samaraliroq bo’lishiga qo’shish yoki sozlash imkonini beradi.
  • Ma’lumotlar bazasi: Python barcha ma’lumotlar bazasini qo’llab quvvatlaydi.
  • GUI dasturlash: Python Windows MFC, Unix, X Window kabi platformalarga GUI dasturlar tuzishni qo’llab quvvatlaydi.
  • Moslashuvchan: Python, qobiq buyruq fayliga qaraganda katta dasturlarga yanada yaxshi tuzilish va qo’llab-quvvatlash imkonini beradi.

Yuqorida aytib o’tilgan xususiyatlardan tashqari, Pythonda yaxshi xususiyatlarining katta ro’yxati bor, ularning ko’pi quyida keltirilgan:

  • Funktsional va tuzilgan dasturiy usullarni va OOP ni qo’llab-quvvatlash.
  • Ushbu buyruq fayli sifatida ishlatilishi mumkin yoki katta ilovalar yaratish uchun byte-kodga to’planishi mumkin.
  • Juda yuqori darajadagi dinamik ma’lumotlar turlari va dinamik turdagi tekshiruvlarni qo’llab-quvvatlaydi.
  • Avtomatik chiqindilarni to’plashni qo’llab-quvvatlaydi.
  • C, C ++, MAQOMOTI, ActiveX, CORBA va Java bilan osonlik bilan bog’lanishi mumkin.