Рубрики
Без рубрики

Python One Line Fizzzbzz

Проблема Fizzbuzz – это общее упражнение, представляемое в кодовых интервью для проверки вашего мастерства в написании простого кода Python. Проблема: Распечатайте все номера от 1 до 100 до оболочки с тремя исключениями: для каждого номера, делимого тремя вы распечатываем «Fizz», для каждого номера, делимого на пять, которые вы печатаете «Buzz», и для каждого числа делится … Python One Fizzbzz Читать далее “

Автор оригинала: Chris.

Fizzbuzz Проблема – это общие упражнения, представляемые в интервью кода, чтобы проверить вашу владение простым кодом Python.

Проблема : Распечатайте все номера от 1 до 100 до оболочки с тремя исключениями:

  • Для каждого числа делится три вы печатаете "Fizz" ,
  • Для каждого номера делится пятью вы печатать "Buzz" , а также
  • Для каждого номера делится на три и пять, которые вы печатаете "Fizzbuzz" Отказ

Пример : Первые 15 чисел последовательности Fizzzguzz, следующие.

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...

Как написать Python One-Liner, который решает эту проблему?

Вот интерактивный обзор:

Упражнение : Пусть обе одноклассники дают те же результаты? Запустите код, чтобы проверить!

Давайте погрузимся в те одноистовые вкладыши, чтобы получить более глубокое понимание и улучшить свои навыки Python!

Fizzbuzz One-LiLER 1: Expression Expression + Concatenation строки + короткое замыкание

Следующий одноклассник решает проблему элегантным способом использования прекрасного понимания более продвинутых функций Python ( Источник ).

print('\n'.join('Fizz' * (i%3==0) + 'Buzz' * (i%5==0) or str(i) for i in range(1,101)))

One-Liner создает строку с помощью Присоединяйтесь к Функция с новым символом в качестве разделителя. Вот краткое объяснение функции:

String.join (ИТЕРАЛ) Метод объединяет все строковые элементы в ИТЕРИТЕЛЬНО (например, список, строка или кортеж) и возвращает результат как новую строку. строка На котором вы называете это строку разделителя – и он отделяет отдельные элементы. Например, '-'. Присоединяйтесь к («Hello ',« мир »)) Возвращает соединенную строку «Привет-мир» Отказ

Итак, что такое утечка, вы проходите в Присоединяйтесь () функция? Это генератор экспрессии формы: Выражение для переменной в контексте Отказ Вы проходите все целочисленные значения в контексте 1 до 100, используя Диапазон () функция. Итак, вы получаете оставшиеся Выражение для меня в пределах (1, 101) Отказ Какая часть выражения?

Он состоит из трех элементов:

  • 'Fizz' *)модуль выражение I% 3 == 0 Возвращает Правда только если целое число Я делится на 3, в противном случае он возвращается Ложь Отказ Итак, вы умножаете строку 'Fizz' либо с Правда ) или с Ложь ). В результате вы получаете пустую строку '' во всех случаях, за исключением случаев, если целое число Я делится на 3-в этом случае вы получаете строку 'Fizz' Отказ
  • «Buzz» *)модуль выражение I% 5 == 0 Возвращает Правда только если целое число Я делится на 5, в противном случае он возвращается Ложь Отказ Итак, вы умножаете строку «Buzz» либо с Правда ) или с Ложь ). В результате вы получаете пустую строку '' во всех случаях, за исключением случаев, если целое число Я делится на 5, в этом случае вы получаете строку «Buzz» Отказ
  • Вы используете строковые конкатенацию, чтобы приклеить ранее полученные строки. В большинстве случаев это будет пустая строка. Если Я делится на 3, вы получаете строку 'Fizz' Отказ Если Я делится на 5, вы получаете строку «Buzz» Отказ И если Я делится на 3 и 5, вы получаете строку 'Fizzbuzz' Отказ
  • или ул. (I) – В том случае, если вы получили непустую строку в {'Fizz', «Buzz», «Fizzbuzz»} На предыдущем шаге или Операция просто возвращает эту строку. Это называется короткое замыкание – и используется во многих языках программирования, такими как Python для повышения эффективности логических операций.
  • Но если строка пуста, она интерпретируется как логическая Ложь Отказ Таким образом, Python возвращает второй операнд или операция. Второй операнд просто – это строковое представление целого числа Я Отказ

Очень интересная реализация проблем Fizzbuzz!

Fizzbuzz One-Liner 2: нарезка

Альтернатива приведена в следующем приятном однокласснике (источник):

for i in range(1, 101): print('FizzBuzz'[i*i%3*4:8--i**4%5] or i)

Вау-какое короткое и краткое одноклассное решение! Но как это работает?

  • Вы повторяете все значения из I = 1 к I = 100 и распечатать строку. Все идет нормально.
  • Вы используете или Операция и нарезка, чтобы определить строку «Fizzbuzz» [начало: конец] или я генерирует выход.
  • Вы используете свойство короткого замыкания в Python: если «Fizzbuzz» [начало: конец] пусто, целое число Я возвращается, иначе не пустая строка возвращается.
  • Вы выделяете подстроку из 'Fizzbuzz' Использование нарезка следующим образом.

Нарезка – это концепция, чтобы вырезать подстроку из данной строки. Используйте нотацию нарезки S [Старт: Стоп: Шаг] Для доступа к каждому шаг -ный элемент, начиная с индекса Начать (включая) и заканчивая индекс Стоп (Исключенный). Все три аргумента являются необязательными, поэтому вы можете пропустить их для использования значений по умолчанию ( Start = 0 , Stop = Len (lst) , Step = 1 ). Например, выражение S [2: 4] из струны «Привет» выкрой ломтик «Я» и выражение S [: 3: 2] выкрой ломтик 'HL' Отказ

В примере у вас есть операция нарезки 'Fizzbuzz' [I * I% 3 * 4: 8 - Я ** 4% 5] Отказ

  • Start * I% 3 * 4 – Обратите внимание, что умножение * и модуль операции % иметь тот же приоритет, поэтому они оцениваются слева направо. Если целое число Я делится на 3, Я * я Также делится на 3, а индекс запуска равен 0. Во всех других случаях индекс запуска – это так, что нарезка либо начинается с 'Fizz' или «Buzz» Отказ
  • Стоп - я ** 4% 5 – Это 4 во всех случаях, за исключением случаев, если число Я делится на 5, в этом случае это 8.

Итак, есть четыре случая:

  • Номер делится только на 3: Start = 0 , Стоп = 4 -> 'Fizz'
  • Номер делится только на 5: Start = 4 , Стоп = 8 -> 'Гул'
  • Номер делится как 3, так и 5: Start = 0 , Стоп = 8 -> 'Fizzbuz
  • Номер делится ни 3, ни 5: Начать , Стоп = 4 -> «

Фу! Это была жесткая гайка, чтобы взломать, не так ли?

Python One-liner 3: карта + лямбда

Вы можете найти подробные учебные пособия на карте и лямбдах здесь:

  • Освещение функции карты Python
  • Лямбда функции в Python

Эти две функции могут быть использованы для решения проблемы Fizzbuzz ( Источник ):

print(list(map(lambda i: "Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i), range(1,101))))

Это похоже на метод 1, и теперь вы сможете понять это. Думать о разных ценностях целое число Я может взять.

Python One-Liners Книга

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:

Используйте структуры данных для решения реальных проблем, такие как использование булевой индексации для поиска городов с загрязнением выше среднего Используйте Numpy Basics, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку

К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.

Получите свой Python One-Liners сейчас !!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.