Else if C++
При использовании языка программирования C++ случаются такие ситуации, когда вам нужны, например, противоречивые параметры. Если вы применяете какое-либо условие в соответствии со сценарием, вы продолжите с двумя или более вариантами. Если условие выполнено, это приведет к одной задаче; в противном случае во втором условии будет выполняться какая-то другая функция. Эта статья основана на операторе else-if языка программирования C++.
В программах на C++ оператор Else-if выполняется в виде блоков. Мы используем оператор else-if для выполнения одного блока исходного кода, удовлетворяющего определенным условиям, и другого кода, удовлетворяющего другим условиям. Оператор else-if называется условным оператором, поскольку он используется для проверки заданного условия, и в соответствии с этим условием выполняются циклы.
Содержание
- Разница между оператором if и оператором if-else
- Оператор Else-if в C++ и его работа
- Реализация else-if
- Пример 1
- Пример 2
- Пример 3
- Пример 4
- Заключение
Разница между оператором if и оператором if-else
Операторы if- и else-if одинаковы. Отличие только в операторе if заключается в том, что этот оператор выполняется только тогда, когда условие истинно, а когда условие ложно, программа автоматически останавливается. Принимая во внимание, что в операторе else-if оператор выполняется, когда он истинен, а если условие ложно, он выполняет оператор, написанный в другой части оператора.
Оператор Else-if в C++ и его работа
- Когда программа запускается, компилятор выполняет предыдущий код; при запуске условного оператора элемент управления сначала попадает в блок «если».
- Затем поток компилятора приводит его к условию.
- Затем проверяется заданное условие. Если условие выполнено и обеспечивает истинный ответ, переходите к следующему шагу. И если условие не выполнено, оно дает ложный результат.
- В соответствии с истинным условием выполняется блок if или код внутри тела if.
- С другой стороны, выполняется еще часть кода внутри него.
Компилятор завершает оператор else-if.
Реализация else-if
Используйте операционную систему Ubuntu Linux для выполнения оператора else-if на языке программирования C++. Для выполнения задачи нам понадобится текстовый редактор и исполняющий портал для выполнения исходного кода.
Пример 1
Теперь мы использовали простой пример для демонстрации работы оператора Else-if в языке C++. Мы найдем, является ли число, введенное пользователем, положительным или отрицательным числом. Поскольку эта программа имеет дело с взаимодействием с пользователем, нам нужно использовать библиотеку потока ввода-вывода в качестве заголовочного файла.
#include <iostream>
Затем в основной программе пользователю предлагается ввести любое число по своему выбору.
Здесь начинается работа оператора else-if. Во-первых, управление находится в части «если»; если число равно или больше 0, это означает, что пользователь ввел положительное число, поэтому оператор отображается, чтобы гарантировать ввод положительного числа. А если введенное число меньше 0, то управление перейдет к части else, и будет выведено сообщение о том, что введенное число отрицательное. Затем программа будет завершена.
Теперь выполним код. Для выполнения нам нужен компилятор для кодов C++. Итак, мы установим компилятор G++ в Ubuntu через терминал. «Код. C» — это имя файла.
$ g++ -o code code.c
$ ./code
При успешном выполнении кода появится сообщение. Затем мы сначала введем положительное число, чтобы выполнить блок if инструкции. А затем мы снова запустим программу для ввода отрицательного числа. В этом случае управление будет передано части else, а затем будет выведено сообщение о том, что введенное число отрицательное.
Пример 2
Второй пример работает по той же логике, что и первый пример. Но разница в том, что мы применили вложенный оператор if-else-if. В котором оператор if-else содержит внутри себя другой оператор if-else. После запуска библиотеки внутри основной программы номер берется у пользователя, а затем мы напрямую использовали оператор «если». Это проверяет, что если число не равно нулю, оно является либо положительным, либо отрицательным числом. Если это правда, управление перейдет к внутренней части оператора «если». Эта часть «если» проверяет, является ли введенное число положительным, то есть, если число больше 0, отображается сообщение о положительном числе. А если внутреннее условие ложно, то управление передается внутренней части else. Он только отображает сообщение о том, что число отрицательное.
Если внешнее условие if, описанное в начале, не выполняется, то управление передается внешнему условию else. Это покажет, что введенное число равно нулю.
Теперь выполните код в терминале. Сначала мы введем положительное число. Это означает, что выполняется внешняя часть «если» и внутренняя часть «если» и отображается сообщение соответственно. Строка за пределами вложенного оператора записывается, что показывает, что эта строка будет отображаться в каждой ситуации.
В следующий раз при выполнении мы ввели 0. Таким образом, будет работать внешняя часть else. В то время как при использовании отрицательного числа будет использоваться внешний «если», а затем внутренний «иначе» блок кода.
Пример 3
Вот еще один простой пример, который проверяет, является ли число четным или нечетным. Пользователь вводит число, а затем оператор «если» проверяет условие. Логика заключается в том, что модуль 2 должен быть равен нулю, чтобы число было объявлено четным. Если часть устраивает, выводится сообщение о том, что число четное. А на «остальной» части отображается сообщение о том, что число нечетное.
Выполните код, а затем введите случайным образом четные и нечетные числа, чтобы проверить работу оператора else-if.
Пример 4
В этом примере используется оператор else-if для проверки критериев приемлемости для целей голосования. Установленный критерий должен быть в возрасте 18 лет или старше.
Во-первых, мы получаем возраст от пользователя. Оператор if-else проверяет возраст. Если часть содержит условие, если введенное число больше или равно 18, то вывести сообщение о том, что пользователь имеет право. А другая часть показывает, что пользователь неразборчив.
Запустите файл исходного кода. Во-первых, мы ввели число с плавающей запятой; затем управление находится в «остальной» части.
При вводе 18 управление находится в части «если».
Заключение
«Else if C++» — это статья, содержащая базовые сведения об операторе if-else в языке программирования C++. Это условное утверждение, которое легко применимо во всех ситуациях. Работа с несколькими простыми примерами объясняется в статье. Все примеры реализованы в Ubuntu 20.04. Операторы if-else и вложенные операторы else-if играют важную роль в использовании более чем одного параметра в повседневной программе.
Большая энциклопедия школьника
Большая энциклопедия школьникауникальное издание, содержащее весь свод знаний, необходимый ученикам младших классов. Для детей, собирающихся в 1-й класс, она послужит незаменимым помощником для подготовки к школе. В этой энциклопедии ребенок сможет найти любую интересующую его информацию, в понятном и простом для него изложении. Вы подбираете слова и определения для простых вещей, которые надо объяснить ребенку? Сомневаетесь в формулировках? Просто возьмите «Большую энциклопедию школьника» и найдите нужный ответ вместе с малышом!
Математика в стихах
Развитие речи
Азбука в картинках
Игры на развитие внимания
Как правильно выбрать школу
Ваш ребенок левша
Как готовить домашнее задание
Контрольные и экзамены
Ребенок не хочет учить буквы Ребенок не хочет учить буквы — Понимаете, ведь надо что-то делать! — с тревогой говорила мне полная, хорошо одетая дама, едва умещающаяся на стуле. Ее ноги в аккуратных лодочках были плотно сжаты (юбка до середины колена казалась слегка коротковатой для такой монументальной фигуры), руки сложены на коленях. — Ей же на тот год в школу, все ее сверстники уже читают, а она даже буквы … | Past continuous passive Страдательный залог образуется с помощью вспомогательного глагола ‘to be’. Страдательный залог глагола ‘to repair’ в группе ‘continuous’ : To be repaired = Быть исправленным. The road is being repaired = Дорогу чинят. The road is not being repaired = Дорогу не чинят. Is the road being repaired? = Чинят ли дорогу? The road was being repaired = Дорогу чинили. The road was not being repaired = Дорогу не чинили. Was the road being repaired? = Чинили ли дорогу? Страдательный … |
Определение формулы органического вещества по его молярной массе Задание: Определить формулу углеводорода, если его молярная масса равна 78 г. № п/п Последовательность действий Выполнение действий 1. Записать общую формулу углеводорода. Общая формула углеводорода СхНу 2. Найти молярную массу углеводорода в общем виде. М(СхНу)=12х +у 3. Приравнять найденное в общем виде значение молярной массы к данному в … | У У ЗВУК (У). 1) Удобная буква! Удобно в ней то, Что можно на букву Повесить пальто. У – сучок, В любом лесу Ты увидишь букву У. 2) ФОНЕТИЧЕСКАЯ ЗАРЯДКА. — Как воет волк! ( у – у – у ) 3) ЗАДАНИЯ. а) Подними руку, если услышишь звук (у): паук, цветок, лужа, диван, стол, стул, голуби, курица. б) Где стоит (у)? Зубы, утка, наука, кенгуру … |
Можете ли вы поместить цикл for в оператор if? | Встроенный
Структуры потока управления, такие как операторы if и циклы for, являются мощными способами создания логичного, чистого и хорошо организованного кода в Python. Операторы If проверяют условие , а затем завершают действие, если проверка верна. Циклы for делают что-то для определенного количества элементов. Понимание списков — это способ Python создавать списки на лету с помощью одной строки кода.
Можно ли поместить цикл for в оператор If?
Цикл for выполняет задачу для определенного количества элементов, в то время как оператор if проверяет условие, а затем завершает действие в зависимости от того, является ли результат истинным или ложным. Вы можете поместить цикл for внутрь оператора if, используя технику, называемую вложенным потоком управления. Это процесс размещения управляющего оператора внутри другого управляющего оператора для выполнения действия.
Вы можете поместить операторы if внутрь для циклов. Например, вы можете просмотреть список, чтобы проверить, соответствуют ли элементы определенным условиям.
Структура операторов потока в Python состоит из двух частей. Одной из них является родительская строка оператора , которая определяет оператор с ключевыми словами «if» или «for» . Эта строка должна заканчиваться двоеточием . Второй является дочерним оператором , который содержит блок кода , который должен быть реализован, если условие истинно в случае оператора if, или реализован повторно в случае цикла for. Дочерние операторы должны иметь отступ в четыре пробела (или табуляции) в начале, иначе Произойдет ошибка отступа
.
родительский оператор: дочерний оператор или блок кода с отступом в 4 пробела
Что такое оператор if?
Это оператор, который начинается с ключевого слова «if», за которым следует условие, которое должно оцениваться как True
или False
, за которым следует двоеточие. Блок кода находится во второй строке и имеет отступ в начале с четырьмя пробелами. Это код, который будет реализован, если условие будет выполнено.
Если условие: кодовый блок
Обратите внимание, что в приведенном ниже примере, если условие ложно, ничего не будет отображаться. Нет ошибки.
, если 5 > 1: print('Верно, пять больше единицы') ### Результаты Правда, пять больше, чем один
Подробнее о PythonИспользование декораторов классов Python
Как написать оператор If-Else
Вы также можете включить оператор else с кодом, который будет реализован, если условие ложно.
Если условие: кодовый блок еще: кодовый блок
Ниже приведен пример оператора if-else.
, если «а» > «б»: распечатать('Верно') еще: print('Ложь, "а" не больше, чем "b"') #Результаты Ложь, "а" не больше, чем "б"
Как написать оператор If-Elif-Else
Вы можете проверить многие другие условия, используя elif, сокращение от else if. Финал else оценивается только тогда, когда никакое другое условие не выполняется. Еще 9Операторы 0007 и elif являются необязательными, и вы можете использовать одно без другого. Однако первый оператор if является обязательным.
возраст = 60 если возраст >= 55: print("Вы старший") Элиф возраст < 35: print("Ты молодой") еще: print("Вы среднего возраста") ### Результаты Вы старший
Что такое циклы For?
Цикл for вводит понятие итерации, когда процесс повторяется над несколькими элементами, например, в списке.
Цикл for содержит четыре компонента; a для ключевого слова , повторяемый , такой как список, содержащий элементы для цикла, имя переменной, которое будет представлять каждый элемент в списке, и блок кода , который будет выполняться для каждого элемента. Блок кода имеет отступ с четырьмя пробелами.
для variable_name в списке: кодовый блок
В двух приведенных ниже примерах показаны циклы for , которые перебирают список и затем печатают каждый элемент списка. Обратите внимание, что я включил печать приводит к той же строке для экономии места. Но на практике каждый элемент печатается на отдельной строке, потому что функция print()
по умолчанию добавляет новую строку в конце каждой печати.
для имени в ['sue', 'joe', 'gee']: печать (имя) для числа в [1,2,3,4,5]: печать (число + 1) ### Результаты Сью Джо Джи 2 3 4 5 6
Знакомство с Range()
Эта функция используется для создания списков целых чисел, которые можно использовать в циклах for. Вы можете создать список на диапазон (стоп)
, диапазон (старт, стоп)
или диапазон (старт, стоп, шаг)
. Start (необязательно)
определяет первое число в последовательности. По умолчанию ноль. Стоп (необязательно)
определяет, где заканчивается список, но этот номер не включен в список. Следовательно, последнее число в последовательности — это стоп минус один. Шаг (необязательный)
— это приращение для каждого числа в списке, значение по умолчанию равно единице. Например, range(10)
создает список от нуля до девяти, range(2,10)
создает список от двух до девяти и range(1,10,2)
создает список один, три, пять , семь, девять. Обратите внимание, что range()
создает только списки целых чисел и выдает TypeError
, если вы передаете ему что-либо, кроме целого числа.
для i в диапазоне (5): печать (я) для я в диапазоне (2, 9): печать (я) для я в диапазоне (0, 11, 2): печать (я) ### Результаты 0 1 2 3 4 2 3 4 5 6 7 8 0 2 4 6 8 10
Вы также можете перебирать списки в обратном порядке, используя reverse(list)
.
л = ['один','два', 'три'] для оборотов в обратном (л): печать (об.) для r в обратном порядке (диапазон (95,101)): печать (р) ### Результаты три, два, один 100 99 98 97 96 95Объяснение условных операторов и операторов цикла. | Видео: эдурека!
Как написать вложенный поток управления
Вы можете вложить операторы if внутрь для циклов. Например, вы можете просмотреть список, чтобы проверить, соответствуют ли элементы определенным условиям.
возраст = [78, 34, 21, 47, 9] для возраста в возрасте: если возраст >= 55: print("{} старший".format(age)) Элиф возраст < 35: print("{} это молодежь".format(age)) еще: print("{} среднего возраста".format(age))
Вы также можете иметь цикл for внутри другого цикла for. В этом примере для каждого элемента в первом списке мы перебираем все элементы во втором списке.
first_names = ['Джон', 'Сэм', 'Уилл'] last_names = ['белый', 'кузнец', 'александр'] для fname в first_names: для lname в last_names: распечатать (имя, имя) ### Результаты Джон Уайт Джон Смит Джон Александр Сэм Уайт Сэм Смит Сэм Александр будет белым Уилл Смит будет александр
Станьте экспертом по PythonИзучите мастер-класс по программированию на Python
Что такое списки?
Включение списков — это способ построения новых списков из существующих списков после применения к ним преобразований .
Каждое понимание списка имеет вывод, обычно, но не обязательно, преобразованный, и цикл for, заключенный в квадратные скобки. Мы используем квадратные скобки, потому что строим список.
[transformed_l для l в списке]
Чтобы создать набор или кортеж, заключите включение списка в {} или () соответственно.
Первый код ниже умножает каждый элемент в исходном списке на два, чтобы создать новый список. num*2
— желаемый результат, за которым следует цикл for . Второй код не преобразует элементы и выводит тот же список.
print([число*2 для числа в [2,4,6,8,10]]) print([число для числа в [2,4,6,8,10]]) ### Результат [4, 8, 12, 16, 20] [2, 4, 6, 8, 10]
Условная логика
Вы можете добавить оператор if в конце понимания списка , чтобы возвращать только те элементы, которые удовлетворяют определенному условию.
[вывод для l в списке, если условие]
Например, приведенный ниже код возвращает только те числа в списке, которые больше двух.
[l для l в списке, если l>2]
Этот код возвращает список людей ростом более 160 см.
высоты = [144, 180, 165, 120, 199] высокий = [h для h в высоте, если h > 160] печать (высокий) ### Результаты [180, 165, 199]
Вы можете иметь условные выходные данные с if-else в выходной части . Например, вы можете классифицировать элементы в списке, создав новый список, в котором будет указано, к какому классу принадлежит каждый элемент в исходном списке. В этом случае у вас должны быть ключевых слов if и else . В противном случае выдается SyntaxError
. Elif здесь не применяется.
[вывести, если условие еще выводится для l в списке]
Приведенный ниже код создает список от нуля до девяти. Затем мы определяем генератор списка, который выполняет итерацию по списку и выводит «четное» или «нечетное» для каждого числа в списке. Мы используем оператор по модулю ( %
), который возвращает остаток от деления. Число четное, если остаток от деления на два равен нулю. В противном случае число нечетное.
чисел = список (диапазон (10)) num_classes = ['четный', если num%2 == 0, иначе 'нечетный' для числа в числах] печать (число_классов) ### Результаты ['четный', 'нечетный', 'четный', 'нечетный', 'четный', 'нечетный', 'четный', 'нечетный', 'четный', 'нечетный']
Объяснение функций
Мы не можем говорить об управлении потоком без упоминания функций. Функции позволяют создавать повторно используемые блока кода. Они создают модульность, или отдельных блоков кода, которые выполняют определенные функции и сохраняют ваш код организованным.
Функции начинаются с ключевого слова def , затем нужного имени функции, круглых скобок () и двоеточия в конце родительского оператора. Необязательные аргументы могут быть указаны внутри круглых скобок, которые являются просто переменными, которые вы передаете в функцию. Следующая строка содержит блок кода с отступом в четыре пробела. У вас может быть необязательный возврат 9Оператор 0003 в последней строке блока кода, который будет результатом (выводом)
функции.
имя по умолчанию(): кодовый блок возвращаемое значение
Вы можете ввести имя функции, а затем заключить ее в круглые скобки. Если функция принимает аргументы, укажите их в круглых скобках при вызове.
имя()
Следующий код определяет функцию, которая при вызове печатает «Привет». Этот блок кода не имеет оператора возврата.
по умолчанию привет(): print('Привет') Привет() ### Результаты Всем привет
Приведенный ниже код определяет функцию, которая принимает целочисленное значение и возводит его в квадрат. У него есть оператор возврата.
по определению Square_number(число): вернуть число * число пять_в квадрате = квадратное_число (5) печать (пять_в квадрате) ### Результаты 25
Функция должна содержать блок кода. Это может быть просто оператор return, код , который что-то делает, или ключевое слово pass, которое ничего не делает. Если оператора возврата нет, функция вернет «Нет» по умолчанию.
4. Условные операторы и циклы — Начальный уровень программирования на Python для начинающих веб-разработчиков
4.1. Условное исполнение
4.2. Связанные условные операторы
Иногда существует более двух возможностей, и нам нужно более двух ветви. Один из способов выразить такое вычисление — это цепочка . условное :
если x < y: STATEMENTS_A Элиф х > у: STATEMENTS_B еще: STATEMENTS_C
Блок-схема этого связанного условного оператора
elif
является сокращением от else if
. Опять же, ровно одна ветвь будет
казнен. Нет ограничений на количество операторов elif
, а только
один (и необязательный) окончательный оператор else
разрешен, и он должен быть
последняя ветвь в операторе:
, если выбор == 'a': print("Вы выбрали 'а'.") Элиф выбор == 'б': print("Вы выбрали 'b'.") Элиф выбор == 'с': print("Вы выбрали 'c'.") еще: print("Неверный выбор")
Каждое условие проверяется по порядку. Если первое ложно, проверяется следующее, и так далее. Если одно из них истинно, выполняется соответствующая ветвь, и заявление заканчивается. Даже если верно несколько условий, верно только первое филиал выполняет.
4.3. Вложенные условные операторы
Одно условное выражение также может быть вложенным в другое. (это одна и та же тема опять-таки композицию!) Мы могли бы написать предыдущий пример следующим образом:
Блок-схема этого вложенного условного оператора
если х < у: STATEMENTS_A еще: если х > у: STATEMENTS_B еще: STATEMENTS_C
Внешнее условное предложение содержит две ветви. Вторая ветвь содержит
другой оператор if
, который имеет две собственные ветви. Эти две ветви
также может содержать условные операторы.
Хотя отступ операторов делает структуру очевидной, вложенные условные выражения очень быстро становятся трудными для чтения. В общем, это хорошо Идея избегать их, когда вы можете.
Логические операторы часто позволяют упростить вложенные условные операторы. заявления. Например, мы можем переписать следующий код, используя один Conditional:
if 0 < x: # предположим, что x здесь является целым числом если х < 10: print("x - положительная цифра")
Функция print
вызывается только в том случае, если мы проходим оба условия,
поэтому мы можем использовать оператор и
:
, если 0 < x и x < 10: print("x - положительная цифра")
Note
Python на самом деле допускает для этого краткую ручную форму, поэтому следующее будет также работает:
, если 0 < x < 10: print("x - положительная цифра")
4.
4. ИтерацияКомпьютеры часто используются для автоматизации повторяющихся задач. Повторение идентичных или подобные задачи без ошибок — это то, с чем компьютеры справляются хорошо и люди плохо работают.
Повторное выполнение набора операторов называется итерацией. Python имеет два оператора для
итерация - вместо оператора
, с которым мы познакомились в прошлой главе, и в то время как
заявление.
Прежде чем мы рассмотрим их, нам нужно рассмотреть несколько идей.
4.4.1. Reassignmnent
Как мы видели в разделе «Переменные являются переменными», это допустимо делать более одного присваивания одной и той же переменной. Новое задание заставляет существующую переменную ссылаться на новое значение (и перестает ссылаться на старое стоимость).
Брюс = 5 печать (брюс) Брюс = 7 печать (брюс)
Вывод этой программы:
, потому что при первом выводе bruce
его значение равно 5, а при втором
время, его значение равно 7.
Вот как выглядит переназначение на снимке состояния:
При переназначении особенно важно различать
оператор присваивания и логическое выражение, проверяющее равенство. Так как
Python использует токен равенства ( =
) для назначения,
заманчиво интерпретировать такое утверждение, как a = b
в качестве логического теста.
В отличие от математики, это не так! Помните, что токен Python для равенства
оператор ==
.
Также обратите внимание, что проверка на равенство симметрична, а присваивание — нет. За
например, если a == 7
, то 7 == a
. Но в Python оператор a = 7
является законным, а 7 = a
- нет.
Кроме того, в математике утверждение о равенстве всегда истинно. Если а ==
b
сейчас, потом a
всегда будет равно b
. В Python оператор присваивания
может сделать две переменные равными, но из-за возможности переназначения
они не должны оставаться такими:
a = 5 b = a # после выполнения этой строки a и b теперь равны a = 3 # после выполнения этой строки a и b больше не равны
Третья строка изменяет значение на
, но не меняет значение b
, так что они уже не равны.
Примечание
В некоторых языках программирования для назначения используется другой символ,
например <-
или :=
, чтобы избежать путаницы. Python решил использовать
токены =
для присваивания и ==
для равенства. это общий
выбор, также встречающийся в таких языках, как C, C++, Java, JavaScript и PHP,
хотя это немного сбивает с толку новых программистов.
4.4.2. Обновление переменных
При выполнении оператора присваивания правое выражение (т.е. выражение, которое следует за токеном назначения), оценивается первым. затем результат этой оценки записывается в переменную слева сторону, тем самым изменяя ее.
Одной из наиболее распространенных форм переназначения является обновление, когда новое значение переменной зависит от ее старого значения.
n = 5 п = 3 * п + 1
Вторая строка означает «получить текущее значение n, умножить его на три и добавить
один, и поместите ответ обратно в n в качестве его нового значения». Итак, после выполнения
двумя строками выше, n
будет иметь значение 16.
Если вы попытаетесь получить значение несуществующей переменной, вы получите ошибка:
>>> ш = х + 1 Traceback (последний последний вызов): Файл "<интерактивный ввод>", строка 1, в NameError: имя «x» не определено
Прежде чем вы сможете обновить переменную, вы должны инициализировать ее, обычно с помощью простое присвоение:
>>> x = 0 >>> х = х + 1
Второй оператор — обновление переменной путем прибавления к ней 1 — очень общий. Это называется приращением переменной; вычитание 1 называется уменьшение .
4.5. Цикл
for
Цикл for
обрабатывает каждый элемент в последовательности, поэтому он используется с Python
типы данных последовательности - строки, списки и кортежи.
Каждый элемент в свою очередь (повторно) присваивается переменной цикла, а тело выполняется цикл.
Общая форма цикла для
:
для LOOP_VARIABLE в ПОСЛЕДОВАТЕЛЬНОСТИ: ЗАЯВЛЕНИЯ
Это еще один пример составного оператора в Python.
операторы ветвления имеют заголовок, оканчивающийся двоеточием ( :
) и тело
состоящий из последовательности одного или нескольких операторов с одинаковым отступом
из заголовка.
Переменная цикла создается при выполнении оператора for
, поэтому вы не
нужно создать переменную до этого. Каждая итерация назначает цикл
переменной к следующему элементу в последовательности, а затем выполняет операторы
в теле. Оператор завершается, когда последний элемент последовательности
достиг.
Этот тип потока называется цикл , потому что он возвращается к началу после каждой итерации.
для друга в ['Марго', 'Кэтрин', 'Присила']: приглашение = "Привет " + друг + ". Пожалуйста, приходите на мою вечеринку в субботу!" печать (приглашение)
Прохождение всех элементов в последовательности называется обходом последовательность или обход .
Вы должны запустить этот пример, чтобы увидеть, что он делает.
Подсказка
Как и во всех примерах, которые вы видите в этой книге, вы должны попробовать этот код. сами и посмотрите, что он делает. Вы также должны попытаться предвидеть результаты, прежде чем вы это сделаете, и создайте свои собственные связанные примеры и попробуйте их также.
Если вы получите ожидаемые результаты, похлопайте себя по спине и двигайтесь на. Если нет, попытайтесь выяснить, почему. В этом суть научный метод, и он необходим, если вы хотите думать как компьютер программист.
Часто вам понадобится цикл, повторяющийся заданное количество раз, или перебирает заданную последовательность чисел. Функция диапазона пригодится для этого.
>>> для i в диапазоне (5): ... print('я сейчас:', я) ... я сейчас 0 мне сейчас 1 мне сейчас 2 мне сейчас 3 мне сейчас 4 >>>
4.6. Таблицы
Циклы хорошо подходят для создания таблиц. До компьютеров были легко доступны, людям приходилось вычислять логарифмы, синусы и косинусы, и другие математические функции вручную. Чтобы упростить задачу, математика книги содержали длинные таблицы со значениями этих функций. Создание таблицы были медленными и скучными, и они, как правило, были полны ошибок.
Когда на сцене появились компьютеры, одной из первых реакций было «Это отлично! Мы можем использовать компьютеры для создания таблиц, так что не будет ошибки». Это оказалось правдой (в основном), но недальновидной. Вскоре после этого, компьютеры и калькуляторы были настолько распространены, что таблицы устарели.
Ну, почти. Для некоторых операций компьютеры используют таблицы значений, чтобы получить приблизительный ответ, а затем выполнить вычисления, чтобы улучшить приближение. В некоторых случаях в базовых таблицах были ошибки, наиболее известные из которых в таблице чип процессора Intel Pentium, используемый для выполнения операций с плавающей запятой разделение.
Хотя таблица журнала уже не так полезна, как когда-то, она по-прежнему полезна. пример. Следующая программа выводит последовательность значений в левом столбце и 2 в степени этого значения в правом столбце:
для x в диапазоне (13): # Генерация чисел от 0 до 12 напечатать (х, '\ т', 2 ** х)
Использование символа табуляции ( '\t'
) обеспечивает хорошее выравнивание вывода.
0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9512 10 1024 11 2048 12 4096
4.7. Оператор
while
Общий синтаксис оператора while выглядит следующим образом:
while BOOLEAN_EXPRESSION: ЗАЯВЛЕНИЯ
Подобно операторам ветвления и циклу for
, оператор while
составной оператор, состоящий из заголовка и тела. Цикл в то время как
выполняется неизвестное количество раз, пока значение BOOLEAN EXPRESSION истинно.
Вот простой пример:
число = 0 prompt = "В чем смысл жизни, вселенной и всего остального?" в то время как число! = "42": число = ввод (подсказка)
Обратите внимание, что если в первой строке число
установлено на 42
, тело сообщения , в то время как оператор
вообще не будет выполняться.
Вот более сложный пример программы, демонстрирующий использование , а
заявление
имя = 'Харрисон' Guess = input("Итак, я думаю об имени человека. Попробуйте угадать его:") позиция = 0 в то время как угадать != имя и pos < len (имя): print("Нет, это не то! Подсказка: буква ", end='') print(pos + 1, "is", name[pos] + ".", end='') предположение = ввод ("Угадай еще раз:") позиция = позиция + 1 если pos == len(имя) и имя != предположение: print("Жаль, вы не смогли его получить. Имя было ", name + ".") еще: print("\nОтлично, вы поняли", pos + 1, "догадки!")
Последовательность выполнения оператора while
работает следующим образом:
Вычислить условие (
BOOLEAN EXPRESSION
), выдавFalse
илиВерно
.Если условие ложно, выйти из инструкции
while
и продолжить выполнение на следующем операторе.Если условие верно, выполнить каждый из
операторов
в теле и затем вернитесь к шагу 1.
Тело состоит из всех операторов под заголовком с тем же отступ.
Тело цикла должно изменить значение одной или нескольких переменных так, чтобы в конце концов условие становится ложным, и цикл завершается. В противном случае цикл будет повторяться вечно, что называется бесконечным циклом .
Бесконечным источником развлечения для программистов является наблюдение, что указания на шампунь, пену, полоскание, повторение - бесконечный цикл.
В этом случае мы можем доказать, что цикл завершается, потому что мы знаем, что
значение len(name)
конечно, и мы видим, что значение pos
увеличивается каждый раз в цикле, поэтому в конечном итоге он должен быть равен лен(имя)
. В других случаях это не так просто сказать.
Здесь вы заметите, что цикл while
больше подходит для вас —
программатор — чем эквивалент для цикла
. При использовании пока
loop нужно самостоятельно контролировать переменную цикла: присвоить ей начальное значение,
тест на завершение, а затем убедитесь, что вы изменили что-то в теле, чтобы
что цикл завершается.
4.8. Выбор между
для
и , в то время как
Так зачем иметь два вида цикла, если для
выглядит проще? Следующий пример показывает
случай, когда нам нужна дополнительная мощность, которую мы получаем от цикла , в то время как
.
Используйте цикл для
, если вы знаете, прежде чем начать цикл, максимальное количество
раз, когда вам нужно выполнить тело. Например, если вы пересекаете
список элементов, вы знаете, что максимальное количество итераций цикла вы можете
возможно, нужно «все элементы в списке». Или если вам нужно распечатать
Таблица умножения на 12, мы сразу знаем, сколько раз нужно будет выполнить цикл.
Таким образом, любая проблема, такая как «перебрать эту модель погоды для 1000 циклов» или «поиск
этот список слов», «найти все простые числа до 10000» предполагают, что для цикла
лучше всего.
В отличие от этого, если вам нужно повторять некоторые вычисления до тех пор, пока
условие выполняется, и вы не можете заранее рассчитать, когда это произойдет, так как
мы сделали в программе «Величайшее имя», вам понадобится цикл while
.
Мы называем первый случай определенной итерацией — у нас есть определенные границы для того, что нужно. Последний случай называется бесконечная итерация — мы не уверены, сколько итераций нам потребуется — мы даже не можем установить верхняя граница!
4.9. Отслеживание программы
Чтобы писать эффективные компьютерные программы, программист должен развить способность к отследить выполнение компьютерной программы. Трейсинг включает в себя «становление компьютер» и следуя за ходом выполнения через пример запуска программы, запись состояния всех переменных и любых выходных данных, которые программа генерирует после каждая инструкция выполняется.
Чтобы понять этот процесс, давайте проследим выполнение программы с Раздел операторов while.
В начале трассировки у нас есть локальная переменная, имя
с начальным
значение "Гаррисон"
. Пользователь вводит строку, которая хранится в
переменная, догадка
. Предположим, они вводят «Марибель»
. Следующая строка
создает переменную с именем pos
и присваивает ей начальное значение 0
.
Чтобы следить за всем этим, пока вы вручную трассируете программу, создайте заголовок столбца на лист бумаги для каждой переменной, созданной во время работы программы, и еще один для вывода. Наша трассировка пока будет выглядеть примерно так:
угадывание имени pos выход ---- ----- --- ------ 'Харрисон' 'Марибель' 0
Поскольку предположение != name and pos < len(name)
оценивается как True
(потратьте минуту, чтобы убедиться в этом), тело цикла выполняется.
Теперь пользователь увидит
Нет, это не так! Подсказка: буква 1 — «Н». Угадай еще раз:
Если пользователь введет Karen
на этот раз, pos
будет увеличено, предположение != имя и позиция < len(имя)
снова оценивается как True
, и наш
трассировка теперь будет выглядеть следующим образом:
имя угадать поз выход ---- ----- --- ------ 'Харрисон' 'Марибель' 0 Нет, это не то! Подсказка: буква 1 — «Н». Угадай еще раз: 'Гаррисон' 'Генри' 1 Нет, это не так! Подсказка: буква 2 — «а». Угадай еще раз:
Полная трассировка программы может дать что-то вроде этого:
вывод предположения имени ---- ----- --- ------ 'Харрисон' 'Марибель' 0 Нет, это не то! Подсказка: буква 1 — «Н». Угадай еще раз: 'Гаррисон' 'Генри' 1 Нет, это не так! Подсказка: буква 2 — «а». Угадай еще раз: 'Харрисон' 'Хаким' 2 Нет, это не так! Подсказка: буква 3 — «р». Угадай еще раз: 'Гаррисон' 'Гарольд' 3 Нет, это не так! Подсказка: буква 4 — «р». Угадай еще раз: 'Гаррисон' 'Гарри' 4 Нет, это не так! Подсказка: буква 5 — «i». Угадай еще раз: 'Harrison' 'Harrison' 5 Отлично, вы угадали за 6 попыток!
Трассировка может быть немного утомительной и подверженной ошибкам (вот почему мы заставляем компьютеры выполнять это в первую очередь!), но это важный навык для программиста иметь. Из трассировки мы можем многое узнать о том, как работает наш код.
4.11. Другой пример
в то время как
: Игра в угадайкуСледующая программа реализует простую игру в угадайку:
import random # Импорт случайного модуля number = random. randrange(1, 1000) # Получить случайное число от [1 до 1000) догадки = 0 угадай = int(input("Угадай мое число от 1 до 1000: ")) пока угадай != число: догадки += 1 если угадать > число: print(угадайте, "слишком высоко") Элиф угадать < число: print(угадайте, "слишком мало") предположение = int(input("Угадай еще раз:")) print("\n\nОтлично, вы поняли", догадки, "догадки!")
Эта программа использует математический закон трихотомии (данные реальные числа a и b, ровно одно из этих трех должно быть истинным: a > b, a < b или а == б).
4.14. Другой пример
вместо
Вот пример, который объединяет несколько вещей, которые мы узнали:
предложение = ввод('Пожалуйста, введите предложение:') нет_пробелов = '' на букву в предложении: если буква != ' ': no_spaces += буква print("Вы предлагаете с удаленными пробелами:") печать (без_пробелов)
Отследите эту программу и убедитесь, что вы уверены, что понимаете, как она работает.
4.15. Вложенные циклы для вложенных данных
Теперь мы придумаем еще более авантюрный список структурированных данных. В В этом случае у нас есть список студентов. У каждого ученика есть имя, которое составляет пару с другим списком предметов, на которые они зачислены:
студентов = [("Алехандро", ["CompSci", "Физика"]), ("Джастин", ["Математика", "CompSci", "Статистика"]), ("Ed", ["CompSci", "Бухгалтерский учет", "Экономика"]), ("Марго", ["InfSys", "Бухгалтерский учет", "Экономика", "CommLaw"]), ("Питер", ["Социология", "Экономика", "Право", "Статистика", "Музыка"]))]
Здесь мы присвоили список из пяти элементов переменной student
.
Давайте распечатаем имя каждого учащегося и количество предметов, которые они посещают.
for:
# вывести всех студентов с количеством их курсов. по (название, предметы) у учащихся: print(имя, "берет", len(предметы), "курсы")
Python отвечает следующим выводом:
Альхандро проходит 2 курса Джастин проходит 3 курса Эд проходит 4 курса Марго посещает 4 курса Питер проходит 5 курсов
Теперь мы хотели бы спросить, сколько студентов изучают CompSci. Это требует счетчик, и для каждого студента нам нужен второй цикл, который проверяет каждый из предметы по очереди:
# Подсчитайте, сколько студентов сдают CompSci счетчик = 0 по (название, предметы) у учащихся: for s в темах: # вложенный цикл! если s == "CompSci": счетчик += 1 print("Количество студентов, изучающих CompSci, равно", counter)
Количество студентов, изучающих CompSci, равно 3
Вам следует составить список ваших собственных данных, которые вас интересуют — возможно, список ваших компакт-дисков, каждый из которых содержит список названий песен на компакт-диске или список названия фильмов, каждое из которых содержит список кинозвезд, снявшихся в фильме. Ты Затем можно было бы задать такие вопросы, как «В каких фильмах снималась Анджелина Джоли?»
4.16. Включение списков
Включение списков — это синтаксическая конструкция, позволяющая создавать списки. создан из других списков с использованием компактного математического синтаксиса:
>>> числа = [1, 2, 3, 4] >>> [x**2 вместо x в цифрах] [1, 4, 9, 16] >>> [x**2 вместо x в цифрах, если x**2 > 8] [9, 16] >>> [(x, x**2, x**3) для x в цифрах] [(1, 1, 1), (2, 4, 8), (3, 9, 27), (4, 16, 64)] >>> files = ['bin', 'Данные', 'Рабочий стол', '. bashrc', '.ssh', '.vimrc'] >>> [имя вместо имени в файлах, если имя[0] != '.'] ['bin', 'Данные', 'Рабочий стол'] >>> буквы = ['а', 'б', 'с'] >>> [n * буква вместо n цифрами вместо буквы буквами] ['a', 'b', 'c', 'aa', 'bb', 'cc', 'aaa', 'bbb', 'ccc', 'aaaa', 'bbbb', 'cccc'] >>>
Общий синтаксис для выражения понимания списка:
[выражение для элемента 1 в последовательности 1 для элемента 2 в последовательности 2 ... для элемента x в последовательности, если условие]
Это выражение списка имеет тот же эффект, что и:
output_sequence = [] для элемента 1 в последовательности 1: для item2 в seq2: ... для itemx в seqx: если условие: output_sequence.append(выражение)
Как видите, понимание списка намного компактнее.
4.17. Глоссарий
- append
Для добавления новых данных в конец файла или другого объекта данных.
- блок
Группа последовательных операторов с одинаковым отступом.
- body
Блок операторов в составном операторе, следующий за заголовок.
- филиал
Один из возможных путей потока исполнения определяется условное исполнение.
- цепочка условных
Условная ветвь с более чем двумя возможными потоками выполнения. В Связанные условные операторы Python записываются с помощью
if ... elif ... else
заявления.- составной оператор
Оператор Python, состоящий из двух частей: заголовка и тела . заголовок начинается с ключевого слова и заканчивается двоеточием (
:
). Тело содержит ряд других операторов Python с одинаковым отступом количество.Note
Мы будем использовать стандарт Python из 4 пробелов для каждого уровня отступ.
- условие
Логическое выражение в условном операторе, определяющее, какое ветка выполнена.
- условный оператор
Оператор, управляющий потоком выполнения в зависимости от некоторых условие. В Python ключевые слова
if
,elif
иelse
используется для условных операторов.- counter
Переменная, используемая для подсчета чего-либо, обычно инициализируется нулем и увеличивается в теле цикла.
- курсор
Невидимый маркер, который отслеживает, где будет следующий символ. быть напечатаны.
- уменьшение
Уменьшение на 1.
- определенная итерация
Цикл, в котором у нас есть верхняя граница числа повторений тело будет казнено. Определенная итерация обычно лучше закодирована как
для цикла
.- разделитель
Последовательность из одного или нескольких символов, используемая для указания границы между отдельными частями текста.
- приращение
Как существительное, так и глагол, приращение означает увеличение на 1.
- бесконечный цикл
Цикл, в котором условие завершения никогда не выполняется.
- бесконечная итерация
Цикл, в котором нам просто нужно продолжать до тех пор, пока не будет выполнено какое-то условие. А
, тогда как для этого случая используется оператор
.- инициализация (переменной)
Инициализировать переменную означает присвоить ей начальное значение. Так как в Переменные Python не существуют, пока им не присвоены значения, они инициализируются при их создании. В других языках программирования это это не так, и переменные могут быть созданы без инициализированы, в этом случае у них либо дефолт, либо мусор ценности.
- итерация
Повторное выполнение набора операторов программирования.
- цикл
Оператор или группа операторов, которые выполняются многократно до тех пор, пока условие завершения выполнено.
- переменная цикла
Переменная, используемая как часть условия завершения цикла.
- вложенный цикл
Цикл внутри тела другого цикла.
- вложенность
Структура одной программы внутри другой, например, условный оператор внутри ветви другого условного оператора.
- новая строка
Специальный символ, который заставляет курсор перемещаться в начало следующая строка.
- приглашение
Визуальная подсказка, указывающая пользователю на ввод данных.
- переназначение
Выполнение более одного присвоения одной и той же переменной в течение выполнение программы.
- tab
Специальный символ, который заставляет курсор перемещаться на следующую позицию табуляции на текущей строке.
- трихотомия
Для любых действительных чисел a и b точно одно из следующих выполняются соотношения: a < b , a > b или a == b . Таким образом, когда вы можете установить, что два из отношений ложны, можно предположить, что оставшийся один верный.