Barcha kurslar Yo'nalishlar Reyting Kirish Ro'yxatdan o'tish

Bu bo'lim to'liq amaliyot: uchta ishlaydigan dastur qurildi — "Son topish", "So'z topish" va Kirill-Lotin transliterator. Konspektda har loyihaning qurilish mantig'i, kalit kod qismlari va umumiy saboqlar.

1-loyiha: "Son topish" o'yini

Kompyuter 1–100 oralig'ida son "o'ylaydi"; foydalanuvchi taxmin qiladi; dastur "kattaroq/kichikroq" deb yo'naltiradi. Yadro:

import random

yashirin = random.randint(1, 100)
urinish = 0

while True:
    taxmin = int(input("Sonni toping: "))
    urinish += 1
    if taxmin < yashirin:
        print("Kattaroq son ayting")
    elif taxmin > yashirin:
        print("Kichikroq son ayting")
    else:
        print(f"Topdingiz! Urinishlar: {urinish}")
        break

Bu yerda oldingi bo'limlarning deyarli hammasi ishladi: random.randint — tasodifiy son, while True + break — o'yin tsikli, if/elif/else — yo'naltirish, hisoblagich — urinishlar.

2-qismda qo'shilgani — kiritishni tekshirish. Foydalanuvchi son o'rniga "salom" yozsa, int() dasturni ValueError bilan yiqitadi. Himoya — kiritishni oldindan tekshirish:

kiritildi = input("Sonni toping: ")
if not kiritildi.isdigit():
    print("Iltimos, son kiriting")
    continue
taxmin = int(kiritildi)

.isdigit() — matn faqat raqamlardan iboratligini tekshiradi. (Keyinroq, Fayllar va xatolar bo'limida, xuddi shu himoya try-except bilan ham quriladi.)

3-qismda — urinishlar limiti va kodni funksiyalarga ajratish: o'yin mantig'i oyna() funksiyasiga o'tdi, qayta o'ynash so'rovi tashqi tsiklga.

2-loyiha: "So'z topish" o'yini

Kompyuter so'z tanlaydi, foydalanuvchi harfma-harf ochadi. Yangi ishlatilgan usullar:

import random

sozlar = ["python", "dastur", "klaviatura"]
soz = random.choice(sozlar)          # ro'yxatdan tasodifiy tanlash
topilgan = []

# so'zning joriy holatini ko'rsatish: p _ t _ o n
for harf in soz:
    if harf in topilgan:
        print(harf, end=" ")
    else:
        print("_", end=" ")

Kalit g'oyalar:

  • random.choice(royxat) — ro'yxatdan tasodifiy element;
  • topilgan harflar alohida ro'yxatda yuritiladi; ekran holati har aylanishda shu ro'yxatga qarab quriladi;
  • harf so'zda bormi — harf in soz; oldin aytilganmi — harf in topilgan;
  • yutuq sharti: so'zning hamma harfi topilganda; mag'lubiyat: urinishlar tugadi.

O'yinning butun holati ikkita o'zgaruvchida (soz, topilgan) turibdi — holatni minimal saqlash keyinchalik katta dasturlarda ham asosiy tamoyil.

3-loyiha: Kirill-Lotin transliterator

Real ishlatsa bo'ladigan dastur: matnni bir yozuvdan ikkinchisiga o'giradi. Asosi — almashtirish jadvali (lug'at):

jadval = {"sh": "ш", "ch": "ч", "o'": "ў", "g'": "ғ", "a": "а", "s": "с", "h": "ҳ"}

matn = "shahar"
natija = matn
for lotin, kirill in jadval.items():
    natija = natija.replace(lotin, kirill)
print(natija)

Natija:

шаҳар

Eng muhim saboq — tartib. Agar s va h avval, sh keyin almashtirilsa, "shahar"dagi sh avval с+ҳ bo'lib bo'linadi va natija buziladi. To'g'ri tartib: avval ikki belgili birikmalar (sh, ch, o', g'), keyin bittaliklar. Ma'lumot ustida ketma-ket amallar bajarilganda tartib masalasi doim diqqat talab qiladi — bu loyiha uni yaqqol ko'rsatdi.

2-qismda dastur ikki yo'nalishli qilindi (lotin↔kirill), maxsus holatlar (bosh harflar, e/э) qayta ishlandi va mantiq funksiyalarga ajratildi.

Uch loyihaning umumiy saboqlari

  1. Dekompozitsiya. Har loyiha "minimal ishlaydigan versiya → qo'shimchalar" yo'lida qurildi. Katta masalani bir urinishda yozishga harakat — boshlovchining eng katta tuzog'i.
  2. input() har doim matn qaytaradi. Son kerak bo'lsa int(); foydalanuvchi xato kiritishi mumkinligi normadir — dastur bunga tayyor bo'lishi kerak.
  3. Holatni oz saqlang. O'yinning butun holati 2-3 o'zgaruvchiga sig'sa, kodni tushunish ham, tuzatish ham oson.
  4. Oxirgi qadam — funksiyalarga ajratish. Uchala loyihada ham ishlagan kod so'ngida funksiyalarga bo'lindi. "Avval ishlasin, keyin chiroyli bo'lsin" — to'g'ri tartib, lekin ikkinchi qadamni tashlab ketmang.

Eslab qoling

  • random.randint(a, b) — oraliqda son; random.choice(royxat) — ro'yxatdan element.
  • .isdigit() — kiritilgan matn raqamligini tekshirish yo'li.
  • while True + break — o'yin/muloqot tsiklining standart shakli.
  • Almashtirishlar ketma-ketligida tartib natijani o'zgartiradi: maxsus (uzun) holatlar oldin.
  • Ishlagan kodni funksiyalarga ajratish — loyihaning yakuniy, majburiy qadami.

Amaliyot

  1. "Son topish"ga 7 urinishlik limit qo'shing; limit tugasa yashirin son e'lon qilinib o'yin tugasin.
  2. O'yin oxirida "Yana o'ynaysizmi? (ha/yo'q)" so'rang; "ha" — yangi son bilan qayta boshlash.
  3. "So'z topish"da so'zlar ro'yxatini 10 taga yetkazing va har aylanishda qolgan urinishlar sonini ko'rsating.
  4. Transliterator jadvalini to'ldiring (kamida 15 juftlik) va "dastur", "cho'l", "g'isht" so'zlarida sinang — tartib to'g'riligini tekshiring.
  5. Istalgan loyihani modulga chiqaring: mantiq oyin.pyda, asosiy fayl faqat import qilib ishga tushirsin.
  6. (Qo'shimcha) Uchala dasturni bitta menyuga birlashtiring: foydalanuvchi 1/2/3 tanlasa, mos o'yin ishga tushsin.

Bo'lim testi loyihalardagi asosiy yechimlarni so'raydi.

Amaliyot — konspekt

Amaliyot Maqola

Uch loyihadan olingan asosiy saboqlar: dekompozitsiya, input bilan ishlash, random va lug'atlar.

Eslatma yozish uchun saytga kiring.

Resurslar hozircha qo'shilmagan

O'qituvchi dars uchun qo'shimcha materiallarni qo'shganida shu yerda paydo bo'ladi.

Savol berish uchun saytga kiring.

Hozircha savollar yo'q

Bu dars yuzasidan birinchi savolni siz bering.