3.4. Практикум: Тик-Так
В данном уроке вы немного развлечетесь и напишете программу, демонстрирующую отображение слов "Тик" и "Так" вместо цифр.
Вы научитесь:
- Создавать цикл с условием while, который можно завершать двумя способами
- Определять функцию, проверяющую числа на "кратность"
FizzBuzz (Тик-Так)
Давайте напишем программу для ввода нескольких натуральных чисел (1, 2, 3...), при условии, что...
- Если число кратно 3, вы отобразите слово Fizz (Тик).
- Если число кратно 5, вы отобразите слово Buzz (Так).
- Если число кратно и 3, и 5, вы отобразите слово FizzBuzz (Тик-Так).
Программа должна завершать свою работу после нажатия на кнопку esc.
"Кратность" числа проверяется с помощью оператора % (модуль или остаток).
Существует также и другая форма условия if, которую вы также можете использовать:
if <condition>: (<условие>)
<true block1> (<блок1 верен>)
elif <another condition>: (<другое условие>)
<true block2> (<блок2 верен>)
Блоков elif может быть несколько, выражение elif - сокращение от else if
<more elifs?> (<еще elif>)
else:
<false block> (<неверный блок>)
Этот блок будет выполняться при условии, что все остальные неверны.
1. Начните работу с создания нового файла Python, тип файла - "Пустая программа" (blank program).
Вам понадобится выражение get_key(), а пока добавьте следующее:
from ti_system import *
Это выражение можно найти в меню: menu > More Modules > TI System.
2. Задайте переменную, которая будет представлять счет цифр, начиная с 1.
3. Используйте структуру while get_key()!=0:.
Ее можно найти в меню: menu > More Modules > TI System.
4. Используйте структуру if..elif..else, которую также можно найти через меню:
menu > Built-ins > Control.
Помните, что все это работает по следующей схеме:
if <this is true>: (<если верно>)
<do this> (<выполнить следующее>)
elif <this is true>: (<если верно>) (elif- это сокращение от else if...)
<do this> (выполнить следующее)
здесь может быть несколько elif
else:
<do this> (<выполнить следующее>)
когда все другие неверны
Внимание: Не забудьте использовать двойной (а не одиночный =) знак равенства == при написании условия. Вставка неверного знака приведет к синтаксической ошибке. Следует писать if x==5:, а не if x=5:.
В этом вам поможет меню, которое можно вызвать с помощью комбинации ctrl+=.
5. В структуре if..elif..else есть считыватель информации, но в примере некоторые данные опущены.
У оператора if и у каждого оператора elif есть условие, которого нужно придерживаться, и блок, который необходимо обработать, если условие верно. У оператора else: нет условия, поэтому его блок будет обработан при условии, что все остальные неверны.
Выражение counter+=1 - это сокращенная форма выражения counter = counter + 1.
Подсказка: Помните, что при A % B отображается остаток при делении А на В.
6. Пример написанной программы может выглядеть так, как показано на рисунке.
Если вычисление происходит слишком стремительно, и цифры мелькают слишком быстро, используйте функцию sleep() внизу, чтобы замедлить этот процесс.
Функция sleep() находится в модуле time, поэтому не забудьте вставить следующее выражение:
from time import sleep
Какое первое число будет заменено на слово FizzBuzz (Тик-Так)?
Примечание для учителя: Решение задачи (обращайте внимание на порядок написания условий):
from ti_system import *
from time import *
counter = 1
while get_key() != "esc" :
if counter % 3 ==0 and counter % 5==0:
print("FizzBuzz")
elif counter % 5==0:
print("Buzz")
elif counter % 3==0:
print("Fizz")
else:
print(counter)
counter+=1
sleep(.25)