Pythonda qanday viktorina o'tkazish kerak (rasmlar bilan)

Mundarija:

Pythonda qanday viktorina o'tkazish kerak (rasmlar bilan)
Pythonda qanday viktorina o'tkazish kerak (rasmlar bilan)

Video: Pythonda qanday viktorina o'tkazish kerak (rasmlar bilan)

Video: Pythonda qanday viktorina o'tkazish kerak (rasmlar bilan)
Video: O'yin qilish uchun grafikni tayyorlash - Logo dizayn - Ўйин қилиш учун графикни тайёрлаш 2024, May
Anonim

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

947361 1
947361 1

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.

947361 2
947361 2

Qadam 2. Matn muharririda yoki Python IDE -da yangi fayl oching

Unga.py bilan tugaydigan tavsiflovchi nom bering.

947361 3
947361 3

Qadam 3. Tasodifiy kutubxonani import qiling

Mumkin bo'lgan javoblarni tasodifiy tartibga solish uchun sizga kerak bo'ladi.

947361 4
947361 4

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

947361 5
947361 5

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 "])]

947361 6
947361 6

6 -qadam. Qancha javoblar to'g'riligini hisoblaydigan o'zgaruvchini qo'shing

Boshida nolga qo'ying. Chiziq qo'shing:

corrCount = 0

947361 7
947361 7

Qadam 7. QA ro'yxatini aralashtiring

Bu sizning savollaringizni tasodifiy tartibda ko'rsatadi. Bu quyidagi funktsiya yordamida amalga oshiriladi:

tasodifiy.shuffle (qaList)

947361 8
947361 8

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:

947361 9
947361 9

9 -qadam. Har bir savolga javob bering

Loop ifodasidan keyin qatorni yozing:

chop etish (qaItem.question)

947361 10
947361 10

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

947361 11
947361 11

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 ()

947361 12
947361 12

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 ("")

947361 13
947361 13

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.")

947361 14
947361 14

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. ")

947361 15
947361 15

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.

Tavsiya: