Створіть просту вікторину на Python

Згідно з індексом TIOBE, Python є найпопулярнішою мовою програмування у світі, і легко зрозуміти, чому. Програми на ній лаконічні та легкі для читання, а кількість дужок, які доводиться розплутувати, значно менша, ніж в деяких інших мовах. У 163-му випуску офіційного журналу Raspberry Pi Official Magazine були представлені проекти на Python, придатні для початківців, які тільки починають працювати з Raspberry Pi.

Вважаючи, що найкращий спосіб навчитися програмуванню — це практика, автор Шон Макманус написав цей підручник, у якому показує, як створити простий тест, і пояснює код у темпі, придатному для початківців. Поділіться цією статтею з кимось, хто зацікавлений, але не знає, з чого почати свою подорож у світ програмування.

01. Відкрийте Thonny

В операційній системі Raspberry Pi OS вже встановлено Thonny — програму, за допомогою якої можна писати та запускати програми на Python. Її можна знайти в розділі «Програмування» меню робочого столу Raspberry Pi.

Що чекає на кожного програміста перед тим, як він почне писати свій черговий чудовий скрипт :)

02. Введіть свою першу програму

У Thonny є дві панелі. У нижній частині розташована «Оболонка» (‘Shell’). Якщо ви введете тут команди, вони будуть виконані негайно. Ми зосередимося на верхній панелі, де ви вводите програми; це збережені набори команд, які можна зберігати, використовувати повторно та легко редагувати. Введіть таку коротку програму — чи можете ви передбачити, що вона зробить?

name = input("What is your name?")

print("Hello", name)

У Thonny ви побачите, що фрази «Як тебе звати?» ("What is your name?")  та «Привіт» ("Hello") виділені зеленим кольором, що означає, що це фрагменти тексту, які називаються «рядками». Рядки беруться в лапки.

03. Запустіть програму

Натисніть зелену кнопку «Запустити» (‘Run’), щоб запустити програму. Якщо це не спрацює, ще раз перевірте свій код, особливо розділові знаки.

У першому рядку використовується функція Python input(), яка запитує у користувача необхідні дані, а потім чекає, поки той їх введе. Введені користувачем дані зберігаються у змінній під назвою name. Змінна — це ніби кошик для зберігання інформації. Програма може змінювати (або варіювати) інформацію, що міститься у змінній.

У другому рядку функція print() виводить інформацію в командному рядку (Shell). У дужках ми вказуємо інформацію, яку хочемо відобразити: рядок "Hello" та змінну, що містить ім’я користувача. Ми розділяємо їх комою. Чи можете ви змінити програму так, щоб вона виводила “[name] is awesome”?

Напишіть свою програму у верхній панелі та перегляньте її результати у командному рядку (Shell).

04. Тепер додайте сюди якесь запитання

Давайте розширимо цю програму, перетворивши її на вікторину «Вгадай рік», як показано у файлі simple_quiz.py.

Гра починається з 5-го рядка. Ми задаємо запитання вікторини та записуємо відповідь гравця у змінну під назвою guess. Функція input() створює рядкові змінні, тому в 6-му рядку guess перетворюється на ціле число, щоб ми могли порівнювати числа. Символ # позначає коментар, доданий для того, щоб допомогти людям зрозуміти код. Комп’ютер ігнорує коментарі.

Рядки 7 і 8 працюють як одна команда. У рядку 7 перевіряється, чи дорівнює значення змінної guess правильній відповіді — 1837. У Python для перевірки на рівність використовують два знаки рівності. (У рядках 1, 5 і 6 ви бачили один знак рівності, який означає «присвоїти цій змінній значення» чогось.) Інструкція в рядку 8 виконується лише в тому випадку, якщо припущення гравця дорівнює 1837.

Можна зрозуміти, що рядок 8 належить до рядка 7, оскільки він має відступ у чотири пробіли. Python використовує відступи, щоб показати, які інструкції належать одна до одної, без необхідності використання додаткових розділових знаків, таких як дужки. Якщо ви неправильно зробите відступ, програма не запуститься. Якщо ви пам’ятаєте про двокрапку в кінці рядка 7 під час введення програми, Thonny автоматично зробить відступ у наступному рядку. Коли відступ більше не потрібен, натисніть клавішу «DELETE».

Аналогічно, у рядках 9 і 10 перевіряється, чи є вгадане гравцем число меншим за 1837, і видається відповідна відповідь. Рядки 11 і 12 обробляють випадки, коли вгадане число більше (або пізніше) за 1837.

Перевірте, чи правильно працює ваша програма, ввівши дати, що випереджають, відстають від та відповідають правильній даті. Вітаємо! Ви створили свою першу гру на Python!

У цій простій вікторині користувачеві пропонується вгадати правильний рік у відповіді на питання з історії;
завантажити повний код

05. Розуміння списків

Ви можете додати більше запитань, скопіювавши рядки з 5 по 12, вставивши їх у кінець програми та змінивши код для кожного запитання. Але є кращий спосіб.

Списки — це одна з структур даних, яку можна використовувати для зберігання інформації в Python, що дозволяє писати коротші, зрозуміліші та більш складні програми. Натисніть кнопку «New» у Thonny, щоб відкрити нову вкладку, і введіть код tea_menu.py.

У цій програмі в 3-му рядку створюється список під назвою tea_menu. Він містить чотири рядки. Кожен елемент списку відокремлюється комою, а весь список береться в квадратні дужки.

У рядках 4 і 5 реалізовано цикл for. Цикл — це частина коду, яка повторюється. У рядку 4 налаштовано цикл таким чином, що кожного разу, коли він запускається, програма бере наступний елемент зі списку tea_menu і присвоює його змінній flavour. Рядок 5 має відступ, щоб показати, що він належить до циклу — він виводить на екран смак чаю. Спробуйте додати до списку ще кілька смаків.

Ми також можемо отримати доступ до елемента списку за його позицією у списку, яка називається індексом. Нумерація починається з нуля, тому в рядках 7 і 8 показано, як отримати перші два смаки. Функція len() визначає довжину списку, як показано в рядку 9.

Про списки можна дізнатися ще багато чого, але на сьогодні цього достатньо.

Цікаво, що означає \n у рядках, які ми виводимо? Цей символ додає порожній рядок, щоб упорядкувати вивід.


Це меню сформовано на основі переліку смаків чаю; 

завантажити повний код

06. Створення вікторини на основі списку

Давайте поєднаємо все, що ви вже бачили, з кількома новими ідеями. Ми створимо вікторину з декількома запитаннями: гравець вгадує, доки не дасть правильну відповідь, а потім програма переходить до наступного запитання. Дивіться файл longer_quiz.py.

Перша нова ідея: списки можуть містити інші списки. Ця програма створює список під назвою question_and_answer_list (рядки з 3 по 7). Кожен елемент цього списку — це список, що містить одне запитання (рядок) та відповідь на нього (число).

У 9-му рядку створюється цикл, який проходить по великому списку питань і відповідей. Він витягує наступну пару «питання-відповідь» і зберігає її у змінних під назвами question та answer.

Друга нова ідея полягає в тому, що цикли можна вкладати один в один — це називається вкладеними циклами. У цій програмі цикл while представлено з 12-го по 21-й рядок. Цей тип циклу повторює фрагмент коду, доки виконується певна умова. У даному випадку ми повторюємо цикл, доки вгадане гравцем число не збігається з правильною відповіддю (!=). Ми відступаємо наступні рядки ще на чотири пробіли, щоб показати, які рядки належать до цього циклу.

Тестування вікторини з урахуванням ранніх, пізніх та правильних відповідей;

завантажити повний код

Отже, у нас є зовнішній цикл, який по черзі перебирає питання, та внутрішній цикл, який приймає відповідь гравця, повідомляє йому, чи відповів він зарано, запізно чи правильно, і повторюється, доки гравець не дасть правильну відповідь. Після цього програма повертається до 9-го рядка, щоб перейти до наступної пари «питання-відповідь».

У 1-му рядку створюється змінна, яка фіксує кількість спроб гравця. Її значення збільшується в 15-му рядку. Наприкінці ми показуємо гравцеві його результат. У 13-му рядку в кінці запитання додано пробіл, щоб покращити вигляд тексту; інакше відповідь гравця стикалася б із самим запитанням.

Налаштування програм — це корисна практика під час вивчення Python. Спробуйте додати до вікторини власні запитання та повідомлення.

Знайдіть ще більше проектів на основі Raspberry Pi в офіційному журналі Raspberry Pi Official Magazine

Ця стаття входила в 163-й випуск офіційного журналу Raspberry Pi Official Magazine, який ви можете отримати в онлайн-доступі. Ви також можете оформити передплату на друковану версію нашого журналу. Ми не тільки здійснюємо доставку по всьому світу, але й усі, хто оформить передплату на шість або дванадцять місяців, отримають БЕЗКОШТОВНИЙ Raspberry Pi Pico 2 W!

Ви можете знайти офіційний журнал Raspberry Pi Official Magazine у FacebookXThreadsLinkedIn, та Mastodon. Ви також можете зв’язатися з командою електронною поштою : [email protected]