Циклы. Цикл while
Цикл - разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом.
Простой пример цикла можно взять из любого блога в интернете, где статьи выводятся циклом в одинаковом виде, но с различным содержанием. Пока истинно условие цикла, цикл будет выполняться.
Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while в простейшем случае выглядит так:
Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
Вот еще один пример использования цикла while для определения количества цифр натурального числа n:
Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).
Увлечение инструкциями break и continue не поощряется, если можно обойтись без их использования.
Цикл - разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом.
Простой пример цикла можно взять из любого блога в интернете, где статьи выводятся циклом в одинаковом виде, но с различным содержанием. Пока истинно условие цикла, цикл будет выполняться.
Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while в простейшем случае выглядит так:
while условие:
блок инструкций
При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
i = 1В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11, поскольку именно при i == 11 условие i <= 10 впервые перестанет выполняться.
while i <= 10:
print(i ** 2)
i += 1
Вот еще один пример использования цикла while для определения количества цифр натурального числа n:
n = int(input())После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно:
length = 0
while n > 0:
n //= 10 # это эквивалентно n = n // 10
length += 1
print(length)
i = 1Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break. Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. При этом ветка else исполняться не будет. Разумеется, инструкцию break осмыленно вызывать только внутри инструкции if, то есть она должна выполняться только при выполнении какого-то особенного условия.
while i <= 10:
print(i)
i += 1
else:
print('Цикл окончен, i =', i)
Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).
a = int(input())Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.
while a != 0:
if a < 0:
print('Встретилось отрицательное число', a)
break
a = int(input())
else:
print('Ни одного отрицательного числа не встретилось')
Увлечение инструкциями break и continue не поощряется, если можно обойтись без их использования.
Домашнее задание
1) По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания.
2) Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.
3) По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.
Операцией возведения в степень пользоваться нельзя!
4) Последовательность Фибоначчи определяется так:
φ(0) = 0, φ(1) = 1, φ(n) = φ(n)−1 + φ(n)−2.
По данному числу n определите n-е число Фибоначчи φn.
5) Последовательность состоит из натуральных чисел и завершается числом 0. Определите, сколько элементов этой последовательности больше предыдущего элемента.
1) По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания.
2) Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.
3) По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.
Операцией возведения в степень пользоваться нельзя!
4) Последовательность Фибоначчи определяется так:
φ(0) = 0, φ(1) = 1, φ(n) = φ(n)−1 + φ(n)−2.
По данному числу n определите n-е число Фибоначчи φn.
5) Последовательность состоит из натуральных чисел и завершается числом 0. Определите, сколько элементов этой последовательности больше предыдущего элемента.
Почему вы не выполняете домашнее задание?
Anonymous Poll
29%
Мне лень
32%
Нет времени
17%
Я проходил данные темы
5%
Задания сложные
9%
Я не понял тему
10%
Свой вариант в чате 👇
#sammelsurium
Когда-нибудь писали код и понимали, что делаете одно и то же? Те же конструкции, архитектурные решения? Уверены, что Ваше решение является самым оптимальным с точки зрения поддержки приложения в будущем? Ознакомьтесь с паттернами проектирования 3 типов - уделите немного времени саморазвитию)
Порождающие: https://tprg.ru/patterns-1
Структурные: https://tprg.ru/patterns-2
Поведенческие: https://tprg.ru/patterns-3
Когда-нибудь писали код и понимали, что делаете одно и то же? Те же конструкции, архитектурные решения? Уверены, что Ваше решение является самым оптимальным с точки зрения поддержки приложения в будущем? Ознакомьтесь с паттернами проектирования 3 типов - уделите немного времени саморазвитию)
Порождающие: https://tprg.ru/patterns-1
Структурные: https://tprg.ru/patterns-2
Поведенческие: https://tprg.ru/patterns-3
Tproger
Шаблоны проектирования простым языком. Часть первая. Порождающие шаблоны
Первая статья из цикла, посвящённого шаблонам, или паттернам, проектирования. На понятных примерах объясняем суть порождающих шаблонов.
Сегодня мы расскажем о таком типе данных, как списки, операциях над ними и методах, о генераторах списков и о применении списков.
Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:
И еще один способ создать список - это генераторы списков. Генератор списков - способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.
Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:
>>> list('список')
['с', 'п', 'и', 'с', 'о', 'к']
Список можно создать и при помощи литерала:>>> s = [] # Пустой список
>>> l = ['s', 'p', ['isok'], 2]
>>> s
[]
>>> l
['s', 'p', ['isok'], 2]
Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.И еще один способ создать список - это генераторы списков. Генератор списков - способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.
>>> c = [c * 3 for c in 'list']Возможна и более сложная конструкция генератора списков:
>>> c
['lll', 'iii', 'sss', 'ttt']
>>> c = [c * 3 for c in 'list' if c != 'i']Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков.
>>> c
['lll', 'sss', 'ttt']
>>> c = [c + d for c in 'list' if c != 'i' for d in 'spam' if d != 'a']
>>> c
['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.
>>> l = [1, 2, 3, 5, 7]
>>> l.sort()
>>> l
[1, 2, 3, 5, 7]
>>> l = l.sort()
>>> print(l)
None
И, напоследок, примеры работы со списками:>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
Домашнее задание
1) Найдите сумму и произведение элементов введенного пользователем списка;
2) Поменять местами самый большой и самый маленький элементы списка;
3) Генерируется список случайных целых чисел. Определите, сколько в нем четных чисел, а сколько нечетных.
4) Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки препинания [ . , : ; ! ? ( ) ] исключаются.
5) Нaпишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся cписок «1 3 5 6 10», то на выход ожидается cписок «13 6 9 15 7». Если на вход пришло только однo число, надо вывести его же. Вывoд должен содержать одну строку с чиcлами новoго списка, разделёнными пробeлом.
1) Найдите сумму и произведение элементов введенного пользователем списка;
2) Поменять местами самый большой и самый маленький элементы списка;
3) Генерируется список случайных целых чисел. Определите, сколько в нем четных чисел, а сколько нечетных.
4) Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки препинания [ . , : ; ! ? ( ) ] исключаются.
5) Нaпишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся cписок «1 3 5 6 10», то на выход ожидается cписок «13 6 9 15 7». Если на вход пришло только однo число, надо вывести его же. Вывoд должен содержать одну строку с чиcлами новoго списка, разделёнными пробeлом.
Сегодня во всем мире отмечают День тестировщика. У этого дня очень необычная история.
Началось все в Гарварде. 9 сентября 1947 года ученые тестировали ЭВМ Mark II Aiken Relay Calculator и вдруг... обнаружили мотылька, застрявшего в контактах электромеханического реле.
Насекомое спасли, а в технический журнал внесли запись «First actual case of bug being found» (первый случай обнаружения жука). Отсюда и пошло слово bug, обозначающее ошибку, а также debugging — отладка или процесс поиска багов.
Началось все в Гарварде. 9 сентября 1947 года ученые тестировали ЭВМ Mark II Aiken Relay Calculator и вдруг... обнаружили мотылька, застрявшего в контактах электромеханического реле.
Насекомое спасли, а в технический журнал внесли запись «First actual case of bug being found» (первый случай обнаружения жука). Отсюда и пошло слово bug, обозначающее ошибку, а также debugging — отладка или процесс поиска багов.
Стоит ли делать продолжение по оперативной памяти?
Anonymous Poll
83%
Да, давай
5%
Нет, я уже все знаю
13%
Мне всеравно
#sammelsurium
Давайте сыграем в игру?
Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач разного уровня сложности. Многие ли из вас смогут набрать 100/100 и доказать мастерское владение регулярками?
play.inginf.units.it
Давайте сыграем в игру?
Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач разного уровня сложности. Многие ли из вас смогут набрать 100/100 и доказать мастерское владение регулярками?
play.inginf.units.it
#sammelsurium
Многие из нас задумывались, а возможно, уже сделали свои первые шаги в изучении глубокого обучения, нейросетей и ИИ, но большинство не может найти подходящей литературы, не требующей владения математики уровня университета, и, к сожалению, бросают эту манящую затею, так и не добившись ничего более нейронки, предсказывающей значение xor для двух битов. На помощь приходит "Грокаем Глубокое обучение" Эндрю Траска. Признаться, перед прочтением, я не верил, действительно ли эта книга способна повторить успех легендарной "Грокаем Алгоритмы" Бхаргавы, но после не осталось никаких сомнений - самое то для новичка. Как бонус для читателей канала, в книге используется python и jupiter, что дает возможность лишний раз попрактиковаться в "питончике" и найти что-то новое для себя
Многие из нас задумывались, а возможно, уже сделали свои первые шаги в изучении глубокого обучения, нейросетей и ИИ, но большинство не может найти подходящей литературы, не требующей владения математики уровня университета, и, к сожалению, бросают эту манящую затею, так и не добившись ничего более нейронки, предсказывающей значение xor для двух битов. На помощь приходит "Грокаем Глубокое обучение" Эндрю Траска. Признаться, перед прочтением, я не верил, действительно ли эта книга способна повторить успех легендарной "Грокаем Алгоритмы" Бхаргавы, но после не осталось никаких сомнений - самое то для новичка. Как бонус для читателей канала, в книге используется python и jupiter, что дает возможность лишний раз попрактиковаться в "питончике" и найти что-то новое для себя
Функция range и цикл for
Функция range возвращает последовательность чисел. В примере ниже возвращается список из 10 последовательных целых чисел с приращением 1, начиная со значения 0.
Если два аргумента, то будет создан объект с диапозоном от первого аргумента до второго. Например:
Результат:
Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать с функцией range. Давайте взглянем, может ли он выполнять итерацию со словарем.
Функция range возвращает последовательность чисел. В примере ниже возвращается список из 10 последовательных целых чисел с приращением 1, начиная со значения 0.
numbers = list(range(10))
print(numbers)
Результат:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Если функция range присвоить один аргумент, объект будет иметь диапазон от 0 до указанного аргумента.Если два аргумента, то будет создан объект с диапозоном от первого аргумента до второго. Например:
numbers = list(range(3, 6))
print(numbers)
print(range(20) == range(0, 20))
Результат:
[3, 4, 5]
True
Функции range может присваиваться третий аргумент, который задает интервал числовой последовательности. Третий аргумент должен быть целым числом.numbers = list(range(5, 20, 2))
print(numbers)
Результат:[5, 7, 9, 11, 13, 15, 17, 19]
А теперь давайте познакомимся с циклом for. for number in range(5):
print(number)
Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов.Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать с функцией range. Давайте взглянем, может ли он выполнять итерацию со словарем.
a_dict = {1:"one", 2:"two", 3:"three"}Результат:
keys = a_dict.keys()
keys = sorted(keys)
for key in keys:
print(key)
1
2
3
Во-первых, мы создали словарь, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы извлекли ключи из словаря. Каждый раз, когда вы вызываете метод keys(), он возвращает неупорядоченный список ключей. Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием keys. Мы сортируем наш список, после чего используем цикл for в нем.Определите, что будет напечатано в результате выполнения следующей программы:
▪️ 49
▫️ 50
▪️ 51
▫️ 52
s = 0
for k in range(3,11):
s = s + k
print(s)
▪️ 49
▫️ 50
▪️ 51
▫️ 52
🔥1
#Python
Differences Between bytes, str, and
unicode
In Python 3, there are two types that represent sequences of characters: bytes and str.
bytes contain raw 8-bit values (binary data)
str contain Unicode characters
In Python 2, there are str and unicode.
str contain raw 8-bit values (binary data)
unicode contain Unicode characters
Use of functions:
Unicode -> binary data = encode(‘utf-8’)
binary data -> Unicode = decode(‘utf-8’)
Or you can use different encoding, but utf-8 is most commonly used.
Python 2:
1) unicode and str instances seem to be the same type
when a str only contains 7-bit ASCII characters
2) file operations default to binary encoding
Python3:
1) bytes and str instances are never equivalent—
not even the empty string—so you must be more deliberate about the types of character
2) operations involving file handles (returned by the
open built-in function) default to UTF-8 encoding
So, If you want to read or write binary data to/from a file, always open the file using a binary mode (like 'rb' or 'wb')
Differences Between bytes, str, and
unicode
In Python 3, there are two types that represent sequences of characters: bytes and str.
bytes contain raw 8-bit values (binary data)
str contain Unicode characters
In Python 2, there are str and unicode.
str contain raw 8-bit values (binary data)
unicode contain Unicode characters
Use of functions:
Unicode -> binary data = encode(‘utf-8’)
binary data -> Unicode = decode(‘utf-8’)
Or you can use different encoding, but utf-8 is most commonly used.
Python 2:
1) unicode and str instances seem to be the same type
when a str only contains 7-bit ASCII characters
2) file operations default to binary encoding
Python3:
1) bytes and str instances are never equivalent—
not even the empty string—so you must be more deliberate about the types of character
2) operations involving file handles (returned by the
open built-in function) default to UTF-8 encoding
So, If you want to read or write binary data to/from a file, always open the file using a binary mode (like 'rb' or 'wb')
Не против ли вы контента на английском?
Anonymous Poll
60%
Не против, я все понимаю
40%
Против, я не понимаю английский