Ачааллж байна...
Энэ бол бидний хамтдаа барих сүүлчийн программ. Тоо таах тоглоомоос эхэлсэн зам — харилцагчийн дэвтэр, тэмдэглэлийн дэвтэр, хийх ажлын жагсаалт — өнөөдөр тоглоомоор эргэж хаагдана: Чулуу-цаас-хайч — компьютерын эсрэг, таван үзэгдэлтэй, оноо тоолдог бүрэн тэмцээн. Төслийг зориуд ингэж сонгосон: энэ тоглоомд шинэ мэдлэг нэг ч хэрэггүй — random.choice (Бүлэг 13-ын туршилтын "гэрийн зугаа" — өнөөдөр албан ёсны дүрдээ!), function, while, if/elif, dictionary, f-string: таны бүх их аяны багаж нэг тавцанд гарна — сүүлчийн барилга бол шинийг сурах биш эзэмшсэнээ баталгаажуулах ёслол. Ажлын горим сүүлчийн удаа хуучнаараа: тайлбарлана — бичнэ — шалгалтын цэгүүдэд Run.
Тоглоомын дүрмээ (хүн болгон мэддэг ч инженер хүн тодорхойлж эхэлдэг журмаар) бичье: хоёр тоглогч зэрэг нэг зүйл сонгоно — чулуу, цаас, хайчны аль нэг; чулуу хайчийг ялна (мохоно), хайч цаасыг ялна (хайчилна), цаас чулууг ялна (бүтээнэ); ижил сонголт — тэнцээ. Тэмцээн: түрүүлж гурав хожсон нь аварга ("таван үзэгдэлтэй" тэмцээний ердийн хэлбэр — best of five).
Гурван асуулт — гурван хариулт. Компьютер яаж "сонгох" вэ? — random.choice(["чулуу", "цаас", "хайч"]): list-ээс санамсаргүй гишүүн сугалагч. Нэг үзэгдлийн ялагчийг яаж тогтоох вэ? — гурван дүрэм + тэнцээ: if/elif-ийн шат — тэгээд энэ шүүлт "нэг нэр өгмөөр багц" тул function: uzegdliin_yalagch(hun, computer) — хоёр сонголт авч, "хүн"/"компьютер"/"тэнцээ" гэсэн string гардуулна (return — шүүлтийн үр дүнг дуудагч нь оноонд хэрэглэнэ). Оноог юунд тоолох вэ? — хоёр тоо хэрэгтэй: хүнийх, компьютерынх — хоёр тусдаа variable болно... гэхдээ бид илүү цэгцтэй савыг мэднэ: жижигхэн dictionary — onoo = {"хүн": 0, "компьютер": 0}: яагаад толь дээр вэ гэдэг нь барилгын явцад нэг гоё "оньсого тайлагдалтаар" харагдана — хүлээгээрэй. Файл: chulu_tsaas_haich.py.
Тоглоомын "тархинаас" эхэлье:
python
import random
SONGOLTUUD = ["чулуу", "цаас", "хайч"]
def uzegdliin_yalagch(hun, computer):
if hun == computer:
return "тэнцээ"
if hun == "чулуу" and computer == "хайч":
return "хүн"
if hun == "цаас" and computer == "чулуу":
return "хүн"
if hun == "хайч" and computer == "цаас":
return "хүн"
return "компьютер"Задалъя. Import эхэнд, SONGOLTUUD — бүгд том үсэгтэй тогтмол (FILE_NER-ийн дадал): гурван сонголт нэг л газар бичигдэнэ — компьютерын сугалалтад ч, хожим орцын шалгалтад ч энэ нэг жагсаалт үйлчилнэ: DRY. Function-ий бүтэц бол эрт буцалтын цуврал (Бүлэг 8-ын хэв маяг оргилдоо): эхлээд тэнцээг шүүгээд буцна; дараа нь хүний ялах гурван тохиолдлыг нэг нэгээр нь шалгаж буцна; аль нь ч биш бол — үлдсэн ганц боломж: сүүлчийн мөр else-гүйгээр "компьютер" гардуулна ("return = гарц" тул else илүүц гэсэн Бүлэг 8-ын ажиглалт). Гурван дүрэм гурван мөрөнд үгчлэн уншигдаж байгааг ажигла: "чулуу and хайч → хүн" — код дүрмийн хуудас шиг: and-ийн (Бүлэг 6) хамгийн цэвэр хэрэглээ.
Ажиллуулж шалгая — function-ээ тусад нь турших инженерийн дадлаар (түр мөрүүд — дараа нь устгана):
python
print(uzegdliin_yalagch("чулуу", "хайч"))
print(uzegdliin_yalagch("цаас", "хайч"))
print(uzegdliin_yalagch("цаас", "цаас"))"хүн", "компьютер", "тэнцээ" гурав дараалан гарвал — тархи бэлэн: том программд угсрахаасаа өмнө эд ангиа шалгах энэ дадал бол мэргэжлийн барилгачны хамгаалалтын малгай.
Шүүгчээ тэмцээнд оруулъя (туршилтын гурван print-ээ устгаад):
python
onoo = {"хүн": 0, "компьютер": 0}
hun = input("Сонголтоо бичээрэй (чулуу/цаас/хайч): ").strip().lower()
computer = random.choice(SONGOLTUUD)
print(f"Компьютер: {computer}")
yalagch = uzegdliin_yalagch(hun, computer)
if yalagch == "тэнцээ":
print("Тэнцлээ!")
else:
onoo[yalagch] = onoo[yalagch] + 1
print(f"Энэ үзэгдлийг {yalagch} авлаа")
print(f"Оноо — Та: {onoo['хүн']}, Компьютер: {onoo['компьютер']}")Гурван нарийн газар. Орцын угаалга: .strip().lower() — "Чулуу ", "ЧУЛУУ" бүгд "чулуу" болно: Бүлэг 9-ийн зан үйл сүүлчийн барилгадаа ч мөр алдахгүй. Амласан оньсого тайлагдалт: onoo[yalagch] = onoo[yalagch] + 1 — энэ ганц мөрийг хараарай: шүүгчийн гардуулсан string ("хүн" эсвэл "компьютер") толины key болж шууд ажиллаж байна — оноог хоёр тусдаа variable-д тоолсон бол энд if yalagch == "хүн": ... else: ... гэсэн дөрвөн мөр салаа хэрэгтэй байсан: толь + "key нь variable-аас ирдэг" (Бүлэг 10-ын "зүрхний цохилт") хос дөрвийг нэг болгов — өгөгдлийн бүтцээ ухаалаг сонгоход код өөрөө агшдагийн үзүүлбэр. Нүхэн доторх хашилт: f-string дотор onoo['хүн'] — дан хашилт: нүх өөрөө давхар хашилтын дотор байгаа тул доторх string дан хашилтаар зааглагдана (хоёр төрлийн хашилт байдгийн учир — Бүлэг 5-ын "нэг нь нөгөөгийнхөө дотор" дүрэм — энд өдөр тутмын хэрэглээгээ олов).
Ажиллуулж шалгая: нэг үзэгдэл бүрэн тоглогдож, оноо зөв бичигдэж байвал — гол эргэлтэнд оръё.
Алхам 2-ын кодыг while-д хийж, дээр нь хоёр хамгаалалт:
python
print("--- ЧУЛУУ - ЦААС - ХАЙЧ ---")
print("Түрүүлж 3 хожсон нь аварга болно!")
while onoo["хүн"] < 3 and onoo["компьютер"] < 3:
hun = input("\nСонголтоо бичээрэй (чулуу/цаас/хайч): ").strip().lower()
if hun not in SONGOLTUUD:
print("Гурвын нэгийг л бичээрэй!")
continue
computer = random.choice(SONGOLTUUD)
print(f"Компьютер: {computer}")
yalagch = uzegdliin_yalagch(hun, computer)
if yalagch == "тэнцээ":
print("Тэнцлээ!")
else:
onoo[yalagch] = onoo[yalagch] + 1
print(f"Энэ үзэгдлийг {yalagch} авлаа")
print(f"Оноо — Та: {onoo['хүн']}, Компьютер: {onoo['компьютер']}")
if onoo["хүн"] == 3:
print("\nБаяр хүргэе — ТА АВАРГА БОЛЛОО!")
else:
print("\nКомпьютер яллаа — дараа дахин үзье!")Хоёр шинэ дүр. While-ын толгой: энэ удаад while True + break биш — жинхэнэ нөхцөл: "хоёулангийн оноо 3 хүрээгүй байх зуур" — and-тай нөхцөл (аль нэг нь 3 хүрмэгц False болж давталт өөрөө хаагдана): break-ийн ёс зүйн дүрмээ саная (Бүлэг 7) — "хил нь толгойд багтаж байвал — тэнд нь бич": энэ тэмцээний хил яг багтаж байна — багтахад нь толгойдоо бичлээ. Орцын шалгалт: if hun not in SONGOLTUUD: ... continue — not in (in-ийн үгүйсгэл — not-ын байнгын хоршил): гурвын нэг биш юм бичвэл анхааруулга + continue — тойрог товчлогдож дахин асууна: тэнцээ ч биш, оноо ч үгүй — "буруу орц үзэгдэлд тооцогдохгүй" (нэвтрэлтийн жишээний хоосон-орцын журам — Бүлэг 7). Давталтын дараах if/else — тэмцээний магнай: давталт зөвхөн "хэн нэг нь 3 хүрэхэд" дуусдаг тул энд хоёрын нэг нь гарцаагүй үнэн — аль нь болохыг л шалгаад зарлана.
Ажиллуулж шалгая — бүтэн тэмцээн: тоглоод үз — жинхэнээсээ: буруу үг бичиж хамгаалалтыг сорь, тэнцээ гаргаж үз, гурав хүртэл тэмц. Тэгээд нэг зүйлийг мэдэр: таны эсрэг тоглож буй "өрсөлдөгч" бол таны өөрийн арван мөр код — гэтэл random-ын ачаар тэр урьдчилан мэдэгдэхгүй, жинхэнэ өрсөлдөгч шиг: Бүлэг 13-ын "таамаглагдашгүй нь зориулалт" гэсэн ойлголт энд тоглоомын амь болов.
python
# Чулуу-цаас-хайч — сүүлчийн хамтын барилга
import random
SONGOLTUUD = ["чулуу", "цаас", "хайч"]
def uzegdliin_yalagch(hun, computer):
if hun == computer:
return "тэнцээ"
if hun == "чулуу" and computer == "хайч":
return "хүн"
if hun == "цаас" and computer == "чулуу":
return "хүн"
if hun == "хайч" and computer == "цаас":
return "хүн"
return "компьютер"
onoo = {"хүн": 0, "компьютер": 0}
print("--- ЧУЛУУ - ЦААС - ХАЙЧ ---")
print("Түрүүлж 3 хожсон нь аварга болно!")
while onoo["хүн"] < 3 and onoo["компьютер"] < 3:
hun = input("\nСонголтоо бичээрэй (чулуу/цаас/хайч): ").strip().lower()
if hun not in SONGOLTUUD:
print("Гурвын нэгийг л бичээрэй!")
continue
computer = random.choice(SONGOLTUUD)
print(f"Компьютер: {computer}")
yalagch = uzegdliin_yalagch(hun, computer)
if yalagch == "тэнцээ":
print("Тэнцлээ!")
else:
onoo[yalagch] = onoo[yalagch] + 1
print(f"Энэ үзэгдлийг {yalagch} авлаа")
print(f"Оноо — Та: {onoo['хүн']}, Компьютер: {onoo['компьютер']}")
if onoo["хүн"] == 3:
print("\nБаяр хүргэе — ТА АВАРГА БОЛЛОО!")
else:
print("\nКомпьютер яллаа — дараа дахин үзье!")Дөчин мөр — тэгээд "он цагийн" сүүлчийн уншлагыг хийе: import ба тогтмол (Бүлэг 13, 12), return-цуврал function (8), толь-оноо (10), угаалгатай input (9, 5), not in + continue (10, 7), нөхцөлт while (7), if/elif-ийн шүүлтүүд (6), f-string-үүд (9), print (3) — арван хоёр бүлэг дөчин мөрөнд: энэ файл бол таны диплом юм — гэрчилгээнээс ч илүү үнэн диплом: учир нь үүнийг цээжилж биш ойлгож бичсэн гэдгээ та мэднэ.
Нэг: Тэмцээний түүх. Үзэгдэл бүрийг list-д (tuuh.append(f"{hun} vs {computer} — {yalagch}")) цуглуулаад төгсгөлд нь бүгдийг хэвлэ — "тэмцээний тойм" гарна: цуглуулагч хэв маягийн салхин дасгал.
Хоёр: Оноог файлд — "насан туршийн рекорд". Хийх ажлын жагсаалтын unshih/hadgalah санааг зөө: тэмцээн болгоны дараа ялалт/ялагдлын нийлбэрийг rekord.txt-д хадгалж, программ нээгдэхэд "Таны түүх: 5 ялалт, 2 ялагдал" гэж мэндчил — Бүлэг 12-ын "мартдаггүй" чадвар тоглоомд.
Гурав: Хамгийн том нь — object-оор дахин төрөлт. Toglogch class зохио (ner, onoo шинжтэй, onoo_nemeh method-той) — хоёр Toglogch object (та ба компьютер) үүсгээд толины оронд тэднийг хэрэглэ: Бүлэг 14-ийн бүх мэдлэгээр өөрийн бэлэн программыг дахин архитектурлах — энэ бол энэ сургалтын хамгийн ахисан түвшний дасгал: амжвал та "Түвшин 4-ийг эзэмшсэн" гэдгээ өөртөө баталлаа гэсэн үг.
Сүүлчийн хамтын барилга баригдав: random.choice-той өрсөлдөгч, return-цуврал шүүгч function, толин оноо, нөхцөлт while — шинэ мэдлэг тэг, эзэмшсэн бүхэн нэг тавцанд.
Хоёр инженерийн шийдвэр тод үлдэг: гардуулсан string толины key болж if-салааг устгасан нь (өгөгдлийн бүтэц кодыг агшаадаг); тэмцээний хил while-ын толгойд багтсан тул break хэрэггүй болсон нь.
Function-ээ угсрахаасаа өмнө тусад нь турших дадал — эд анги шалгаад барилга барих.
Орцын гурван хамгаалалт нэг мөрөнд: strip + lower + not in/continue.
Энэ файл бол таны жинхэнэ диплом: арван хоёр бүлгийн мэдлэг дөчин мөрөнд — цээжилж биш ойлгож бичигдсэн.
Барилгын малгайгаа тайлах цаг боллоо — дараагийн хичээлд бид багажаа тавьж, газрын зураг дэлгэнэ: "Дараагийн алхмууд" — вэб хөгжүүлэлт, дата шинжлэх ухаан, автоматжуулалт, хиймэл оюун гэж юу болох, таны одоогийн суурь тэдгээрийн алинд нь хүрэлцэх вэ гэсэн шударга яриа: Python-ы ертөнц таны өмнө хаашаа салаалж байгааг харна.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.