FizzBuzz Challenge Использование понимания списка!

Если вы программист или учитесь программировать, вы наверняка сталкивались или столкнетесь с FizzBuzz Challenge.
Ниже мы расскажем об этой задаче и реализуем ее, используя python list comprehension!

Что такое FizzBuzz Challenge
Нас просят написать программу, которая выводит n чисел.
Если число кратно 3, напечатайте Fizz
Если число кратно 5, выведите Buzz
Если число кратно 3 и 5, выведите FuzzBuzz
Если число не кратно какому-либо, выведите это число.

Регулярная реализация FizzBuzz
Чтобы понять, как работает наше понимание списка, нам сначала нужно понять, как должна работать наша программа.
Самый простой способ реализовать это с помощью цикла for и выражений if.

Сначала нам нужно выполнить итерацию по количеству чисел.

На каждой итерации мы будем проверять наши условия с помощью оператора модуляции %.
Мы можем использовать этот оператор в булевом виде, так как когда результат по модулю равен 0, он возвращает False.
Мы можем инвертировать наш булев результат, используя not, и таким образом, когда наше число кратно, оно вернет True, Эта логика может быть реализована внутри нашего цикла for следующим образом:

for i in range(1, 16):
    if not (i%3 and not i%5):
        print("FizzBuzz")
    elif not (i%3):
        print("Fizz")
    elif not (i%5):
        print("Buzz")
    else:
        print(i)

Войдите в полноэкранный режим Выход из полноэкранного режима

Нашим консольным ответом будет:

Поздравляем, вы прошли испытание FizzBuzz.

FizzBuzz с пониманием списков
Чтобы применить наше понимание списка, мы должны помнить, что использование оператора * повторяет это количество раз.
Поэтому мы можем использовать x = "string "*(not i%5):.
Когда результатом нашей оценки будет False, наша строка не будет отображаться.
Сначала мы оценим наши условия.
Пример:

вот так:

FizzBuzzList = ["Fizz"*(not i%3) + "Buzz"*(not i%5) or i ]
Войдите в полноэкранный режим Выход из полноэкранного режима

Пока что мы имеем логическую часть понимания нашего списка.
Для каждой итерации мы будем передавать нашу строку, в которой, если наше условие не выполняется, она не будет конкатенирована, а если условие не выполняется, то будет конкатенирован номер нашей итерации.

Теперь нам просто нужно добавить наш цикл for for i in range(1, 16), в range() наш первый параметр является включающим, а второй – исключающим.
Таким образом, если нам нужны числа от 1 до 15, мы должны ввести параметры 1, 16, 16.

Наш окончательный вариант List Comprehension будет выглядеть следующим образом:

FizzBuzz = ["Fizz"*(not i%3) + "Buzz"*(not i%5) or i for i in range(1, 16)]
Войдите в полноэкранный режим Выход из полноэкранного режима

Надеюсь, это было полезно!
Счастливого взлома!
Карло Монрой

Оцените статью
Procodings.ru
Добавить комментарий