Pythonдо викторинаны кантип жасоо керек (сүрөттөрү менен)

Мазмуну:

Pythonдо викторинаны кантип жасоо керек (сүрөттөрү менен)
Pythonдо викторинаны кантип жасоо керек (сүрөттөрү менен)

Video: Pythonдо викторинаны кантип жасоо керек (сүрөттөрү менен)

Video: Pythonдо викторинаны кантип жасоо керек (сүрөттөрү менен)
Video: Кантип Windows 10 орнотуу керек. Башынан аягына чейин. 2024, Апрель
Anonim

Эгерде сиз Python үйрөнгүңүз келсе, анда жөнөкөй текстке негизделген оюндарды баштоо жакшы. Бул макалада викториналык оюнду кантип жасоо керектиги көрсөтүлөт.

Кадамдар

947361 1
947361 1

Кадам 1. Эгерде сиз азырынча жок болсоңуз, Python орнотуңуз

Pythonдун эки чоң версиясы бар: Python 2 жана Python 3. Алар бири -бирин алмаштырбайт жана Python 2ди колдоо 2020 -жылы бүтөт, андыктан бул макала Python 3тү орнотот деп болжолдонот.

947361 2
947361 2

Кадам 2. Текст редакторунда же Python IDEде жаңы файлды ачыңыз

Ага.py менен аяктаган сүрөттөөчү ат коюңуз.

947361 3
947361 3

Кадам 3. Туш келди китепкананы импорттоо

Мүмкүн болгон жоопторду туш келди иретке келтирүү үчүн сизге керек болот.

947361 4
947361 4

4 -кадам. "QA" классын аныктаңыз

"QA" суроо жана туура жооптон жана башка мүмкүн болгон жооптордун тизмесинен турат. _Init _ () функциясы сиз QA () функциясы менен жаңы QA объектисин түзгөн сайын чакырылат, анын аргументтери тиешелүү атрибутка өткөрүлүп берилет. Түрү:

класс QA: def _init _ (өзүн -өзү, суроо, туура Жооп, башка Жооптор): өзүн -өзү суроо = суроо self.corrAnsw = туура Жоопту өзүнчө.

947361 5
947361 5

Кадам 5. СБлердин тизмесин түзүңүз

Кээ бир суроолорду бир туура жана кээ бир туура эмес жооптор менен ойлонуп көрүңүз. Ар биринен QA объекттерин түзүңүз жана аларды тизмеге киргизиңиз. Тизме өтө узун болгондуктан, аны жакшыраак окуу үчүн бир нече сызыктан кесип койсоңуз болот. Мунун баары төмөнкү код менен жасалат (сиздин текст башкача болушу мүмкүн):

qaList = [QA ("Минск кайда?", "Беларуста", ["Россияда", "мындай шаар жок"]), QA ("Австралиянын борбору кайсы?", "Канберра", ["Сидней", "Нью -Йорк", "Австралия жок"])), QA ("Төмөнкүлөрдүн кайсынысы Жерде жок?", "Тынчтык деңизи", ["Жер ортолук деңизи", "Балтика деңизи" "," Түндүк деңиз "]), QA (" Төмөнкүлөрдүн кайсынысы континент эмес? "," Арктика ", [" Антарктида "," Америка "])), QA (" Төмөнкүлөрдүн кайсынысы Африка өлкөсү эмес? ? "," Малайзия ", [" Мадагаскар "," Джибути "," ЮАР "," Зимбабве "])]

947361 6
947361 6

Кадам 6. Канча жооп туура болгонун эсептеген өзгөрмөнү кошуңуз

Башында нөлгө коюңуз. Сапты кошуу:

corrCount = 0

947361 7
947361 7

Кадам 7. QA тизмесин аралаштырыңыз

Бул сиздин суроолорду туш келди тартипте көрсөтөт. Бул төмөнкү функция менен жасалат:

кокус.катышуу (qaList)

947361 8
947361 8

8 -кадам. Укурук жасаңыз

Программа тизменин ар бир пунктун карап чыгып, аны менен бир нерсе кылышы керек. Бул сөз айкашы менен ушундай цикл түзүңүз:

qaListдеги qaItem үчүн:

947361 9
947361 9

Step 9. Ар бир суроону чыгаруу

Цикл туюнтмасынан кийин, сапты жазыңыз:

басып чыгаруу (qaItem.question)

947361 10
947361 10

10 -кадам. Бардык мүмкүн болгон жоопторду чыгарыңыз

Туура жооп дайыма бир позицияда болбошу үчүн алар туш келди тартипте пайда болушу керек. Ошондой эле, колдонуучунун жоопту толугу менен кайра киргизишине жол бербөө үчүн, алардын алдына бир сан кириши керек. Төмөнкү код муну аткарат:

print ("Мүмкүн болгон жооптор:") мүмкүн = qaItem.otherAnsw + [qaItem.corrAnsw] # чарчы кашаа туура жоопту башка тизме менен бириктирүү үчүн тизмеге айлантат random.shuffle (мүмкүн) count = 0 # тизме индекстери питондо 0дөн башталат ал эми <len (мүмкүн): басып чыгаруу (str (count + 1) + ":" + мүмкүн [count]) count + = 1

947361 11
947361 11

Кадам 11. Колдонуучунун киргизүүсүн алыңыз

Биринчиден, колдонуучуга алардын санын киргизиши керектигин айт. Андан кийин, колдонуучунун киргизгени чынында жоопко дал келген сан экендигин текшериңиз. Эгер андай болбосо, колдонуучуга кайра айт. Бул кодду колдонуңуз (чыгаруу үчүн жараткан while циклинин сыртында):

print ("Сураныч, жообуңуздун номерин киргизиңиз:") userAnsw = input () while not userAnsw.isdigit (): print ("Бул сан эмес болчу. Сураныч, жообуңуздун номерин киргизиңиз:") userAnsw = input () userAnsw = int (userAnsw) эмес, ал эми (userAnsw> 0 жана userAnsw <= len (мүмкүн)): print ("Бул сан эч кандай жоопко туура келбейт. Жообуңуздун номерин киргизиңиз:") userAnsw = input ()

947361 12
947361 12

Кадам 12. Колдонуучунун жообу туура болгонун текшериңиз

Бул үчүн, колдонуучу номер киргизген жооптун текстин алып, туура жооптун тексти менен салыштырыңыз. Эгерде алар бирдей болсо, колдонуучунун жообу туура болгон жана corrCount өзгөрмөсү 1ге көбөйтүлүшү керек. Башкача айтканда, бул туура эмес жана колдонуучуга туура жоопту айтыш керек. Акырында, кийинки суроого боштук кошуу үчүн бош сапты басып чыгарыңыз. Төмөнкү кодду киргизиңиз:

мүмкүн болсо [userAnsw-1] == qaItem.corrAnsw: print ("Сиздин жообуңуз туура болду.") corrCount + = 1 башка: басып чыгаруу ("Сиздин жообуңуз туура эмес.") басып чыгаруу ("Туура жооп:" + qaItem. corrAnsw) басып чыгаруу ("")

947361 13
947361 13

13 -кадам. Корутунду чыгаруу

Акыр -аягы, колдонуучу, балким, канча суроого туура келгенин билгиси келет. Төмөнкү сөз айкашын for-loop сыртына кошуп айтып бериңиз:

басып чыгаруу ("Сиз жооп бердиңиз" + str (corrCount) + "of" + str (len (qaList)) + "суроолорго туура.")

947361 14
947361 14

Кадам 14. Кодуңузду текшериңиз

Чегинүүгө өзгөчө көңүл буруңуз. Сиздин толук кодуңуз азыр ушундай болушу керек:

кокустук класс QA импорттоо: def _init _ (өзүн, суроо, туураЖооп, башкаЖооптор): self.question = суроо self.corrAnsw = туураЖооп self.otherAnsw = otherAnswers qaList = [QA ("Минск кайда?", "Беларуста"), ["Россияда", "мындай шаар жок"])), QA ("Австралиянын борбору кайсы?", "Канберра", ["Сидней", "Нью -Йорк", "Австралия жок")]), QA ("Төмөнкүлөрдүн кайсынысы Жерде жок?", "Тынчтык деңизи", ["Жер ортолук деңизи", "Балтика деңизи", "Түндүк деңиз"]), QA ("Төмөнкүлөрдүн кайсынысы жок бир континент? "," Арктика ", [" Антарктида "," Америка "]), QA (" Төмөнкүлөрдүн кайсынысы Африка өлкөсү эмес? "," Малайзия ", [" Мадагаскар "," Джибути "," Түштүк " Африка "," Зимбабве "])] corrCount = 0 random.shuffle (qaList) qaListдеги qaItem үчүн: print (qaItem.question) print (" Мүмкүн болгон жооптор: ") мүмкүн = qaItem.otherAnsw + [qaItem.corrAnsw] # чарчы кашаа туура жоопту башка тизме менен бириктирүү үчүн тизмеге айлантат.shuffle (мүмкүн) count = 0 # тизме индекстери 0ден башталат n python жатканда <len (мүмкүн): басып чыгаруу (str (count + 1) + ":" + мүмкүн [count]) count + = 1 print ("Сураныч, жообуңуздун санын киргизиңиз:") userAnsw = input () while userAnsw.isdigit (): print ("Бул сан эмес болчу. Сураныч, жообуңуздун номерин киргизиңиз: ") userAnsw = input () userAnsw = int (userAnsw) эмес, (userAnsw> 0 жана userAnsw <= len (мүмкүн)): print (" Бул сан эч кандай жоопко дал келбейт. Сураныч, жообуңуздун номерин киргизиңиз: ") userAnsw = input () мүмкүн болсо [userAnsw-1] == qaItem.corrAnsw: print (" Сиздин жообуңуз туура болду. ") CorrCount += 1 башка: басып чыгаруу (" Сиздин жообуңуз болгон туура эмес. ") басып чыгаруу (" Туура жооп болду: " + qaItem.corrAnsw) print (" ") print (" Сиз " + str (corrCount) +" "" + str (len (qaList)) + "суроолоруна туура жооп бердиңиз. ")

947361 15
947361 15

Кадам 15. Кодду иштетүү

Эгерде сиз IDE колдонуп жатсаңыз, "Run" символун же меню пунктун чыкылдатыңыз. Эгерде сиз текст редакторун колдонуп жатсаңыз, программаңызды сактап, редакторду жаап, программаңызды Python менен ачыңыз.

Кеңештер

  • Туура чегинүүгө көңүл буруңуз. Функциянын же класстын аныктамасындагы код, циклдин ичиндеги код сыяктуу, чегинет. Туура эмес чеги бар Python программасы иштебейт.
  • Оюнду үзгүлтүккө учураткыңыз келсе жана аны аягына чыгаргыңыз келбесе, Ctrl+C басыңыз.
  • Эгерде сиз ар бир input () чалуусун raw_input () чалуусуна алмаштырсаңыз, бул программа Python 2де иштейт, бирок Python 3тө иштебей калат.

Сунушталууда: