Изучать язык программирования легче всего на знакомых примерах. Нужно создавать первые программы для решения задач той сферы? в которой вы хорошо разбираетесь. При таком подходе вы не будете думать о предметной области? т.к. картинка у вас сама сложится в голове. Вы будете полностью сосредоточены на программировании.
Для учеников старших классов и для студентов очень знакома тема викторин и тестов. Вы постоянно с ними сталкиваетесь в процессе учебы. Например, когда отвечаете на вопросы во время урока или когда вы решаете тесты ЕГЭ и ОГЭ.
В этом уроке мы напишем 2 программы на языке программирования Python. Мы будем использовать только встроенные возможности языка Python. Поэтому никаких библиотек дополнительно устанавливать не нужно.
Последнюю версию Python можно скачать с официального сайта: https://www.python.org/. Более старые версии доступны на странице https://www.python.org/downloads/windows/. Если у вас Windows 7, то нужно будет установить более старую версию. Например, вот эту: python-3.3.3.msi
Игра-викторина на Python
Простой вариант
Нужно написать программу для проведения викторины. С помощью этой программы будут оцениваться знания учащихся школы по разным предметам.
Формат викторины предполагает, что будет дан вопрос и на него нужно будет ответить. Вариантов ответов, как при тестировании, нет.
Самый простой вариант викторины будет выглядеть следующим образом:
kol = 0 vsego = 3 otv = input("История. В каком году закончилась Великая Отечественная война? ") if otv == "1945": print("Верно") kol = kol + 1 else: print("Не верно") otv = input("Геометрия. Как называется треугольник у которого все стороны равны? ") if otv.lower() == "равносторонний": print("Верно") kol = kol + 1 else: print("Не верно") otv = input("Биология. Как называется процесс синтеза углеводов из неорганических веществ за счёт энергии солнца? ") if otv.lower() == "фотосинтез": print("Верно") kol = kol + 1 else: print("Не верно") print(kol," верных ответов из ", vsego)
Вот так будет выглядеть результат работы программы:
История. В каком году закончилась Великая Отечественная война? 1945 Верно Геометрия. Как называется треугольник у которого все стороны равны? Равносторонний Верно Биология. Как называется процесс синтеза углеводов из неорганических веществ за счёт энергии солнца? Фотосинтез Верно 3 верных ответов из 3
В этом коде были использованы уже знакомые вам функции ввода и вывода. Это input() и print(). Так же есть одна не знакомая вам функция — это lower(). Она предназначена для перевода всех символов строки в нижний регистр. Эту функцию мы должны использовать т.к. не знаем как именно напишет ответ пользователь: с большой буквы или нет.
Вариант для большого количества вопросов
Вариант, который мы сделали — это учебный вариант. Он подойдет, если в викторине не много вопросов — например, 10. А если же мы хотим сделать настоящую программу, например, для 100 вопросов, то нужно доработать программу.
В имеющейся программе вопросы мы добавляем в программном коде. Это неудобно в случае, если вопросы заранее не известны. Например, мы делаем программу для учителей. Программа должны быть одна, а вопросы для каждого учителя — свои. У учителя истории будут свои вопросы, у учителя математики — свои. Вопросы и ответы учителя могут подготовить в текстовом файле. Например, в таком формате:
В каком году закончилась Великая Отечественная война?
1945
Как называется треугольник у которого все стороны равны?
Равносторонний
В программе мы можем прочитать такой файл и добавить данные в список (List). Но для начала давайте создадим список внутри программы, чтобы понять как он устроен. У нас будет даже не список, а список списков, потому что мы будем хранить рядом с каждым вопросом и его ответ. Вот такой код у нас получится. Он становится короче, чем тот, который был, т.к. мы уже не дублируем код, а выполняем его в цикле.
kol = 0 vsego = 3 vopr = [] q1 = ["История. В каком году закончилась Великая Отечественная война? ","1945"] q2 = ["Геометрия. Как называется треугольник у которого все стороны равны? ", "равносторонний"] q3 = ["Биология. Как называется процесс синтеза углеводов из неорганических веществ за счёт энергии солнца? ", "фотосинтез"] vopr.append(q1) vopr.append(q2) vopr.append(q3) for i in vopr: otv = input(i[0]) if otv.lower() == i[1]: print("Верно") kol = kol + 1 else: print("Не верно") print(kol," верных ответов из ", vsego)
Вариант со чтением вопросов из файла
Сейчас мы из нашей учебной программы сделаем настоящую программу для проведения контроля учащихся. Мы добавим чтение файла. Давайте заранее подготовим текстовый файл «vopr.txt» и положим его в папку, где лежит сам файл с программой Python. Содержимое файла будет следующим:
История. В каком году закончилась Великая Отечественная война?
1945
Геометрия. Как называется треугольник, у которого все стороны равны?
равносторонний
Биология. Как называется процесс синтеза углеводов из неорганических веществ за счёт энергии солнца?
фотосинтез
В код программы добавим возможность чтения текстового файла. Мы создадим такой алгоритм, который пробежится по всем строкам файла и нечетные строки (1,3 и т.д.) он запишет как вопросы, а четные — как ответы. Структура для хранения будет как и в примере выше.
В тексте используется функция readlines(), которая считает все строки файла в список. Так же мы используем конструкцию replace(«\n», «»), которая удалит символы конца строки, которые у нас возникнут в конце каждой строки при чтении текстового файла. Также мы определим количество вопросов, используя функцию len().
kol = 0 f = open('vopr.txt') vopr_f = f.readlines() f.close() vsego = int(len(vopr_f)/2) vopr = [] st = 1 for i in vopr_f: if st == 1: newi = i.replace("\n", ""); q = [] q.append(newi) st = 2 else: newi = i.replace("\n", ""); q.append(newi) vopr.append(q) st = 1 for i in vopr: otv = input(i[0]) if otv.lower() == i[1]: print("Верно") kol = kol + 1 else: print("Не верно") print(kol," верных ответов из ", vsego)
На этом урок окончен.
Можно самостоятельно доработать программу для того, чтобы программа сообщала оценку. Например, оценка 5, если на 90% вопросов был дан правильный ответ. Оценка 4, если правильных ответов от 70% до 89% и т.д.