Тренажеры в Python, на мой взгляд, очень удобны. Можно один раз написать простой тренажер, а потом изменять только его небольшую часть, чтобы он соответствовал текущим потребностям ребенка. Единственный недостаток - не все взрослые знакомы с программированием и умеют "кодить". Но хочется верить, что этот недостаток можно компенсировать наличием инструкции по изготовлению такого тренажера.
Как сделать тренажер, который мы сегодня будем модифицировать, я писала здесь. Однако, если вы со своим ребенком совсем не знакомы с Питоном, то рекомендую заглянуть еще вот в эту статью, новичкам иногда лучше подходит описанная там последовательность действий. А может вам больше понравится взять готовую программу и просто поэкспериментировать с ней вместе с ребенком. Все варианты допустимы!
Чтобы не искать по всему каналу, еще раз добавлю картинку и код из предыдущей статьи (обратите внимание на пробелы в начале некоторых строк, они очень важны; добавьте их в код, чтобы было как на картинке).
from random import randint
for i in range (10):
a = randint(1,9)
b = randint(1,9)
rez=a+b
print(a,"+",b,"=")
c = int(input())
if c==rez :
print("Верно!")
else :
print("Нет, получится ", rez)
print("Урок окончен")
Меняем сложение на вычитание.
Что произойдет, если мы заменим в выделенном фрагменте кода знак "+" на знак "-"? Вот так:
a = randint(1,9)
b = randint(1,9)
rez=a-b
print(a,"-",b,"=")
Наш тренажер при запуске будет выдавать примеры вида 8-3 и правильно проверять ответ. Тем не менее, этого, скорее всего, окажется недостаточно.
a и b - любые числа от 1 до 9. Что скажет ребенок, если программа попросит его решить 4-7? Скорее всего не то, что мы хотели. Пока предложу два вариант борьбы с такими разностями. Первый - генерировать второе число заведомо меньше или равного первому, то есть вместо b=randint(1,9) написать b=randint(1,a). Второй - после получения значений проверять какое из них больше и, в случае необходимости, менять их местами.
Первый хорош тем, что изменить нам придется только один символ. А для чего нужен второй? Вопрос из области мат. статистики, но сейчас расскажу!
Генератор случайных чисел работает так, что каждое значение выпадает с одинаковой частотой. Чисел всего 9, так что каждое значение выпадает примерно один раз из девяти. Значит если ребенок решит 90 примеров, то приблизительно в десяти из них первым числом будет 1 и в десяти - 9. Второе число у нас генерируется в диапазоне от 1 до a. Если a=1, то и второе всегда будет 1. Мы десять раз решаем пример 1-1. А если a=9, то b может принимать любое значение от 1 до 9 и равняется, например, пяти только один раз из девяти. Значит пример 9-5 встретится нам только 1 раз на 81! Не страшно, но хочется более рационально распределить задания.
Как осуществить второй вариант? Проверить, какое из чисел больше, для этого в Питоне есть условный оператор if, и если a<b, то поменять их местами. Когда я училась в школе, это было программой десятого класса по информатике. Расскажу чуть подробнее.
Задача: есть две переменные a и b, содержащие некоторые значения, надо сделать так, чтобы значение переменной a оказалось в переменно b, а значение переменной b было записано в переменную a.
Решение: Если мы напишем a=b, то значение из b окажется записанным в a, а значение из a удалится. Чтобы его не потерять, запишем его временно в какую-нибудь другую переменную (назовем ее temp) и уже потом поменяем значение в a, а после этого запишем значение из temp в b.
В наши четыре строчки придется добавить еще кода, но можете попробовать и сравнить результат. На мой взгляд, оно того стоит. Привожу участок кода, который надо добавить вместо фрагмента, выделенного на первой картинке. Символы нижней черты надо заменить пробелами.
a = randint(1,9)
b = randint(1,9)
if a<b:
____tem=a
____a=b
____b=temp
rez=a-b
print(a,"-",b,"=")
Должно получиться вот так:
Есть еще один способ, но им мы воспользуемся в другом тренажере - тренажере на определение частного от деления.
Деление.
Мы написали уже довольно много тренажеров, генерируя исходные данные для примеров и меняя действия с ними. Получится ли у нас аналогичным образом организовать программу, которая будет создавать примеры на деление. Что будет, если мы напишем
a = randint(1,9)
b = randint(1,9)
rez=a/b
print(a,":",b,"=")
Ерунда какая-то! Сколько примеров наш второклашка сможет решить? Нам надо, чтобы первое число заведомо делилось на второе! Как этого добиться? Получить первое число по принципу b·n. Где взять это n? Смотрим a:b=(b·n):b=n. Значит n - это и есть результат!
Значит наш участок кода будет выглядеть так:
rez = randint(1,9)
b = randint(1,9)
a=b*rez
print(a,":",b,"=")
А код целиком будет выглядеть так
Заключение
На этом всё! Экспериментируйте, создавайте! Приятного решения и выдающихся результатов!