Необходимо было написать программу, определяющую, есть ли питон среди введенных с клавиатуры
Обновлено: 21.11.2024
Мы можем повторить наше предыдущее определение компьютерной программы в разговорной речи:
Компьютерная программа – это пошаговый набор инструкций, которые сообщают компьютеру, что нужно делать что-то с вещами.
Мы посвятим оставшуюся часть этой книги углублению и уточнению нашего понимания того, какие именно вещи может делать компьютер. Ваша способность эффективно программировать компьютер будет во многом зависеть от вашей способности хорошо понимать эти вещи, чтобы вы могли выражать то, что хотите, на языке, который может выполнить компьютер.
Однако прежде чем мы перейдем к этому, нам нужно поговорить о вещах, на которых работают компьютеры.
Компьютерные программы работают с данными. Отдельный фрагмент данных можно назвать базой данных, но мы будем использовать родственный термин — значение.
Значение — это одна из фундаментальных вещей, таких как буква или число, которыми манипулирует программа. До сих пор мы видели значения 4 (результат сложения 2 + 2) и "Hello, World!" .
Значения сгруппированы по разным типам данных или классам.
На аппаратном уровне машины все значения хранятся в виде последовательности битов, обычно представленных цифрами 0 и 1 . Все типы компьютерных данных, будь то числа, текст, изображения, звуки или что-то еще, в конечном итоге сводятся к интерпретации этих битовых комбинаций компьютером.
К счастью, языки высокого уровня, такие как Python, предоставляют нам гибкие высокоуровневые типы данных, которые абстрагируются от утомительных деталей всех этих битов и лучше подходят для нашего человеческого мозга.
4 — это целое число, а "Hello, World!" представляет собой строку, названную так потому, что она содержит строку букв. Вы (и интерпретатор) можете идентифицировать строки, поскольку они заключены в кавычки.
Если вы не уверены, к какому классу относится значение, в Python есть функция type, которая может вам это сказать.
Неудивительно, что строки относятся к классу str, а целые числа — к классу int. Менее очевидно, что числа с точкой между целым числом и дробной частью принадлежат к классу с плавающей запятой, потому что эти числа представлены в формате с плавающей запятой. На этом этапе вы можете интерпретировать слова класс и тип как взаимозаменяемые. Мы вернемся к более глубокому пониманию того, что такое класс, в последующих главах.
Как насчет таких значений, как "17" и "3,2"? Они выглядят как числа, но заключены в кавычки, как строки.
Это строки!
Не используйте запятые в int s
Когда вы вводите большое целое число, у вас может возникнуть соблазн использовать запятые между группами из трех цифр, например 42 000 . Это не допустимое целое число в Python, но оно означает что-то другое, что допустимо:
Ну, это совсем не то, чего мы ожидали! Из-за запятой Python рассматривает это как пару значений в кортеже. Итак, не забудьте не ставить запятые или пробелы в ваших целых числах. Также вернитесь к тому, что мы говорили в предыдущей главе: формальные языки строги, обозначения лаконичны, и даже малейшее изменение может означать совсем не то, что вы предполагали.
2.2. Три способа записи строк¶
Строки в Python могут быть заключены либо в одинарные кавычки ( ' ), либо в двойные кавычки ( " ), либо в три кавычки ( ''' или """ )
Строки в двойных кавычках могут содержать внутри одинарные кавычки, как в "Bruce's beard" , а строки в одинарных кавычках могут иметь внутри двойные кавычки, как в "The Knights who say "Ni!"" .
Строки, заключенные в три символа кавычек, называются строками в тройных кавычках. Они могут содержать как одинарные, так и двойные кавычки:
Строки в тройных кавычках могут занимать даже несколько строк:
Python не имеет значения, используете ли вы одинарные или двойные кавычки или тройные кавычки для окружения строк: после того, как он проанализировал текст вашей программы или команды, способ сохранения значения остается идентичным во всех случаях и окружающие кавычки не являются частью значения. Но когда интерпретатор хочет отобразить строку, он должен решить, какие кавычки использовать, чтобы она выглядела как строка.
Поэтому разработчики языка Python обычно заключают свои строки в одинарные кавычки. Как вы думаете, что произойдет, если строка уже содержит одинарные кавычки? Попробуйте сами и убедитесь.
2.3. Строковые литералы и escape-последовательности¶
Литерал — это нотация для представления постоянного значения встроенного типа данных.
В строковых литералах большинство символов представляют сами себя, поэтому, если нам нужен литерал с буквами s-t-r-i-n-g , мы просто пишем 'string' .
Но что, если мы хотим представить литерал для перевода строки (то, что вы получаете, когда нажимаете клавишу на клавиатуре) или табуляции? Эти строковые литералы нельзя распечатать так, как s или t.Чтобы решить эту проблему, Python использует управляющую последовательность для представления этих строковых литералов.
Существует несколько таких escape-последовательностей, которые полезно знать.
\n — наиболее часто используемый из них. Следующий пример, надеюсь, прояснит, что он делает.
2.4. Имена и операторы присваивания¶
Чтобы писать программы, которые делают что-то с вещами, которые мы теперь называем значениями, нам нужен способ хранить наши значения в памяти компьютера и называть их для последующего поиска.
Мы используем оператор присваивания Python именно для этой цели:
В приведенном выше примере используются три назначения. Первый присваивает строковое значение «Как дела, Док?» к названию сообщение . Второй присваивает целому числу 17 имя n , а третий присваивает числу с плавающей запятой 3,14159 имя pi .
Операторы присваивания создают имена и связывают эти имена со значениями. Затем значения можно извлечь из памяти компьютера, обратившись к связанному с ними имени.
Имена также называются переменными, поскольку значения, на которые они ссылаются, могут изменяться во время выполнения программы. Переменные также имеют типы. Опять же, мы можем спросить у переводчика, что это такое.
Тип переменной – это тип значения, на которое она в данный момент ссылается.
Распространенный способ представления переменных на бумаге – написать имя переменной линией, соединяющей ее с ее текущим значением. Такая фигура называется диаграммой объекта. Он показывает состояние переменных в определенный момент времени.
На этой диаграмме показан результат выполнения предыдущих операторов присваивания:
2.5. Переменные переменные¶
Мы используем переменные в программе, чтобы "запоминать" такие вещи, как текущий счет в футбольном матче. Но переменные переменные. Это означает, что они могут меняться со временем, как табло на футбольном матче. Вы можете присвоить значение переменной, а позже присвоить той же переменной другое значение.
Это отличается от математики. В математике, если вы присвоите x значение 3, оно не может измениться, чтобы связать с другим значением на полпути к вашим вычислениям!
Вы заметите, что мы изменили значение дня три раза, а при третьем назначении мы даже присвоили ему значение другого типа.
Большая часть программирования связана с тем, чтобы компьютер запоминал такие вещи, как назначение переменной количеству пропущенных вызовов на вашем телефоне, а затем организация обновления этой переменной, когда вы пропустите еще один вызов.
В оболочке Python ввод имени в приглашении заставляет интерпретатор искать значение, связанное с именем (или возвращать сообщение об ошибке, если имя не определено), и отображать его. В скрипте определенное имя, отсутствующее в вызове функции печати, вообще не отображается.
2.6. Оператор присваивания не является знаком равенства!¶
Семантика оператора присваивания может сбить с толку начинающих программистов, особенно потому, что токен присваивания = можно легко спутать с with equals (Python использует токен == для равенства, поскольку мы скоро увидим). Это не так!
Вышеприведенное среднее утверждение было бы невозможным, если бы = означало равно, поскольку n никогда не может быть равно n + 1 . Однако это утверждение совершенно законно для Python. Оператор присваивания связывает имя слева от оператора с значением справа.
Два ns в n = n + 1 имеют разные значения: n справа — это поиск в памяти, который заменяется значением, когда правая часть вычисляется Python устный переводчик. Он должен уже существовать, иначе возникнет ошибка имени. Сначала оценивается правая часть оператора присваивания.
n слева — это имя, данное новому значению, вычисляемому справа, когда оно хранится в памяти компьютера. Он не обязательно должен существовать ранее, так как он будет добавлен к доступным именам запущенной программы, если его еще нет.
Имена в Python существуют в контексте, называемом пространством имен, которое мы обсудим позже в этой книге.
Левая часть оператора присваивания должна быть допустимым именем переменной Python. Вот почему вы получите сообщение об ошибке, если введете:
При чтении или написании кода скажите себе: «n присваивается 17» или «n получает значение 17». Не говорите «n равно 17».
Если вам интересно, токен – это символ или строка символов, имеющая синтаксическое значение в языке. В Python операторы, ключевые слова, литералы и пробелы образуют токены языка.
2.7. Имена переменных и ключевые слова¶
Действительные имена переменных в Python должны соответствовать следующим трем простым правилам:
Это произвольно длинная последовательность букв и цифр.
Последовательность должна начинаться с буквы.
В дополнение к a..z и A..Z подчеркивание ( _ ) является буквой.
Несмотря на то, что использование прописных букв разрешено, по соглашению мы этого не делаем. Если вы это сделаете, помните, что дело имеет значение. день и день будут разными переменными.
В имени может использоваться символ подчеркивания ( _ ). Он часто используется в именах, состоящих из нескольких слов, таких как my_name или price_of_tea_in_china .
В некоторых ситуациях имена, начинающиеся с символа подчеркивания, имеют особое значение, поэтому для начинающих рекомендуется начинать все имена с буквы, отличной от символа подчеркивания.
Если вы дадите переменной недопустимое имя, вы получите синтаксическую ошибку:
76trombones является незаконным, так как не начинается с буквы. more$ является недопустимым, поскольку содержит недопустимый символ, знак доллара. Но что не так с классом?
Оказывается, класс — это одно из ключевых слов Python. Ключевые слова определяют синтаксические правила и структуру языка, и их нельзя использовать в качестве имен переменных.
Python 3 содержит тридцать три ключевых слова (и время от времени усовершенствования Python вводят или исключают одно или два):
Возможно, вы захотите держать этот список под рукой. На самом деле, как это часто бывает при обучении программированию на Python, когда вы в чем-то не уверены, вы можете спросить Python:
Список ключевых слов, keyword.kwlist , соответственно, приходит к нам в виде списка Python.
Если интерпретатор жалуется на одно из ваших имен переменных, и вы не знаете, почему, посмотрите, есть ли оно в этом списке.
Программисты обычно выбирают имена для своих переменных, которые понятны людям, читающим программу, — они помогают программисту документировать или помнить, для чего используется переменная.
Новички иногда путают значимый для человека-читателя с значимым для компьютера. Таким образом, они ошибочно думают, что раз они назвали некоторую переменную средней или pi, она каким-то образом автоматически рассчитает среднее значение или автоматически свяжет переменную pi со значением 3,14159. Нет! Компьютер не придает семантического значения вашим именам переменных. Это зависит от вас.
2.8. Операторы и выражения¶
Инструкция — это инструкция, которую может выполнить интерпретатор Python. До сих пор мы видели два: оператор присваивания и оператор импорта. Некоторые другие виды операторов, которые мы скоро увидим, — это операторы if, while и for. (Есть и другие виды!)
Когда вы вводите оператор в командной строке, Python выполняет его. Интерпретатор не отображает никаких результатов.
Выражение — это комбинация значений, переменных, операторов и вызовов функций. Если вы вводите выражение в приглашении Python, интерпретатор оценивает его и отображает результат, который всегда является значением:
В этом примере len — это встроенная функция Python, которая возвращает количество символов в строке. Ранее мы видели функции print и type, так что это наш третий пример функции.
В результате вычисления выражения получается значение, поэтому выражения могут появляться справа от операторов присваивания. Значение само по себе является простым выражением, как и переменная.
2.9. Операторы и операнды¶
Операторы — это специальные токены, представляющие такие вычисления, как сложение, умножение и деление. Значения, которые использует оператор, называются операндами.
Ниже приведены все допустимые выражения Python, смысл которых более или менее ясен:
Токены + и - , а также использование скобок для группировки означают в Python то же, что и в математике. Звездочка ( * ) – это знак умножения, а ** – знак возведения в степень (возведение числа в степень).
Когда вместо операнда появляется имя переменной, перед выполнением операции оно заменяется его значением.
Сложение, вычитание, умножение и возведение в степень делают то, что вы ожидаете.
Пример: переведем 645 минут в часы:
Ой! В Python 3 оператор деления / всегда дает результат с плавающей запятой. Возможно, нам хотелось бы знать, сколько осталось полных часов и сколько минут осталось. Python дает нам два разных варианта оператора деления. Второе, называемое целочисленным делением, использует токен // . Он всегда усекает результат до следующего наименьшего целого числа (слева в числовой строке).
Позаботьтесь о том, чтобы выбрать правильный оператор деления. Если вы работаете с выражениями, в которых вам нужны значения с плавающей запятой, используйте оператор деления, который правильно выполняет деление.
2.10. Оператор модуля¶
Операция модуля работает с целыми числами (и целочисленными выражениями) и дает остаток при делении первого числа на второе. В Python оператор модуля представляет собой знак процента ( %).Синтаксис такой же, как и для других операторов:
Поэтому 7 разделить на 3 равно 2 с остатком 1.
Оператор модуля оказывается на удивление полезным. Например, вы можете проверить, делится ли одно число на другое — если x % y равно нулю, то x делится на y .
Кроме того, вы можете извлечь крайнюю правую цифру или цифры из числа. Например, x % 10 дает самую правую цифру x (в базе 10). Точно так же x % 100 дает две последние цифры.
Кроме того, это чрезвычайно полезно для преобразования, например, секунд в часы, минуты и секунды. Итак, давайте напишем программу, которая попросит пользователя ввести несколько секунд, и мы конвертируем их в часы, минуты и оставшиеся секунды.
2.11. Порядок операций¶
Когда в выражении появляется более одного оператора, порядок их вычисления зависит от правил приоритета. Python следует тем же правилам приоритета для своих математических операторов, что и математика. Аббревиатура PEMDAS помогает запомнить порядок операций:
Скобки имеют наивысший приоритет и могут использоваться для принудительного вычисления выражения в нужном вам порядке. Поскольку выражения в круглых скобках оцениваются первыми, 2 * (3-1) равно 4, а (1+1)**(5-2) равно 8. Вы также можете использовать круглые скобки, чтобы упростить чтение выражения, как в ( минуту * 100) / 60 , даже если это не меняет результат.
Возведение в степень имеет следующий наивысший приоритет, поэтому 2**1+1 равно 3, а не 4, а 3*1**3 равно 3, а не 27.
Из-за некоторой исторической причуды исключением из правила левой ассоциативности слева направо является оператор возведения в степень ** , поэтому полезно всегда использовать круглые скобки, чтобы задать именно тот порядок, который вы хотите, когда задействовано возведение в степень:
Командная строка Python в непосредственном режиме отлично подходит для изучения и экспериментирования с подобными выражениями.
2.12. Операции со строками¶
Как правило, вы не можете выполнять математические операции со строками, даже если строки выглядят как числа. Следующее является недопустимым (при условии, что сообщение имеет тип string):
Интересно, что оператор + работает со строками, но для строк оператор + представляет конкатенацию, а не сложение. Конкатенация означает соединение двух операндов путем их сквозной связи. Например:
Выход этой программы — бананово-ореховый хлеб . Пробел перед словом nut является частью строки и необходим для создания пробела между объединенными строками.
Оператор * также работает со строками; он выполняет повторение. Например, «Веселье» * 3 — это «Веселье, веселье». Один из операндов должен быть строкой; другое должно быть целым числом.
С одной стороны, эта интерпретация + и * имеет смысл по аналогии со сложением и умножением. Поскольку 4 * 3 эквивалентно 4 + 4 + 4 , мы ожидаем, что «Веселье» * 3 будет таким же, как «Веселье» + «Веселье» + «Веселье», и это так. С другой стороны, конкатенация и повторение строк существенно отличаются от сложения и умножения целых чисел. Можете ли вы придумать свойство, которым обладают сложение и умножение и которых нет у конкатенации строк и повторения?
2.13. Функции преобразования типов¶
Здесь мы рассмотрим еще три функции Python, int , float и str , которые будут (попытаться) преобразовать свои аргументы в типы int , float и str соответственно. Мы называем эти функции преобразования типов.
Функция int может принимать число с плавающей запятой или строку и преобразовывать ее в целое число. Для чисел с плавающей запятой он отбрасывает дробную часть числа — процесс, который мы называем усечением до нуля в числовой строке. Давайте посмотрим на это в действии:
Последний случай показывает, что строка должна быть синтаксически допустимым числом, иначе вы получите одну из этих надоедливых ошибок времени выполнения.
Преобразователь типа float может преобразовать целое число, число с плавающей запятой или синтаксически допустимую строку в число с плавающей запятой.
По заданной строке напишите функцию Python, чтобы проверить, является ли она палиндромом или нет. Строка называется палиндромом, если обратная сторона строки совпадает со строкой. Например, «радар» — это палиндром, а «основание счисления» — не палиндром.
Примеры:
- Найти обратную строку
- Проверьте, совпадают ли реверс и оригинал.
Питон
Вывод:
Итеративный метод. Этот метод разработан Шариком Разой. Запустите цикл от начала до длины/2 и проверьте первый символ до последнего символа строки, второй до предпоследнего и так далее…. Если какой-либо символ не совпадает, строка не будет палиндромом.
Ниже представлена реализация описанного выше подхода:
Питон
Вывод:
Метод с использованием встроенной функции для реверсирования строки. Этот метод предоставлен Шариком Раза. В этом методе предопределенная функция ‘ ‘.join(reversed(string)) используется для переворачивания строки.
Ниже представлена реализация описанного выше подхода:
Питон
Вывод:
Метод с использованием одной дополнительной переменной. В этом методе пользователь берет символы строки один за другим и сохраняет их в пустой переменной. После сохранения всех символов пользователь сравнит обе строки и проверит, является ли она палиндромом или нет.
Питон
Вывод:
Метод с использованием флага. В этом методе пользователь сравнивает каждый символ от начала до конца в цикле for, и если символ не совпадает, статус флага изменяется. Затем он проверит состояние флага и, соответственно, напечатает, является ли он палиндромом или нет.
Питон
Вывод:
Метод с использованием рекурсии:
Этот метод сравнивает первый и последний элемент строки и передает остальную часть подстроки рекурсивному вызову самого себя.
Питон3
Вывод:
Пожалуйста, напишите комментарии, если обнаружите что-то неверное или хотите поделиться дополнительной информацией по теме, обсуждавшейся выше.
Условные операторы являются частью каждого языка программирования. С условными операторами у нас может быть код, который иногда запускается, а иногда не запускается, в зависимости от условий программы в это время.
Когда мы полностью выполняем каждый оператор программы, двигаясь сверху вниз, при этом каждая строка выполняется по порядку, мы не просим программу оценивать определенные условия. Используя условные операторы, программы могут определить, выполняются ли определенные условия, а затем получить указание, что делать дальше.
Давайте рассмотрим несколько примеров использования условных операторов:
- Если учащийся набрал более 65 % по тесту, сообщите, что его оценка сдана; если нет, сообщите, что ее оценка неудовлетворительна
- Если у него есть деньги на счету, рассчитайте проценты; если нет, взимать штраф
- Если они покупают 10 или более апельсинов, рассчитайте скидку в размере 5%; если они покупают меньше, то не
Благодаря оценке условий и назначению кода для выполнения в зависимости от того, выполняются эти условия или нет, мы пишем условный код.
Это руководство поможет вам написать условные операторы на языке программирования Python.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке локальной среды программирования или среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.)< /p>
Если оператор
Мы начнем с оператора if, который будет оценивать, является ли утверждение истинным или ложным, и запускать код только в том случае, если утверждение верно.
Информация. Чтобы следовать примеру кода из этого руководства, откройте интерактивную оболочку Python в локальной системе, выполнив команду python3. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>.
В текстовом редакторе откройте файл и напишите следующий код:
В этом коде у нас есть переменная оценка, и мы присваиваем ей целочисленное значение 70 . Затем мы используем оператор if, чтобы оценить, больше или равно ( >= ) значение переменной 65 . Если он соответствует этому условию, мы говорим программе распечатать строку «Проходной балл» .
Сохраните программу какgrade.py и запустите ее в локальной среде программирования из окна терминала с помощью команды pythongrade.py .
В этом случае оценка 70 соответствует условию быть больше или равной 65, поэтому после запуска программы вы получите следующий вывод:
Давайте теперь изменим результат этой программы, изменив значение переменной Grade на 60:
Когда мы сохраним и запустим этот код, мы не получим никаких выходных данных, потому что условие не было выполнено, и мы не указали программе выполнение другого оператора. р>
Чтобы привести еще один пример, давайте подсчитаем, меньше ли баланс банковского счета 0. Давайте создадим файл с именем account.py и напишем следующую программу:
Когда мы запустим программу с python account.py, мы получим следующий вывод:
В программе мы инициализировали переменную balance со значением -5, что меньше 0. Поскольку баланс соответствует условию оператора if ( balance ), после сохранения и запуска кода мы получим строковый вывод. Опять же, если мы изменим баланс на 0 или положительное число, мы не получим никакого вывода.
Инструкция Else
Вероятно, мы захотим, чтобы программа что-то делала, даже если оператор if оценивается как ложный. В нашем примере с оценками нам нужно будет вывести, является ли оценка удовлетворительной или неудовлетворительной.
Для этого мы добавим оператор else к приведенному выше условию оценки, построенному следующим образом:
Поскольку приведенная выше переменная оценки имеет значение 60 , оператор if оценивается как ложный, поэтому программа не выводит проходной балл . Следующее за ним выражение else сообщает программе, что она должна что-то сделать в любом случае.
Когда мы сохраним и запустим программу, мы получим следующий вывод:
Если мы затем перепишем программу так, чтобы оценка была равна 65 или выше, вместо этого мы получим на выходе проходную оценку .
Чтобы добавить оператор else в пример с банковским счетом, мы перепишем код следующим образом:
Здесь мы изменили значение переменной balance на положительное число, чтобы оператор else распечатывался. Чтобы получить первый оператор if для печати, мы можем заменить значение отрицательным числом.
Комбинируя оператор if с оператором else, вы создаете условный оператор, состоящий из двух частей, который указывает компьютеру выполнять определенный код независимо от того, выполняется ли условие if.
Инструкция Else if
До сих пор мы представили логическую опцию для условных операторов, при этом каждое выражение if оценивается либо как true, либо как false. Во многих случаях нам понадобится программа, которая оценивает более двух возможных результатов. Для этого мы будем использовать оператор else if, который на Python написан как elif. Оператор elif или else if выглядит как оператор if и оценивает другое условие.
В программе банковского счета мы можем захотеть иметь три дискретных вывода для трех различных ситуаций:
- Баланс меньше 0
- Баланс равен 0
- Баланс больше 0
Инструкция elif будет помещена между оператором if и оператором else следующим образом:
Теперь есть три возможных вывода, которые могут произойти после запуска программы:
- Если переменный баланс равен 0, мы получим вывод оператора elif ( Баланс равен 0, скоро добавьте средства. )
- Если для переменного баланса задано положительное число, мы получим выходные данные инструкции else (Ваш баланс равен 0 или больше).
- Если для переменной balance задано отрицательное число, на выходе будет строка из оператора if ( Баланс ниже 0, добавьте средства сейчас, иначе с вас будет взиматься штраф ).
Что, если мы хотим иметь более трех возможностей? Мы можем сделать это, вписав в наш код более одного оператора elif.
Давайте перепишем код программыgrade.py так, чтобы несколько буквенных оценок соответствовали диапазонам числовых оценок:
- 90 или выше соответствует оценке A
- 80–89 соответствует оценке B.
- 70–79 соответствует оценке C.
- 65–69 соответствует оценке D.
- 64 или ниже соответствует оценке F.
Чтобы запустить этот код, нам потребуется один оператор if, три оператора elif и оператор else, который будет обрабатывать все неудачные случаи.
Давайте перепишем код из приведенного выше примера, чтобы он содержал строки, выводящие каждую буквенную оценку. Мы можем оставить оператор else без изменений.
Поскольку операторы elif оцениваются по порядку, мы можем сделать наши операторы довольно простыми. Эта программа выполняет следующие шаги:
Если оценка больше 90, программа напечатает оценку A, если оценка меньше 90, программа перейдет к следующему оператору…
Если оценка больше или равна 80, программа напечатает оценку B, если оценка 79 или меньше, программа перейдет к следующему оператору…
Если оценка больше или равна 70, программа напечатает оценку C, если оценка 69 или меньше, программа перейдет к следующему оператору…
Если оценка больше или равна 65, программа напечатает оценку D, если оценка 64 или меньше, программа перейдет к следующему оператору…
Программа напечатает неудовлетворительную оценку, поскольку не были соблюдены все вышеуказанные условия.
Вложенные операторы if
Как только вы освоитесь с операторами if , elif и else, вы можете перейти к вложенным условным операторам. Мы можем использовать вложенные операторы if для ситуаций, когда мы хотим проверить вторичное условие, если первое условие выполняется как истинное. Для этого мы можем иметь оператор if-else внутри другого оператора if-else. Давайте посмотрим на синтаксис вложенного оператора if:
Этот код может привести к нескольким возможным результатам:
- Если утверждение 1 оценивается как истинное, программа затем оценивает, является ли вложенное_оператор также истинным. Если оба случая верны, вывод будет таким:
- Если, тем не менее, оператор 1 оценивается как истина, а вложенное_оператор — как ложь, то вывод будет таким:
- И если оператор 1 оценивается как ложный, вложенный оператор if-else не будет выполняться, поэтому оператор else будет выполняться один, и вывод будет таким:
Мы также можем иметь несколько операторов if, вложенных в наш код:
В приведенном выше коде есть вложенный оператор if внутри каждого оператора if в дополнение к оператору elif. Это позволит использовать больше вариантов для каждого условия.
Давайте рассмотрим пример вложенных операторов if в нашей программеgrade.py. Мы можем сначала проверить, проходит ли оценка (больше или равна 65%), а затем оценить, какой буквенной оценке должна быть эквивалентна числовая оценка. Однако, если оценка не проходит, нам не нужно прогонять буквенные оценки, а вместо этого программа может сообщить, что оценка неудовлетворительна. Наш измененный код с вложенным оператором if будет выглядеть следующим образом:
Если мы запустим код с переменной оценкой, установленной на целочисленное значение 92 , первое условие будет выполнено, и программа выведет проходной балл: . Затем он проверит, превышает ли оценка значение 90 или равно ему, и, поскольку это условие также выполняется, он выведет A .
Если мы запустим код с переменной Grade, установленной на 60 , то первое условие не будет выполнено, поэтому программа пропустит вложенные операторы if и перейдет к оператору else, при этом программа распечатает Failinggrade .< /p>
Конечно, мы можем добавить еще больше параметров и использовать второй уровень вложенных операторов if. Возможно, мы захотим оценить оценки A+, A и A- отдельно. Мы можем сделать это, сначала проверив, является ли оценка удовлетворительной, затем проверив, является ли оценка 90 или выше, а затем проверив, превышает ли оценка 96 для A+, например:
В приведенном выше коде для переменной оценки, равной 96 , программа выполнит следующее:
- Проверьте, больше или равно ли значение 65 (истина)
- Распечатайте Проходной балл:
- Проверьте, больше ли оценка или равна 90 (правда)
- Проверьте, не превышает ли оценка 96 (ложь)
- Проверьте, больше ли оценка 93, а также меньше или равна 96 (правда)
- Распечатать А
- Оставьте эти вложенные условные операторы и продолжите работу с оставшимся кодом.
Поэтому результат программы для оценки 96 выглядит следующим образом:
Вложенные операторы if позволяют добавить в код несколько определенных уровней условий.
Заключение
Используя условные операторы, такие как оператор if, вы сможете лучше контролировать выполнение своей программы. Условные операторы говорят программе оценить, выполняется ли определенное условие. Если условие выполнено, будет выполнен определенный код, но если оно не выполнено, программа продолжит переход к другому коду.
Чтобы продолжить практиковать условные операторы, попробуйте использовать другие операторы, комбинируя операторы с операторами и или или , а также используя условные операторы вместе с циклами. Вы также можете ознакомиться с нашим учебным пособием «Как создать простую программу-калькулятор», чтобы лучше познакомиться с условными операторами.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Серия руководств: Как программировать на Python
Введение
Python – это гибкий и универсальный язык программирования, который можно использовать во многих случаях, с сильными сторонами в написании сценариев, автоматизации, анализе данных, машинном обучении и серверной разработке. Это отличный инструмент как для новичков, так и для опытных разработчиков.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке локальной среды программирования или среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.)< /p>
Добро пожаловать! Если вы хотите научиться работать с циклами while в Python, эта статья для вас.
Хотя циклы — это очень мощные программные структуры, которые вы можете использовать в своих программах для повторения последовательности операторов.
Из этой статьи вы узнаете:
- Что такое циклы while.
- Для чего они используются.
- Когда их следует использовать.
- Как они работают за кулисами.
- Как написать цикл while в Python.
- Что такое бесконечные циклы и как их прервать.
- Для чего используется while True и его общий синтаксис.
- Как использовать оператор break для остановки цикла while.
Вы узнаете, как циклы while работают за кулисами, с помощью примеров, таблиц и диаграмм.
Вы готовы? Давай начнем. 🔅
🔹 Назначение и варианты использования циклов While
Начнем с назначения циклов while. Для чего они используются?
Они используются для повторения последовательности операторов неизвестное количество раз. Этот тип цикла выполняется, пока заданное условие истинно, и останавливается только тогда, когда условие становится ложным.
Когда мы пишем цикл while, мы не определяем явно, сколько итераций будет выполнено, мы только пишем условие, которое должно быть True, чтобы процесс продолжался, и False, чтобы остановить его.
💡 Совет: если условие цикла while никогда не оценивается как False , то у нас будет бесконечный цикл, который никогда не останавливается (теоретически) без внешнего вмешательства.
Вот несколько примеров реального использования циклов while:
- Ввод данных пользователем. Когда мы запрашиваем ввод данных пользователем, нам необходимо проверить, является ли введенное значение допустимым. Мы не можем знать заранее, сколько раз пользователь введет неверный ввод, прежде чем программа сможет продолжить работу. Поэтому цикл while идеально подходит для этого сценария.
- Поиск: поиск элемента в структуре данных — еще один идеальный вариант использования цикла while, поскольку мы не можем заранее знать, сколько итераций потребуется для нахождения целевого значения. Например, алгоритм бинарного поиска можно реализовать с помощью цикла while.
- Игры. В игре можно использовать цикл while, чтобы поддерживать работу основной логики игры до тех пор, пока игрок не проиграет или игра не закончится. Мы не можем знать заранее, когда это произойдет, так что это еще один идеальный сценарий для цикла while.
🔸 Как работают циклы While
Теперь, когда вы знаете, для чего используются циклы while, давайте посмотрим на их основную логику и то, как они работают за кулисами. Вот у нас есть диаграмма:
Пока цикл
Давайте разберем это подробнее:
- Процесс начинается, когда во время выполнения программы обнаруживается цикл while.
- Условие оценивается, чтобы проверить, является ли оно истинным или ложным.
- Если условие равно True , выполняются операторы, принадлежащие циклу.
- Условие цикла while проверяется снова.
- Если условие снова оценивается как True, последовательность операторов выполняется снова, и процесс повторяется.
- Когда условие оценивается как False , цикл останавливается, и программа продолжает работу за пределами цикла.
Одной из наиболее важных характеристик циклов while является то, что переменные, используемые в условии цикла, не обновляются автоматически. Мы должны явно обновить их значения с помощью нашего кода, чтобы убедиться, что цикл в конечном итоге остановится, когда условие оценивается как False .
🔹 Общий синтаксис циклов While
Отлично. Теперь вы знаете, как работают циклы while, поэтому давайте углубимся в код и посмотрим, как написать цикл while на Python. Это основной синтаксис:
Цикл while (синтаксис)
Это основные элементы (по порядку):
- Ключевое слово while (за которым следует пробел).
- Условие, определяющее, будет ли цикл продолжать работу или нет, на основе его истинного значения ( True или False ).
- Двоеточие ( : ) в конце первой строки.
- Последовательность операторов, которые будут повторяться. Этот блок кода называется «телом» цикла, и он должен иметь отступ. Если оператор не имеет отступа, он не будет считаться частью цикла (см. диаграмму ниже).
💡 Совет. Руководство по стилю Python (PEP 8) рекомендует использовать 4 пробела на уровень отступа. Табуляции следует использовать только для того, чтобы оставаться согласованным с кодом, который уже имеет отступы с табуляциями.
🔸 Примеры циклов While
Теперь, когда вы знаете, как работают циклы while и как их писать на Python, давайте посмотрим, как они работают за кулисами, на нескольких примерах.
Как работает базовый цикл while
Здесь у нас есть базовый цикл while, который выводит значение i, пока i меньше 8 ( i ):
Если мы запустим код, мы увидим следующий вывод:
Давайте посмотрим, что происходит за кулисами при запуске кода:
- Итерация 1: изначально значение i равно 4, поэтому условие i оценивается как True, и цикл начинает выполняться. Выводится значение i (4), и это значение увеличивается на 1. Цикл начинается снова.
- Итерация 2: теперь значение i равно 5, поэтому условие i оценивается как True .Выполняется тело цикла, выводится значение i (5), и это значение i увеличивается на 1. Цикл начинается снова.
- Итерации 3 и 4. Тот же процесс повторяется для третьей и четвертой итераций, поэтому печатаются целые числа 6 и 7.
- Перед началом пятой итерации значение i равно 8 . Теперь условие цикла while оценивается как False, и цикл немедленно останавливается.
💡 Совет. Если условие цикла while имеет значение False перед началом первой итерации, цикл while даже не запустится.
Ввод данных пользователем с использованием цикла while
Теперь давайте рассмотрим пример цикла while в программе, которая принимает вводимые пользователем данные. Мы будем использовать функцию input(), чтобы попросить пользователя ввести целое число, и это целое число будет добавлено к списку только в том случае, если оно четное.
Это код:
Условием цикла является len(nums) , поэтому цикл будет выполняться, пока длина списка nums строго меньше 4.
Давайте проанализируем эту программу построчно:
- Начнем с определения пустого списка и присвоения его переменной с именем nums .
- Затем мы определяем цикл while, который будет выполняться, пока len(nums) .
- Мы запрашиваем пользовательский ввод с помощью функции input() и сохраняем его в переменной user_input.
💡 Совет. Нам нужно преобразовать (преобразовать) значение, введенное пользователем, в целое число с помощью функции int(), прежде чем присваивать его переменной, поскольку функция input() возвращает строку (источник).
- Мы проверяем, является ли это значение четным или нечетным.
- Если число четное, мы добавляем его в список номеров.
- В противном случае, если оно нечетное, цикл запускается снова, и условие проверяется, чтобы определить, должен ли цикл продолжаться или нет.
Если мы запустим этот код с пользовательским вводом, мы получим следующий результат:
В этой таблице показано, что происходит за кулисами при выполнении кода:
💡 Совет. Начальное значение len(nums) равно 0, поскольку изначально список пуст. Последний столбец таблицы показывает длину списка в конце текущей итерации. Это значение используется для проверки условия перед началом следующей итерации.
Как видно из таблицы, пользователь вводит четные целые числа во второй, третьей, шестой и восьмой итерациях, и эти значения добавляются к списку чисел.
Перед началом «девятой» итерации условие снова проверяется, но теперь оно оценивается как False, поскольку список nums содержит четыре элемента (длина 4), поэтому цикл останавливается.
Если мы проверим значение списка nums после завершения процесса, то увидим следующее:
Именно то, что мы и ожидали, цикл while остановился, когда условие len(nums) было оценено как False .
Теперь вы знаете, как циклы while работают за кулисами, и видели несколько практических примеров, так что давайте углубимся в ключевой элемент циклов while: условие.
🔹 Советы по условиям в циклах While
Прежде чем вы начнете работать с циклами while, вы должны знать, что условие цикла играет центральную роль в функциональности и выводе цикла while.
Вы должны быть очень осторожны с оператором сравнения, который вы выбираете, потому что это очень распространенный источник ошибок.
Например, распространенные ошибки включают:
- Использование (меньше чем) вместо (меньше или равно) (или наоборот).
- Использование > (больше) вместо >= (больше или равно) (или наоборот).
Это может повлиять на количество итераций цикла и даже на его вывод.
Давайте рассмотрим пример:
Если мы напишем этот цикл while с условием i :
Мы видим этот вывод при выполнении кода:
Цикл завершает три итерации и останавливается, когда i становится равным 9 .
В этой таблице показано, что происходит за кулисами при выполнении кода:
- Перед первой итерацией цикла значение i равно 6, поэтому условие i равно True, и цикл запускается. Выводится значение i, а затем оно увеличивается на 1.
- На второй итерации цикла значение i равно 7, поэтому условие i равно True . Выполняется тело цикла, выводится значение i, а затем оно увеличивается на 1.
- В третьей итерации цикла значение i равно 8, поэтому условие i равно True . Выполняется тело цикла, выводится значение i, а затем оно увеличивается на 1.
- Условие снова проверяется перед началом четвертой итерации, но теперь значение i равно 9, поэтому i равно False, и цикл останавливается.
В данном случае мы использовали оператор сравнения в условии, но как вы думаете, что произойдет, если мы используем вместо него?
Мы видим этот вывод:
Цикл завершает еще одну итерацию, потому что теперь мы используем оператор "меньше или равно", поэтому условие остается истинным, когда i равно 9.
В этой таблице показано, что происходит за кулисами:
Выполнено четыре итерации. Условие снова проверяется перед началом «пятой» итерации. В этот момент значение i равно 10 , поэтому условие i имеет значение False, и цикл останавливается.
🔸 Бесконечные циклы While
Теперь вы знаете, как работают циклы while, но как вы думаете, что произойдет, если условие цикла никогда не будет иметь значение False?
Что такое бесконечные циклы While?
Помните, что циклы while не обновляют переменные автоматически (мы делаем это явно в нашем коде). Таким образом, нет никакой гарантии, что цикл остановится, если мы не напишем необходимый код, чтобы сделать условие False в какой-то момент во время выполнения цикла.
Если мы этого не сделаем и условие всегда оценивается как True , у нас будет бесконечный цикл, который является циклом while, который работает бесконечно (теоретически).
Бесконечные циклы обычно являются результатом ошибки, но они также могут быть вызваны намеренно, когда мы хотим бесконечно повторять последовательность операторов, пока не будет найден оператор break.
Давайте рассмотрим эти два типа бесконечных циклов в приведенных ниже примерах.
💡 Совет. Ошибка – это ошибка в программе, приводящая к неправильным или неожиданным результатам.
Пример бесконечного цикла
Это пример непреднамеренного бесконечного цикла, вызванного ошибкой в программе:
Проанализируйте этот код.
Разве вы не заметили, что чего-то не хватает в теле цикла?
Значение переменной i никогда не обновляется (это всегда 5 ). Следовательно, условие i всегда истинно, и цикл никогда не останавливается.
Если мы запустим этот код, результатом будет "бесконечная" последовательность Hello, World! сообщений, потому что тело цикла print("Hello, World!") будет выполняться бесконечно.
Чтобы остановить программу, нам нужно вручную прервать цикл, нажав CTRL + C .
Когда мы это сделаем, мы увидим ошибку KeyboardInterrupt, похожую на эту:
Чтобы исправить этот цикл, нам нужно будет обновить значение i в теле цикла, чтобы убедиться, что условие i в конечном итоге оценивается как False .
Это одно из возможных решений, увеличивающее значение i на 2 на каждой итерации:
Отлично. Теперь вы знаете, как исправить бесконечные циклы, вызванные ошибкой. Вам просто нужно написать код, чтобы гарантировать, что условие в конечном итоге будет оцениваться как False .
Давайте рассмотрим преднамеренные бесконечные циклы и то, как они работают.
🔹 Как создать бесконечный цикл с помощью While True
Мы можем сгенерировать бесконечный цикл намеренно, используя while True . В этом случае цикл будет выполняться бесконечно, пока процесс не будет остановлен внешним вмешательством ( CTRL + C ) или пока не будет найдена инструкция break (вы узнаете больше о break чуть позже).
Это основной синтаксис:
Вместо того, чтобы писать условие после ключевого слова while, мы просто пишем непосредственно значение истинности, чтобы указать, что условие всегда будет иметь значение True .
Вот пример:
Цикл выполняется до тех пор, пока не будет нажато CTRL + C, но в Python также есть оператор break, который мы можем использовать непосредственно в нашем коде, чтобы остановить этот тип цикла.
Инструкция break
Этот оператор используется для немедленной остановки цикла. Вы должны думать об этом как о красном «знаке остановки», который вы можете использовать в своем коде, чтобы лучше контролировать поведение цикла.
Эта диаграмма иллюстрирует основную логику оператора break:
Оператор break
Это основная логика оператора break:
- Цикл while запускается, только если условие оценивается как True .
- Если в любой момент выполнения цикла обнаруживается оператор break, цикл немедленно останавливается.
- В противном случае, если разрыв не найден, цикл продолжает свое обычное выполнение и останавливается, когда условие оценивается как False .
Мы можем использовать break, чтобы остановить цикл while, когда условие выполняется в определенной точке его выполнения, поэтому обычно вы найдете его в условном операторе, например:
Это немедленно останавливает цикл, если условие истинно .
💡 Совет: вы можете (теоретически) написать оператор break в любом месте тела цикла. Это не обязательно должно быть частью условия, но мы обычно используем его, чтобы остановить цикл, когда заданное условие истинно .
Здесь у нас есть пример прерывания цикла while True:
Давайте посмотрим на это подробнее:
Первая строка определяет цикл while True, который будет выполняться бесконечно, пока не будет найден оператор break (или пока он не будет прерван нажатием CTRL + C ).
Вторая строка запрашивает ввод данных пользователем. Этот ввод преобразуется в целое число и присваивается переменной user_input .
Третья строка проверяет, является ли ввод нечетным.
Если это так, выводится сообщение Это число нечетное, и оператор break немедленно останавливает цикл.
В противном случае, если ввод четный, будет напечатано сообщение Это число четное, и цикл начнется снова.
Цикл будет выполняться бесконечно, пока не будет введено нечетное целое число, потому что это единственный способ найти оператор break.
Здесь у нас есть пример пользовательского ввода:
🔸 Резюме
- Циклы в то время как представляют собой программные структуры, используемые для повторения последовательности операторов, пока условие имеет значение True . Они останавливаются, когда условие оценивается как False .
- Когда вы пишете цикл while, вам нужно внести необходимые изменения в свой код, чтобы убедиться, что цикл в конечном итоге остановится.
- Бесконечный цикл — это цикл, который выполняется бесконечно и останавливается только при внешнем вмешательстве или при обнаружении оператора break.
- Вы можете остановить бесконечный цикл, нажав CTRL + C .
- Вы можете намеренно создать бесконечный цикл с помощью while True .
- С помощью оператора break можно немедленно остановить цикл while.
Я очень надеюсь, что моя статья вам понравилась и оказалась полезной. Теперь вы знаете, как работать с циклами While в Python.
Следуйте за мной в Твиттере @EstefaniaCassN, и если вы хотите узнать больше об этой теме, ознакомьтесь с моим онлайн-курсом Python Loops and Looping Techniques: Beginner to Advanced.
Читайте также: