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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.