Ачааллж байна...
Энэ хичээл өмнөх бүх хичээлээс өөр төрлийнх. Өнөөдөр бид шинэ ойлголт үзэхгүй — оронд нь та бид хоёр хамтдаа нэг жижиг тоглоом бүтээнэ. Ийм хичээлийг бид "хамтдаа бүтээх" хичээл гэж нэрлэх бөгөөд Түвшин бүрийн төгсгөлд нэг ийм хичээл таныг угтах болно. Дүрэм нь энгийн: би мөр бүрийг тайлбарлаж бичнэ, та дагаад бичиж, заасан газруудад ажиллуулж шалгана. Энэ бол даалгавар биш — шалгалт ч биш, бие даалт ч биш: уншаад л дагахад хангалттай, бүр зөвхөн уншаад өнгөрсөн ч хичээлийн үнэ цэн буурахгүй. Гэхдээ нэг зүйлийг хэлье: өөрийн гараар бичээд, дундын шалгалтууд дээр программаа өсөж томорч байгааг нүдээрээ харах нь программчлалын хамгийн сайхан мэдрэмжүүдийн нэг тул боломжтой бол VS Code-оо нээгээд хамт явахыг зөвлөе.
Бүтээх зүйл маань: Тоо таах тоглоом. Дүрэм нь: программ нэг нууц тоо "бодож" байна, тоглогч нэг удаа таана; программ таамгийг нууц тоотой харьцуулаад "их байна", "бага байна", "оноov!" гэсэн гурвын аль нэгээр хариулна. Энэ тоглоомыг сонгосон учир нь: тэр таны одоо эзэмшсэн эд ангиудаас яг таг угсрагддаг — variable (нууц тоог хадгална), input + int() (таамгийг авна), if/elif/else + харьцуулах операторууд (шүүж хариулна). Өөрөөр хэлбэл энэ тоглоом бол Түвшин 1-ийн тань толь юм.
Эхлэхээсээ өмнө хоёр шударга тохиролцоо хийе — учир нь та энэ тоглоомын хоёр "сул талыг" барилгын явцад өөрөө анзаарах болно. Нэг: тоглогч ганцхан удаа таана — "дахиад тааж үзье" гэсэн боломж байхгүй. Тоглоомыг дахин дахин таалгадаг болгоход давталт хэрэгтэй бөгөөд давталт бол яг дараагийн Түвшний, Бүлэг 7-гийн гол сэдэв: тэнд бид энэ тоглоомдоо эргэж ирж, түүнийг олон оролдлоготой болгож сайжруулна. Хоёр: нууц тоог программ өөрөө "санамсаргүй" сонгодоггүй — бид кодондоо шууд бичиж өгнө, тиймээс кодоо харсан хүн хариуг мэдчихнэ. Компьютерээр жинхэнэ санамсаргүй тоо сонгуулдаг багаж (random) Бүлэг 13-т бий — тэнд бид дахин нэг удаа энэ тоглоомдоо эргэж ирж, түүнийг жинхэнэ утгаар нь "таагдашгүй" болгоно. Өнөөдрийн хувилбар бол тэр хоёр сайжруулалтын суурь давхар нь — суурь нь бат байх тусам дээр нь барихад хялбар байх болно.
Юуны өмнө VS Code дээрээ python-hicheel хавтсандаа шинэ файл үүсгэе: toglooml.py гэдэг нэрээр... үгүй ээ — нэрийн хичээлийн дадлаа баримталъя: too_taah.py гэсэн, юу болохоо өөрөө хэлдэг нэр өгье. Эхний гурван мөрөө бичье:
python
# Тоо таах тоглоом — нэг удаагийн хувилбар
nuuts_too = 7
print("Би 1-ээс 10-ын хооронд нэг тоо бодлоо")Мөр бүрийг ярья. Эхний мөр — comment: программын "нүүр хуудас", юу болохыг нь хэлээд өгч байна. Хоёр дахь мөр — тоглоомын зүрх: nuuts_too хайрцганд 7-г хадгаллаа. Яагаад 7? Ямар ч учиргүй — та өөрийн дуртай тоог (1-10 хооронд) тавьж болно: энэ бол таны тоглоомын таны нууц. Гурав дахь мөр — тоглогчид өгөх "тайзны зарлал": тоглоом юу болж байгааг хэлж байна. Анзаараарай — бид тоглогчид 1-ээс 10 гэсэн хүрээг зарлаж өгч байгаа нь тоглоомын шударга байдал: хүрээгүй таалт бол таалт биш, төөрөлдөл.
Ажиллуулж шалгая. Run (▷) товчоо дараарай. Terminal-д:
Би 1-ээс 10-ын хооронд нэг тоо бодлооГанцхан мөр — гэхдээ программ маань "амьд": нууц тоо чимээгүйхэн хайрцгандаа хадгалагдаад (хадгалалт дэлгэцэнд юу ч гаргадаггүйг та Бүлэг 4-өөс мэднэ), зарлал хэвлэгдлээ. Суурь тавигдав.
Одоо тоглоомоо харилцаатай болгоё — Бүлэг 5-ын төгсгөлийн чадвараа ажилд оруулна. Файлынхаа төгсгөлд (print мөрийн доор) нэмж бичье:
python
taamag = int(input("Таамгаа хэлээрэй: "))Энэ мөрийг та одоо задлан уншиж чадна — дотроос гадагш: input() тоглогчоос асууж, бичснийг нь string-ээр авчирна; int() тэр дугтуйг онгойлгож жинхэнэ тоо болгоно; = нь тоог taamag хайрцганд хадгална. Яагаад int() заавал хэрэгтэйг санаж байна уу? Учир нь дараагийн алхамд бид taamag-ийг nuuts_too-той харьцуулах гэж байгаа — тэгэхэд "7" гэсэн string 7 гэсэн int-тэй жинлүүр дээр хэзээ ч тэнцэхгүй (өмнөх хичээлийн "чимээгүй, үргэлж False" урхи) тул дугтуйг эртхэн, орох хаалган дээр нь онгойлгож байгаа юм.
Ажиллуулж шалгая. Run дараад, асуултад ямар нэг тоо (жишээ нь 5) бичээд Enter дараарай:
Би 1-ээс 10-ын хооронд нэг тоо бодлоо
Таамгаа хэлээрэй: 5Программ таамгийг авав... тэгээд юу ч хэлэлгүй дуусчихлаа. Зөв — бид хариулт өгдөг хэсгийг нь хараахан бариагүй байна: taamag хайрцганд 5 орсон ч түүнийг хэрэглэгч нь одоохондоо алга. Программ дутуу үедээ ийм "хагас дутуу" ажиллаж харагдах нь барилгын явцын хэвийн төрх — харин алдааны мэдэгдэлгүй гүйж байгаа нь суурь маань зөв гэсэн дохио.
Одоо гол хэсэг: таамгийг нууцтай тулгаж, гурван боломжит хариултын аль нэгийг өгөх. Гурван боломж — гэдэг чинь юу вэ? if/elif/else! Файлын төгсгөлд нэмье:
python
if taamag == nuuts_too:
print("Оноов! Та мундаг таагч байна")
elif taamag > nuuts_too:
print("Их байна — миний тоо үүнээс бага")
else:
print("Бага байна — миний тоо үүнээс их")Бүтцээ ярья. Гурван боломжит харьцаа бий: тэнцүү, их, бага — өмнөх хичээлүүдийн "гурван зам, нэг уулзвар" яг энэ. Эхний самбар — taamag == nuuts_too: оносон тохиолдол. Яагаад оносныг эхэнд шалгаж байгаа юм? Зарчмын хувьд энэ гурван нөхцөл харилцан үл давхцах (нэг л нь True гарна) тул дараалал нь энэ удаад ажиллагаанд нөлөөгүй — гэхдээ уншигчид "хамгийн чухал тохиолдол нь юу вэ" гэдгийг эхний мөр нь хэлдэг байх нь кодын сайхан ёс: тоглоомын гол үйл явдал бол оналт. Хоёр дахь самбар — elif taamag > nuuts_too: таамаг нууцаас их. Хариултын үгийг ажиглаарай: "Их байна — миний тоо үүнээс бага" — бид тоглогчид зөвхөн "буруу" гэж хэлэлгүй, аль зүгт буруу байгааг нь хэлж байна: энэ бол сайн тоглоомын дизайн бөгөөд Бүлэг 7-д олон оролдлоготой болохоор энэ чиглүүлэг жинхэнэ утгаа олно (тоглогч таамгаа шат шатаар нарийсгах боломжтой болно). else — үлдсэн ганц боломж: бага. Их ч биш, тэнцүү ч биш бол гарцаагүй бага — else-ийн "нөхцөлгүй мэргэн ухаан" энд төгс тохирно.
Ажиллуулж шалгая — гурван удаа. Энэ бол чухал шалгалт: гурван замтай программыг гурван зам тус бүрээр нь явуулж үзэх ёстой. Run дараад 7 (өөрийн нууц тоогоо) гэж хариулаарай — "Оноов!". Дахин Run дараад 9 — "Их байна". Дахин Run, 3 — "Бага байна":
Би 1-ээс 10-ын хооронд нэг тоо бодлоо
Таамгаа хэлээрэй: 3
Бага байна — миний тоо үүнээс ихГурвуулаа зөв ажиллаж байвал — тоглоомын тархи бэлэн. Нэг зам нь буруу хариулж байвал тэр салааныхаа харьцуулалтын зүгийг шалгаарай (> ба < андуурагдсан байх нь энэ бүтцийн хамгийн магадлалт зөрөө).
Тоглоом ажиллаж байна, гэхдээ жаахан "тас" дуусаж байна. Ямар ч үр дүнд тоглогчийг үддэг нэг мөр төгсгөлд нь нэмье — шигдэлтгүй, үндсэн зам дээр:
python
print("Тоглосонд баярлалаа!")Энэ мөр яагаад шигдээгүй байх ёстойг та тайлбарлаж чадна: шигдсэн бол else-ийн биед орж зөвхөн "бага" замд л хэвлэгдэнэ; шигдээгүй үндсэн зам дээр байвал гурван салааны аль нь ч биелсэн хойно, бүх зам нийлдэг цэг дээр үргэлж хэвлэгдэнэ. Догол мөр бол харьяалал гэдгийг энэ ганц мөр дахин нэг харууллаа.
Ингээд бүх алхмаа нэгтгэвэл — таны анхны бүрэн тоглоом:
python
# Тоо таах тоглоом — нэг удаагийн хувилбар
nuuts_too = 7
print("Би 1-ээс 10-ын хооронд нэг тоо бодлоо")
taamag = int(input("Таамгаа хэлээрэй: "))
if taamag == nuuts_too:
print("Оноов! Та мундаг таагч байна")
elif taamag > nuuts_too:
print("Их байна — миний тоо үүнээс бага")
else:
print("Бага байна — миний тоо үүнээс их")
print("Тоглосонд баярлалаа!")Арван хоёрхон мөр — гэхдээ дотор нь Түвшин 1-ийн бүх том ойлголт ажиллаж байна: comment (Бүлэг 3), variable ба хадгалалт (Бүлэг 4), input, int(), string ба int-ийн ялгаа (Бүлэг 5), if/elif/else, харьцуулах операторууд, догол мөр (Бүлэг 6). Хоёр бүлгийн өмнө таны бичиж чадах хамгийн том зүйл print("Сайн байна уу") байсныг эргэн бодоод үзээрэй. Энэ программыг гэр бүлийнхээ хэн нэгэнд тоглуулж үзээрэй — өөрийн бичсэн программыг өөр хүн хэрэглэж байгааг харах бол энэ замын хамгийн анхны, хамгийн жинхэнэ шагналуудын нэг юм (нууц тоогоо тэдэнд бүү үзүүлээрэй — кодыг далдлаад terminal-ыг нь л үлдээхэд болно).
Дараах гурван санаа бол бүрэн сайн дурын — хийгээгүй тохиолдолд дараагийн ямар ч хичээлд ямар ч саад гарахгүй. Сониуч хүнд л зориулав.
Нэг: Хүрээний шалгалт. Тоглогч 25 гэж хариулбал одоогийн программ "Их байна" л гэнэ — гэхдээ 25 бол хүрээнээс гарсан, "тоглоомын бус" таамаг. if/elif гинжийнхээ хамгийн эхэнд (яагаад эхэнд нь вэ гэдгийг elif хичээлийн "дараалал" сургамжаас бодоорой) шинэ самбар нэмж үзээрэй: if taamag < 1 or taamag > 10: гээд "Хүрээнээс гарлаа — 1-ээс 10-ын хооронд таагаарай" гэсэн хариу өгвөл тоглоом илүү "мэдрэмжтэй" болно. Энд өмнөх хичээлийн or яг зориулалтаараа (мужийн гадна — or!) ажиллана.
Хоёр: Ойрхон таасныг магтах. "Их байна" гэж хэлэхийн өмнө хэр их байгааг шалгаж болно: elif taamag nuuts_too + 1 or taamag nuuts_too - 1: гэсэн самбар нэмээд "Маш ойрхон байна!" гэж урамшуулбал тоглоом "халуун-хүйтэн" мэдрэмжтэй болно. (Энэ самбар "тэнцүү" самбарын дараа, "их/бага" самбаруудын өмнө зогсох ёстой — учрыг нь дарааллын сургамжаасаа гаргаж бодоорой.)
Гурав: Тоглогчийн нэрээр дуудах. Тоглоомын эхэнд ner = input("Таны нэр хэн бэ? ") гэж нэмээд, хариултуудаа "Оноов, " + ner + "!" маягаар хувийн шинжтэй болгож үзээрэй — Бүлэг 5-ын залгалт энд гоё ажиллана.
Та анхны бүрэн тоглоомоо барилаа: нууц тоо (variable), таамаг авах (input + int), шүүж хариулах (if/elif/else + харьцуулалт), нэгдсэн үдэлт (үндсэн замын print).
Гурван замтай программыг гурван зам тус бүрээр нь ажиллуулж шалгах нь барилгын журам.
Чиглүүлэгтэй хариулт ("их/бага байна") бол тоглоомын сайн дизайн — дараагийн сайжруулалтуудын суурь.
Энэ тоглоом хоёр амлагдсан сайжруулалтыг хүлээж байна: Бүлэг 7-д давталтаар олон оролдлоготой болно, Бүлэг 13-т random-оор жинхэнэ таагдашгүй болно.
Хамтдаа бүтээх хичээлүүд даалгавар биш: дагаад барьсан ч, зөвхөн уншсан ч — хоёулаа зөв зам.
Ингээд Түвшин 1: Үндэс бүрэн өндөрлөлөө — баяр хүргэе! Та мэдээлэл хадгалдаг, хэрэглэгчтэй ярилцдаг, шийдвэр гаргадаг программ бичдэг боллоо. Дараагийн Түвшин "Барилга материал" гэсэн нэртэй бөгөөд давталтаас (Бүлэг 7) эхэлнэ: программаар нэг ажлыг зуу, мянга дахин хийлгэдэг чадвар — таны тоо таах тоглоомыг "дахин таа" гэж гуйдаг болгох тэр л түлхүүр тэнд бий.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.