Agar siz Python-ni o'rganmoqchi bo'lsangiz, matnga asoslangan oddiy o'yinlardan boshlaganingiz ma'qul. Ushbu maqola sizga viktorina o'yinini qanday qilishni ko'rsatib beradi.
Qadamlar
Qadam 1. Agar siz hali o'rnatmagan bo'lsangiz, Python -ni o'rnating
Python -ning ikkita asosiy versiyasi bor: Python 2 va Python 3. Ular bir -birining o'rnini bosa olmaydi va Python 2 -ni qo'llab -quvvatlash 2020 yilda tugaydi, shuning uchun bu maqola Python 3 -ni o'rnatgan deb taxmin qilinadi.
Qadam 2. Matn muharririda yoki Python IDE -da yangi fayl oching
Unga.py bilan tugaydigan tavsiflovchi nom bering.
Qadam 3. Tasodifiy kutubxonani import qiling
Mumkin bo'lgan javoblarni tasodifiy tartibga solish uchun sizga kerak bo'ladi.
Qadam 4. "QA" sinfini aniqlang
"QA" savol va to'g'ri javobdan va boshqa mumkin bo'lgan javoblar ro'yxatidan iborat bo'ladi. _Init _ () funktsiyasi QA () funktsiyali yangi QA ob'ektini yaratganingizda chaqiriladi, uning argumentlari tegishli atributga o'tkaziladi. Turi:
sinf QA: def _init _ (o'z -o'zidan, savol, to'g'ri javob, boshqa javoblar): o'z -o'zidan savol = savol o'zini.corrAnsw = to'g'ri javobni o'z -o'zidan. boshqaAnsw = boshqa javoblar
5 -qadam. QAlar ro'yxatini tuzing
Ba'zi to'g'ri va noto'g'ri javoblar bilan ba'zi savollarni o'ylab ko'ring. Har biridan QA ob'ektlarini yarating va ularni ro'yxatga kiriting. Ro'yxat juda uzun bo'lgani uchun, uni yaxshiroq o'qish uchun bir nechta satrlarni kesib o'tishingiz mumkin. Bularning barchasi quyidagi kod bilan amalga oshiriladi (sizning matningiz boshqacha bo'lishi mumkin):
qaList = [QA ("Minsk qayerda?", "Belorussiyada", ["Rossiyada", "bunday shahar yo'q"])), QA ("Avstraliyaning poytaxti nima?", "Kanberra"), ["Sidney", "Nyu -York", "Avstraliya yo'q"])), QA ("Quyidagilardan qaysi biri Yerda yo'q?", "Tinchlik dengizi", ["O'rta er dengizi", "Boltiq dengizi") "," Shimoliy dengiz "]), QA (" Quyidagilardan qaysi biri qit'a emas? "," Arktika ", [" Antarktida "," Amerika "])), QA (" Quyidagilardan qaysi biri Afrika davlati emas? ? "," Malayziya ", [" Madagaskar "," Jibuti "," Janubiy Afrika "," Zimbabve "])]
6 -qadam. Qancha javoblar to'g'riligini hisoblaydigan o'zgaruvchini qo'shing
Boshida nolga qo'ying. Chiziq qo'shing:
corrCount = 0
Qadam 7. QA ro'yxatini aralashtiring
Bu sizning savollaringizni tasodifiy tartibda ko'rsatadi. Bu quyidagi funktsiya yordamida amalga oshiriladi:
tasodifiy.shuffle (qaList)
8 -qadam
Dastur ro'yxatning har bir bandini ko'rib chiqishi va u bilan biror narsa qilishi kerak. Ushbu ibora bilan shunday pastadir yarating:
qaListdagi qaItem uchun:
9 -qadam. Har bir savolga javob bering
Loop ifodasidan keyin qatorni yozing:
chop etish (qaItem.question)
10 -qadam. Barcha mumkin bo'lgan javoblarni chiqaring
To'g'ri javob har doim ham bir xil holatda bo'lmasligi uchun ular tasodifiy tartibda paydo bo'lishi kerak. Bundan tashqari, foydalanuvchi to'liq javobni qaytadan kiritmasligi uchun ularning oldiga raqam qo'yilishi kerak. Quyidagi kod buni bajaradi:
print ("Mumkin bo'lgan javoblar:") iloji = qaItem.otherAnsw + [qaItem.corrAnsw] # kvadrat qavs to'g'ri javobni boshqa ro'yxat bilan tasodifiy ro'yxatga aylantiradi tasodifiy. while count <len (iloji): print (str (count + 1) + ":" + iloji [count]) count + = 1
Qadam 11. Foydalanuvchining ma'lumotlarini oling
Birinchidan, foydalanuvchiga o'z raqamlarini kiritish kerakligini ayting. Keyin, foydalanuvchi kiritgan narsa haqiqatan ham javobga mos keladimi -yo'qligini tekshiring. Agar bunday bo'lmasa, foydalanuvchiga yana ayting. Ushbu koddan foydalaning (chiqish uchun yaratgan vaqt davridan tashqarida):
print ("Iltimos, javobingizning raqamini kiriting:") userAnsw = input () userAnsw.isdigit () emas, balki: print ("Bu raqam emas edi. Iltimos, javobingizning raqamini kiriting:") userAnsw = input () userAnsw = int (userAnsw) emas, balki (userAnsw> 0 va userAnsw <= len (mumkin)): print ("Bu raqam hech qanday javobga to'g'ri kelmaydi. Iltimos, javobingizning raqamini kiriting:") userAnsw = input ()
12 -qadam. Foydalanuvchining javobi to'g'riligini tekshiring
Buning uchun foydalanuvchi raqam kiritgan javob matnini oling va uni to'g'ri javob matni bilan solishtiring. Agar ular bir xil bo'lsa, foydalanuvchining javobi to'g'ri va o'zgarmaydigan corrCount 1 ga ko'paytirilishi kerak, aks holda bu noto'g'ri va foydalanuvchiga to'g'ri javobni aytish kerak. Nihoyat, keyingi savolga bo'sh joy qo'shish uchun bo'sh qatorni chop eting. Quyidagi kodni kiriting:
iloji bo'lsa [userAnsw-1] == qaItem.corrAnsw: chop etish ("Sizning javobingiz to'g'ri edi.") corrCount + = 1 boshqa: chop etish ("Sizning javobingiz noto'g'ri edi.") chop etish ("To'g'ri javob:" + qaItem. corrAnsw) chop etish ("")
13 -qadam Xulosa chiqaring
Oxir -oqibat, foydalanuvchi, ehtimol, qancha savollar to'g'ri berilganligini bilishni xohlaydi. Quyidagi ifodani for-loopdan tashqari qo'shib, ularga ayting:
chop etish ("Siz javob berdingiz" + str (corrCount) + "of" + str (len (qaList)) + "savollarga to'g'ri.")
Qadam 14. Kodingizni tekshiring
Chiziqqa alohida e'tibor bering. Sizning to'liq kodingiz hozir shunday bo'lishi kerak:
tasodifiy sinf QAni import qilish: def _init _ (o'z -o'zidan, savol, to'g'ri Javob, boshqa Javoblar): self.question = question self.corrAnsw = to'g'riAnswer self.otherAnsw = otherAnswers qaList = [QA ("Minsk qayerda?", "Belarusiyada"), ["Rossiyada", "bunday shahar yo'q"])), QA ("Avstraliyaning poytaxti nima?", "Kanberra", ["Sidney", "Nyu -York", "Avstraliya yo'q")]), QA ("Quyidagilardan qaysi biri Yerda yo'q?", "Tinchlik dengizi", ["O'rta er dengizi", "Boltiq dengizi", "Shimoliy dengiz"]), QA ("Quyidagilardan qaysi biri emas? qit'a? "," Arktika ", [" Antarktida "," Amerika "])), QA (" Quyidagilardan qaysi biri Afrika davlati emas? "," Malayziya ", [" Madagaskar "," Jibuti "," Janubiy ") QaListdagi qaItem uchun Afrika "," Zimbabve "])] corrCount = 0 random.shuffle (qaList): print (qaItem.question) print (" Mumkin javoblar: ") mumkin = qaItem.otherAnsw + [qaItem.corrAnsw] # kvadrat qavslar to'g'ri javobni boshqa ro'yxat bilan tasodifiy ro'yxatga aylantiradi.shuffle (iloji) count = 0 # list indekslari 0 i n python while <len (iloji): print (str (count + 1) + ":" + iloji [count]) count + = 1 print ("Iltimos, javobingizning raqamini kiriting:") userAnsw = input () while userAnsw.isdigit () emas: print ("Bu raqam emas edi. Iltimos, javobingizning raqamini kiriting: ") userAnsw = input () userAnsw = int (userAnsw) emas, balki (userAnsw> 0 va userAnsw <= len (mumkin)): print (" Bu raqam hech qanday javobga to'g'ri kelmaydi. Iltimos, javob raqamingizni kiriting: ") userAnsw = input () iloji bo'lsa [userAnsw-1] == qaItem.corrAnsw: print (" Sizning javobingiz to'g'ri edi. ") CorrCount += 1 boshqa: chop eting (" Sizning javobingiz noto'g'ri. ") chop etish (" To'g'ri javob edi: " + qaItem.corrAnsw) print (" ") print (" Siz javob berdingiz " + str (corrCount) +" of " + str (len (qaList)) +" savollariga to'g'ri. ")
15 -qadam Kodni ishga tushiring
Agar siz IDE dan foydalanayotgan bo'lsangiz, "Ishga tushirish" belgisini yoki menyu bandini bosing. Agar siz matn muharriridan foydalansangiz, dasturni saqlang, tahrirlovchini yoping va Python bilan dasturingizni oching.
Maslahatlar
- To'g'ri chiziq qo'yishga e'tibor bering. Funktsiya yoki sinf ta'rifi ichidagi kod, pastadir ichidagi kod singari. Noto'g'ri chiziqli Python dasturi ishlamaydi.
- Agar siz o'yinni to'xtatmoqchi bo'lsangiz va tugatmasangiz, Ctrl+C tugmalar birikmasini bosing.
- Agar siz har bir input () chaqiruvini raw_input () chaqiruvi bilan almashtirsangiz, bu dastur Python 2 da ishlaydi, lekin Python 3 da ishlashni to'xtatadi.