итерация

  1. 5,1 Обновление переменных
  2. 5,2 В то время как заявление
  3. 5,3 Бесконечные петли
  4. 5,4 «Бесконечные петли» и разрыв
  5. 5,5 Завершение итераций продолжением
  6. 5,6 Определенные циклы, использующиеся для
  7. 5,7 Петли
  8. 5.7.1 Подсчет и суммирование циклов
  9. 5.7.2 Максимальные и минимальные петли
  10. 5,8 отладка
  11. 5,9 глоссарий
  12. 5,10 упражнения

5,1 Обновление переменных

Распространенным шаблоном в операторах присваивания является оператор присваивания, который обновляет переменную, где новое значение переменной зависит от старого. x = x + 1 Это означает «получить текущее значение x, добавить единицу, а затем обновить x новым значением».
Если вы попытаетесь обновить переменную, которая не существует, вы получите ошибку, потому что Python оценивает правую сторону перед тем, как присвоить значение x: >>> x = x + 1 NameError: name 'x' не определено ранее Вы можете обновить переменную, вы должны инициализировать ее, обычно с помощью простого присваивания:
>>> x = 0 >>> x = x + 1 Обновление переменной путем добавления 1 называется приращением ; вычитание 1 называется декрементом .

5,2 В то время как заявление

Компьютеры часто используются для автоматизации повторяющихся задач. Повторять одинаковые или похожие задачи без ошибок - это то, что компьютеры делают хорошо, а люди - плохо. Поскольку итерация очень распространена, Python предоставляет несколько языковых возможностей, чтобы упростить ее.
Одной из форм итерации в Python является оператор while. Вот простая программа, которая отсчитывает от пяти до «Blastoff!». n = 5, а n> 0: вывести n n = n-1, вывести «Blastoff!» Вы можете почти прочитать заявление while, как если бы оно было английским. Это означает: «Пока n больше 0, отобразите значение n, а затем уменьшите значение n на 1. Когда вы доберетесь до 0, выйдите из оператора while и отобразите слово Blastoff!»

Более формально, вот последовательность выполнения оператора while:

  1. Оцените состояние, получая True или False.
  2. Если условие ложно, выйдите из оператора while и продолжите выполнение со следующего оператора.
  3. Если условие истинно, выполнить тело и затем вернуться к шагу 1.

Этот тип потока называется циклом, потому что третий шаг возвращается к вершине. Каждый раз, когда мы выполняем тело цикла, мы называем это итерацией . Для вышеприведенного цикла мы бы сказали: «У него было пять итераций», что означает, что тело цикла было выполнено пять раз.

Тело цикла должно изменить значение одной или нескольких переменных, чтобы в конечном итоге условие стало ложным и цикл завершился. Мы вызываем переменную, которая изменяется каждый раз, когда цикл выполняется, и контролирует, когда цикл завершает переменную итерации . Если переменная итерации отсутствует, цикл будет повторяться вечно, что приведет к бесконечному циклу .

5,3 Бесконечные петли

Бесконечный источник удовольствия для программистов - это наблюдение, что указание на шампунь "Lather, rinse, repeat" является бесконечным циклом, потому что нет переменной итерации, сообщающей вам, сколько раз выполнить цикл.

В случае обратного отсчета мы можем доказать, что цикл завершается, потому что мы знаем, что значение n конечно, и мы можем видеть, что значение n становится меньше с каждым циклом, поэтому в итоге мы должны добраться до 0. В других случаях цикл, очевидно, бесконечен, потому что у него вообще нет итерационной переменной.

5,4 «Бесконечные петли» и разрыв

Иногда вы не знаете, что пора заканчивать цикл, пока вы не пройдете половину тела. В этом случае вы можете специально написать бесконечный цикл, а затем использовать оператор break, чтобы выйти из цикла.
Этот цикл, очевидно, является бесконечным циклом, потому что логическое выражение в операторе while - это просто логическая константа True: n = 10, а True: print n, n = n - 1 print 'Done!' Если вы допустите ошибку и запустите этот код, вы быстро узнаете, как остановить запущенный процесс Python в вашей системе, или узнаете, где находится кнопка отключения питания на вашем компьютере. Эта программа будет работать вечно или до тех пор, пока не разрядится ваша батарея, потому что логическое выражение в верхней части цикла всегда истинно в силу того факта, что выражение является постоянным значением True.
Хотя это нефункциональный бесконечный цикл, мы все же можем использовать этот шаблон для создания полезных циклов, если мы аккуратно добавляем код в тело цикла, чтобы явно выйти из цикла, используя break, когда мы достигли условия выхода.
Например, предположим, что вы хотите принимать данные от пользователя, пока они не введут «done». Вы можете написать: while True: line = raw_input ('>'), если line == 'done': прервать печать строки print 'Done!' Условие цикла - True, что всегда верно, поэтому цикл выполняется несколько раз, пока не будет достигнут оператор break.
Каждый раз, когда это происходит, он предлагает пользователю угловую скобку. Если пользователь вводит команду done, оператор break выходит из цикла. В противном случае программа повторяет все, что пользователь вводит, и возвращается к началу цикла. Вот пример прогона:> привет там привет там> готово закончено> готово Готово! Этот способ записи циклов while является обычным, потому что вы можете проверить условие в любом месте цикла (не только сверху), и вы можете выразить условие остановки положительно («остановите, когда это произойдет»), а не отрицательно («продолжайте до тех пор, пока случается. ").

5,5 Завершение итераций продолжением

Иногда вы находитесь в итерации цикла и хотите завершить текущую итерацию и сразу перейти к следующей итерации. В этом случае вы можете использовать оператор continue для перехода к следующей итерации без завершения тела цикла для текущей итерации.
Вот пример цикла, который копирует свои входные данные до тех пор, пока пользователь не введет «done», но обрабатывает строки, начинающиеся с символа хеш-функции, как строки, которые не нужно печатать (вроде как комментарии Python). в то время как True: line = raw_input ('>'), если line [0] == '#': продолжить, если line == 'done': прервать печать строки print 'Done!' Вот пример запуска этой новой программы с добавлением продолжения. > привет там привет там> # не печатайте это> распечатайте это! распечатай это! > Готово Готово! Все строки печатаются, кроме той, которая начинается со знака хеша, потому что, когда выполняется continue, он завершает текущую итерацию и возвращается к оператору while, чтобы начать следующую итерацию, пропуская оператор печати.

5,6 Определенные циклы, использующиеся для

Иногда мы хотим перебрать ряд вещей, таких как список слов, строки в файле или список чисел. Когда у нас есть список вещей для прохождения цикла, мы можем создать определенный цикл, используя оператор for. Мы называем оператор while неопределенным циклом, потому что он просто зацикливается до тех пор, пока какое-то условие не станет ложным, тогда как цикл for проходит через известный набор элементов, поэтому он проходит столько итераций, сколько есть элементов в наборе.
Синтаксис цикла for аналогичен циклу while, в котором есть оператор for и тело цикла: friends = ['Joseph', 'Glenn', 'Sally'] для друга в друзьях: print 'Happy New Year: "Друг, печать" Готово! В терминах Python переменная friends - это список 1 из трех строк, и цикл for проходит по списку и выполняет тело один раз для каждой из трех строк в списке, что приводит к следующему выводу: С Новым годом: Джозеф С Новым годом: Гленн С Новым годом: Салли Готово! Перевод этого цикла for на английский язык не такой прямой, как while, но если вы думаете о друзьях как о наборе , он выглядит так: «Выполните инструкции в теле цикла for один раз для каждого друга в наборе с именем friends. ».
Глядя на цикл for, for и in являются зарезервированными ключевыми словами Python, а friend и friends являются переменными.
для друга в друзьях :
печать «С новым годом», друг
В частности, друг является итерационной переменной для цикла for. Переменная friend изменяется для каждой итерации цикла и управляет завершением цикла for. Переменная итерации последовательно проходит через три строки, хранящиеся в переменной друзей.

5,7 Петли

Часто мы используем цикл for или while для просмотра списка элементов или содержимого файла, и мы ищем что-то, такое как наибольшее или наименьшее значение данных, которые мы просматриваем.
Эти циклы обычно создаются:

  • Инициализация одной или нескольких переменных перед началом цикла.
  • Выполнение некоторых вычислений для каждого элемента в теле цикла, возможно изменение переменных в теле цикла.
  • Глядя на результирующие переменные, когда цикл завершается.

Мы будем использовать список чисел, чтобы продемонстрировать концепции и конструкцию этих шаблонов цикла.

5.7.1 Подсчет и суммирование циклов

Например, чтобы подсчитать количество элементов в списке, мы должны написать следующее для цикла: count = 0 для itervar в [3, 41, 12, 9, 74, 15]: count = count + 1 print 'Count: ', count Мы устанавливаем переменную count в ноль перед началом цикла, затем мы записываем цикл for для запуска списка чисел. Наша итерационная переменная называется itervar, и, хотя мы не используем itervar в цикле, она контролирует цикл и заставляет тело цикла выполняться один раз для каждого из значений в списке.
В теле цикла мы добавляем единицу к текущему значению count для каждого из значений в списке. Во время выполнения цикла значение count - это число значений, которые мы видели «до сих пор».
Как только цикл завершается, значением count является общее количество элементов. Общее число «падает на колени» в конце цикла. Мы строим цикл так, чтобы у нас было то, что мы хотим, когда цикл завершится.
Другой аналогичный цикл, который вычисляет сумму набора чисел, выглядит следующим образом: total = 0 для itervar в [3, 41, 12, 9, 74, 15]: total = total + itervar print 'Total:', total В этом Цикл мы используем переменную итерации . Вместо простого добавления единицы к счетчику, как в предыдущем цикле, мы добавляем фактическое число (3, 41, 12 и т. Д.) К промежуточному итогу во время каждой итерации цикла. Если вы думаете о переменной total, она содержит «промежуточную сумму значений до сих пор». Таким образом, перед началом цикла итоговое значение равно нулю, потому что мы еще не видели никаких значений, во время итогового значения цикла - это промежуточное итоговое значение, а в конце итогового значения цикла - общее итоговое значение всех значений в списке.
По мере выполнения цикла total накапливает сумму элементов; переменная, используемая таким образом, иногда называется аккумулятором .
Ни цикл подсчета, ни цикл суммирования не особенно полезны на практике, поскольку существуют встроенные функции len () и sum (), которые вычисляют количество элементов в списке и общее количество элементов в списке соответственно.

5.7.2 Максимальные и минимальные петли

Чтобы найти наибольшее значение в списке или последовательности, мы строим следующий цикл: large = None. Print 'Before:', самый большой для itervar в [3, 41, 12, 9, 74, 15]: если самым большим является None или itervar > наибольший: наибольший = itervar print 'Цикл:', итервар, наибольший вывод 'Наибольшее:', наибольший При выполнении программы вывод будет следующим: До: Нет Цикл: 3 3 Цикл: 41 41 Цикл: 12 41 Цикл: 9 41 Цикл: 74 74 Цикл: 15 74 Наибольший: 74 Наибольшую переменную лучше всего рассматривать как «наибольшее значение, которое мы видели до сих пор». Перед циклом мы устанавливаем наибольшее значение для константы None. None - это специальное постоянное значение, которое мы можем сохранить в переменной, чтобы пометить переменную как «пустую».
Перед началом цикла самое большое значение, которое мы видели, это None, поскольку мы еще не видели никаких значений. Во время выполнения цикла, если самым большим является None, то мы принимаем первое значение, которое мы видим как самое большое на данный момент. Вы можете увидеть в первой итерации, когда значение itervar равно 3, так как самым большим является None, мы сразу же установили самое большое равным 3.
После первой итерации самое большое больше не равно None, поэтому вторая часть составного логического выражения, которая проверяет itervar> Самый большой, запускается только тогда, когда мы видим значение, которое больше, чем «самое большое на данный момент». Когда мы видим новое «еще большее» значение, мы принимаем это новое значение за самое большое. В выводе программы вы можете видеть, что наибольший прогресс составляет от 3 до 41 до 74.
В конце цикла мы отсканировали все значения, и самая большая переменная теперь содержит самое большое значение в списке.
Чтобы вычислить наименьшее число, код очень похож с одним небольшим изменением: smalllest = Нет. Выведите «Before:», наименьшее для itervar в [3, 41, 12, 9, 74, 15]: если наименьшее - None или itervar < наименьший: наименьший = itervar print 'Loop:', itervar, наименьший отпечаток 'Smallest:', наименьший Опять наименьший - это "наименьший пока" до, во время и после выполнения цикла. Когда цикл завершен, наименьшее содержит минимальное значение в списке.
Как и при подсчете и суммировании, встроенные функции max () и min () делают ненужной запись этих точных циклов.
Ниже приведена простая версия встроенной функции Python min (): def min (значения): наименьшее = Нет для значения в значениях: если наименьшее - это Нет или значение <наименьшее: наименьшее = значение возвращает наименьшее В версии функции Наименьший код, мы удалили все операторы печати так, чтобы они были эквивалентны функции min, которая уже встроена в Python.

5,8 отладка

Когда вы начнете писать большие программы, вы можете потратить больше времени на отладку. Чем больше кода, тем больше шансов совершить ошибку и больше мест для ошибок.

Один из способов сократить время отладки - это «отладка путем деления пополам». Например, если в вашей программе 100 строк, и вы проверяете их по одной, это займет 100 шагов.
Вместо этого попробуйте разбить проблему пополам. Посмотрите на середину программы или рядом с ней, для промежуточного значения, которое вы можете проверить. Добавьте оператор печати (или что-то еще, что имеет проверяемый эффект) и запустите программу.
Если проверка средней точки неверна, проблема должна быть в первой половине программы. Если это правильно, проблема во второй половине.
Каждый раз, когда вы выполняете такую ​​проверку, вы вдвое сокращаете количество строк, которые вы должны искать. После шести шагов (что намного меньше 100) вы получите одну или две строки кода, по крайней мере, в теории.
На практике не всегда понятно, что такое «середина программы», и не всегда возможно это проверить. Не имеет смысла считать линии и находить точную середину. Вместо этого подумайте о местах в программе, где могут быть ошибки, и местах, где легко поставить чек. Затем выберите место, где, по вашему мнению, шансы примерно одинаковы с ошибкой до или после проверки.

5,9 глоссарий

аккумулятор:

переменная, используемая в цикле для суммирования или накопления результата.
counter: переменная, используемая в цикле для подсчета того, сколько раз что-то происходило. Мы инициализируем счетчик на ноль, а затем увеличиваем его каждый раз, когда хотим что-то «посчитать».
декремент: обновление, которое уменьшает значение переменной.
initialize: присваивание, которое дает начальное значение переменной, которая будет обновлена.
инкремент: обновление, которое увеличивает значение переменной (часто на единицу).
бесконечный цикл: цикл, в котором условие завершения никогда не выполняется или для которого нет условия завершения.
итерация: повторное выполнение набора операторов с использованием либо рекурсивного вызова функции, либо цикла.

5,10 упражнения


Упражнение 1Напишите программу, которая многократно читает цифры, пока пользователь не введет «готово».Как только введено «выполнено», распечатайте сумму, количество и среднее число.Если пользователь вводит что-либо, кроме числа, определите его ошибку, используя try and кроме, распечатайте сообщение об ошибке и перейдите к следующему номеру.Введите число: 4 Введите число: 5 Введите число: неверные данные Неверный ввод Введите число: 7 Введите число: выполнено 16 3 5.33333333333

Упражнение 2 Напишите другую программу, которая запрашивает список чисел, как указано выше, и в конце выводит как максимальное, так и минимальное число вместо среднего.


1

Мы рассмотрим списки более подробно в следующей главе Мы рассмотрим списки более подробно в следующей главе

Похожие

Как быстро продать старую одежду?
Вы хотите быстро избавиться от старой одежды? Мы расскажем вам, как это сделать! Проверьте, находится ли одежда в хорошем состоянии. Прежде всего, предметы одежды, которые вы хотите продать, не должны иметь признаков использования, то есть пятен или дыр. Посмотрите внимательно на предмет одежды, от которого вы собираетесь избавиться. Обрежьте нити, и если где-то появились шарики, вы можете удалить их с помощью специального станка. Позаботьтесь
Скриншот на Android: как сделать на всех смартфонах
... для захвата большего количества контента («захват с прокруткой»). В некоторых моделях (например, Galaxy S9 и S9 Plus ) вы можете воспользоваться интеллектуальным выбором , доступным с помощью пролистывания и краевых панелей Tag. Таким образом, можно получить определенную область экрана, преобразовать ее в GIF или заблокировать
Как подключить мышь к Android без USB OTG-кабеля
Вы хотите управлять Android с помощью мыши, но у вас нет специального кабеля для подключения к телефону? Это не имеет значения - вы можете поделиться мышью, подключенной к компьютеру, и использовать ее для управления как Android, так и компьютером. Как это сделать? Мы привыкли показывать
Nexus 7 вновь: как последний планшет Google продержался за последний год
Если ты веришь слухи мы на пороге появления нового планшета Google Nexus - с почти 9-дюймовым планшетом. экран, полностью алюминиевый корпус, и HTC в качестве производителя. Идея, безусловно, интригует. Google установил партнерские отношения с различными компаниями, чтобы мы выделялись "чистый Android"
Как получить доступ к Windows Media Center из любого браузера
... изацию и наслаждение музыкой, видео, фильмами и другими медиафайлами невероятно легко - но если вы хотите слушать или смотреть удаленно, вам не повезло. Бесплатный, чудесно названный Remote Potato позволяет вам использовать этот носитель из любого веб-браузера. Вот как это использовать: Скачайте и установите Remote Potato Server на ваш компьютер с Windows , Во время установки вам нужно будет установить имя пользователя и
книга
«100 идей, как быть хорошими друг другу»
Норвегия вслед за Финляндией обвинила РФ в блокировании GPS во время учений НАТО
этот материал доступен на русском 23:59, 13 ноября 2018 мир 812 Норвежские военные утверждают, что россияне блокировали сигналы GPS в некоторых районах Норвегии во время учений НАТО.
Плавучие дома и дома на сваях
Элемент воды с начала Нидерландов был фактором, который сильно повлиял на образ жизни в этой стране. Вот почему Нидерланды - одна из стран, где жилые баржи стали настолько популярными. Дома на плечах и сооружения, построенные на сваях или бетонных платформах, восхищают туристов, в том числе Амстердам - ​​естественный способ использования окрестностей в Нидерландах. С одной стороны, намного дешевле, чем традиционные кирпичные дома, с другой стороны, этого
Чтение локальных файлов с помощью File API
Узнайте, как использовать локальную файловую систему для создания приложений, которые
Сколько времени занимает позиционирование сайта? Анализ на основе инструмента Арефа.
... иентов перед запуском службы позиционирования: «когда я на первом месте в поисковой системе?» Однако такие высокие должности зависят от многих факторов, и на этот вопрос невозможно дать однозначный ответ. Следующее исследование указывает на наиболее важные элементы для получения хороших результатов. От чего зависит положение страницы в гугле? Элементы, которые определяют положение страницы в первую очередь: качество, время и объем SEO деятельности конкурентов
Как играть в игры PlayStation 2 (PS2) на Mac с PCSX2
Реклама Пару лет назад Саймон взглянул на PCSX2

Комментарии

Могу ли я использовать это в то время как контролируется компанией сигнализации?
Могу ли я использовать это в то время как контролируется компанией сигнализации? Технически это возможно, но вам необходимо получить правильный CSID и номер учетной записи для вашей панели. Обратите внимание, что если вы сбросите настройки вашего номеронабирателя, это не позволит вашей компании-охраннику контролировать ваш дом. Могу ли я одновременно использовать другие радиоустройства дальнего радиуса действия? Шина панели ограничена одним устройством
Как начать спортивный блог - Вы когда-нибудь надеялись начать спортивный блог?
Как начать спортивный блог - Вы когда-нибудь надеялись начать спортивный блог? Спорт - великое американское прошлое. Мы занимаемся спортом, мы смотрим спорт, и мы говорим об этом - много. У некоторых людей даже есть желание писать о спорте. Можно хотеть охватить большую аудиторию, чем просто семья и друзья, с их взглядами на спорт, команды и игроков. Интернет и блогосфера предоставляют такую ​​возможность. Даже если вы не являетесь профессионально подготовленным спортивным писателем, вы можете
В этот момент вам может быть интересно, почему бы просто не заполнить polyfill (то есть создать shim для JavaScript) image-set () и назвать его днем?
В этот момент вам может быть интересно, почему бы просто не заполнить polyfill (то есть создать shim для JavaScript) image-set () и назвать его днем? Оказывается, реализовать CSS-функции довольно сложно. (Для подробного объяснения почему, см. Это обсуждение в стиле www ). Изображение Srcset Вот пример srcset: <img alt = "my awesome image" src = "banner.jpeg" srcset = "banner-HD.jpeg
Как я могу настроить одну виртуальную машину (виртуальную машину), чтобы видеть только внутреннюю сеть, но не интернет?
Как я могу настроить одну виртуальную машину (виртуальную машину), чтобы видеть только внутреннюю сеть, но не интернет? Любой из этих вопросов прозвенел с вами? Если так, пожалуйста, продолжайте читать. У меня есть ответы! Что такое виртуальный коммутатор Hyper-V? Hyper-V vSwitch является программно-определяемым, Слой-2 Ethernet-коммутатор сетевого трафика. Это позволяет администраторам подключать
Как это сделать?
Как это сделать? Мы привыкли показывать вам Как подключить мышь или клавиатуру к Android с помощью USB-кабеля OTG , К сожалению, для этого потребовалось подключить оборудование к телефону или планшету с помощью специального OTG-кабеля, поскольку только
Как насчет географии?
Как насчет географии? Названия континентов, стран, городов, рек, гор ... Дайте столицу страны и позвольте студентам искать нужную страну в поиске слов. При обучении языкам студенты могли искать перевод данного слова. Для самых маленьких, студенты могут искать записанное число, чтобы они знали, как написать число. Хотите знать, сколько слов нашли студенты? Просто пусть ваши ученики вернут вам свою работу и узнают.
Чтобы получить напоминание, просто нажмите «Как подключиться к этому серверу?
Чтобы получить напоминание, просто нажмите «Как подключиться к этому серверу?» в правом верхнем углу. Обратите внимание, что вам понадобится другой URL, если вы используете устройство, которое находится в той же сети, что и ваш Media Center, но это довольно просто. Введите ваше имя пользователя и пароль, и вы в. Я обнаружил, что интерфейс Silverlight проще и быстрее, чем базовый интерфейс HTML, но ваш пробег может варьироваться.
Но как насчет тебя?
Но как насчет тебя? У вас есть другой опыт и каким способом вы используете? Есть ли сопоставимые возможности для планшетов на Android?
Но можем ли мы сказать, что, возможно, Palm должен был запустить Pixi в качестве первого телефона с WebOS некоторое время назад?
Но можем ли мы сказать, что, возможно, Palm должен был запустить Pixi в качестве первого телефона с WebOS некоторое время назад? На рынке она бы немного выделялась на фоне однолетней технологии Apple и давала Palm больше времени, чтобы превратить Pre в победителя мирового уровня. [ Пальма ]
Как онлайн-транзакции появятся в моей выписке по сберегательным / текущим счетам?
Как онлайн-транзакции появятся в моей выписке по сберегательным / текущим счетам? Все транзакции появятся в вашей выписке и записях в банковской книжке (когда вы обновите свою банковскую книжку). Вы сможете проверить свои последние транзакции онлайн. Что произойдет, если на моем счету недостаточно средств? При попытке выполнить какие-либо переводы или платежи, превышающие остаток на вашем счете, будет отображено сообщение о том, что на вашем счете недостаточно средств
Стоит знать основы позиционирования и знать, сколько времени занимает позиционирование и через какое время вы можете ожидать первых результатов действий SEO?
Стоит знать основы позиционирования и знать, сколько времени занимает позиционирование и через какое время вы можете ожидать первых результатов действий SEO? Позиционирование позиции является основой для понимания долгосрочных результатов Если вы плохо знакомы с основами позиционирования, вам следует прочитать немного о том, как Google просматривает сайты . Роботы, работающие в поисковой системе, сканируют веб-сайты и оценивают их содержание, качество, количество

Вы хотите быстро избавиться от старой одежды?
Как это сделать?
Иентов перед запуском службы позиционирования: «когда я на первом месте в поисковой системе?
От чего зависит положение страницы в гугле?
Могу ли я использовать это в то время как контролируется компанией сигнализации?
Могу ли я одновременно использовать другие радиоустройства дальнего радиуса действия?
Как начать спортивный блог - Вы когда-нибудь надеялись начать спортивный блог?
В этот момент вам может быть интересно, почему бы просто не заполнить polyfill (то есть создать shim для JavaScript) image-set () и назвать его днем?
Как я могу настроить одну виртуальную машину (виртуальную машину), чтобы видеть только внутреннюю сеть, но не интернет?
Любой из этих вопросов прозвенел с вами?