Циклы в python: как работать с while и for

# Упражнения

  1. Напишите программу, которая:

    • просит ввести число,
    • проверяет возможность преобразовать введенные данные в число,
    • преобразовывает значение в число и выводит число в консоль.

    В программе должны быть определены следующие четыре функции:

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

    В основной ветке программы вызовите первую функцию. То, что она вернула, передайте во вторую функцию. Если вторая функция вернула , то те же данные (из первой функции) передайте в третью функцию, а возвращенное третьей функцией значение – в четвертую.

  2. Напишите преобразователь римских цифр (I, II, …, X) в арабские (1, 2, …, 10):

    • в консоли просят ввести римское число;
    • функция принимает на вход число, проверяет является ли введенное значение римской цифрой и возвращает — если является или — если нет;
    • функция принимает на вход число, преобразует римскую цифру в целое число и возвращает полученное число.
    • вывести ответ в консоль.
  3. Напишите программу преобразования арабских целых чисел от 1 до 200 в римские.

  4. Напишите программу калькулятор для римских цифр, с операциями сложения и вычитания. Программа должна уметь работать с цифрами от I до L:

    • программа в консоли просит ввести пример вида: «XII + IV»;
    • функция принимает на вход пример в текстовом виде, проверяет корректность введенного примера, возвращает , если пример корректный;
    • функция принимает на вход пример в текстовом виде, преобразует его в список и возвращает его;
    • функция принимает на вход число, проверяет является ли введенное значение римской цифрой и возвращает — если является или — если нет;
    • функция принимает на вход римское число. Преобразует римское число в целое арабское число, и возвращает значение;
    • функция принимает на вход пример в виде списка , и возвращает пример в виде списка . Функция должна использовать функции и .
    • функция принимает на вход пример в виде списка , решает его и возвращает ответ в виде арабского числа ;
    • функция принимает на вход целое число. Преобразует число в римское число, и возвращает значение;
    • ответ выводиться в консоль.

    Проверьте правильность работы программы с правильными примерами:

    • II + XIV = XVI
    • XVII — XIV = III
    • LI — xx + v = XXXVI
    • i+X-v+xx = XXVI
    • ix — x + xL — xv = XXIV

    Проверьте корректность отработки неправильных примеров:

    • XX + = Error
    • -i = Error
    • VV + XX = Error
    • IIII — + X = Error
    • I + X — = Error

1.2. Как прервать цикл while на Python.

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

prompt = «Введите любое слово, и оно будет выведено наоборот»
prompt += «Если надоело введите команду ‘стоп’.»
message = »while message != «стоп»:
    message = input(prompt)    
     message != «стоп»:
        print(message)
    :
        print(«Программа завершена»)

В начале создаем сообщение prompt (посказку) которое объясняет пользователю что за программа и как ее можно завершить. Затем создается переменная message и ей присваивается пустое значение

Важно переменную message определить до запуска цикла, присвоить ей можно любое значение или пустую строку.  При запуске цикла while идет проверка совпадает ли значение message с условием продолжения цикла. При каждом выполнение цикла на экран выводятся правила цикла и условия его завершения

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

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.python лучший язык программированияяинавориммаргорп кызя йишчул nohtyp

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.123456789987654321

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.стопПрограмма завершена

Пока пользователь не введет слово «стоп», цикл будет начинаться заново.

Цикл for внутри цикла for — или просто вложенный цикл for

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

Предположим, что есть 9 сериалов в трех категориях: комедии, мультфильмы и драмы. Они представлены во вложенном списке Python («списки в списке»):

Необходимо посчитать символы в этих названиях и вывести результаты один за одним на экране в таком формате:

Как это можно сделать? Поскольку в основном списке есть три списка, чтобы получить их названия нужно перебрать элементы . Это нужно сделать и в основном списке, и в каждом вложенном:

Циклы for в Python может быть сложно понять вначале, а с вложенными циклами все еще сложнее. Поэтому чтобы разобраться с тем, что происходит, нужно взять ручку и бумагу и попробовать воспроизвести скрипт так, будто вы компьютер — пройти через каждый шаг и выписать результаты.

И еще кое-что:Синтаксис! Правила те же, что были при изучении простых циклов for

Единственное, на чем важно сделать акцент — отступы. Только используя корректные отступы в Python, вы сможете сообщить языку, в каком именно блоке цикла (внешнем или внутреннем) нужно применить тот или иной код

Попробуйте сделать следующее и обнаружить отличия в этих примерах:

Инструкции break и continue

Оператор break используется для выхода из цикла Python — прерывает его досрочно. Так, если во время выполнения кода, программа натыкается на break, то она сразу прекращает цикл и выходит из него, минуя else. Это необходимо, например, если при выполнении инструкций была обнаружена ошибка, и дальнейшая работа бессмысленна. Посмотрим на пример его применения:

while True: name = input(‘Введите имя:’) if name == ‘хватит’: break print(‘Привет’, имя)

Его реализация будет выглядеть так:

Введите имя: Ирина Привет Ирина Введите имя: Алексей Привет Алексей Введите имя: хватит

После этого выполнение программы будет прервано.

Другая инструкция, которая может менять цикл, — это continue. Если она указана внутри кода, то все оставшиеся инструкции до конца цикла пропускаются и начинается следующая итерация.

В целом, не следует слишком увлекаться использованием этих инструкций.

Как выполнить код после завершения цикла используя оператор else?

Циклы for и while могут иметь условие else.

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

Пример условия else в цикле for:

Пример условия else в цикле while:

Условие else не выполняется, если цикл завершается принудительно (например, с помощью оператора break или путем вызова исключения):

Зачем использовать конструкцию for/while … else?

Частой задачей на использование конструкции for … else является реализация поиска, например:

Для простоты восприятия, можно читать эту конструкцию как «if not break» или «if not found».

Итерация по объектам range()

— это встроенная функция Python и она используется почти всегда только в циклах for. Но для чего? Если говорить простым языком — она генерирует список чисел. Вот как это работает:

Она принимает три аргумента:

  • the first element: первый элемент диапазона
  • the last element: можно было бы предположить, что это последний элемент диапазона, но это не так. На самом деле здесь определяется элемент, который будет идти после последнего. Если ввести 10, то диапазон будет от 0 до 9. Если 11 — от 0 до 10 и так далее.
  • the step: это разница между элементами диапазона. Если это 2, то будет выводиться только каждый второй элемент.

Можете теперь угадать, каким будет результат диапазона сверху?

Вот он:

Зачем нужна ? В двух случаях:

  1. Необходимо перебрать числа. Например, нужно возвести в куб нечетные числа между 1 и 9. Без проблем:
  2. Необходимо перебрать список, сохранив индексы элементов.

    В этом случае — это индекс, а элементами списка будут .

В любом случае, упростит работу с .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector