Интересный способ реализации циклов в ваших программах
В предыдущих статьях я обсуждал шаблоны программ для ввода данных, ввода, обработки и вывода данных, а также принятия решений в программах путем выбора из альтернатив. В этой статье я расскажу о шаблоне программы для написания программ, которые получают входные данные, а затем обрабатывают эти данные, прежде чем переходить к новым данным.
Этот шаблон называется Input One, Process One. Этот шаблон следует использовать, когда ваша программа не может получить все данные перед выполнением обработки или когда вы просто хотите, чтобы программа вводила и обрабатывала элементы данных по одному за раз.
Вы можете сравнить этот шаблон с более ранним шаблоном, который мы рассмотрели: Input, Process, Output. Этот шаблон используется, когда вы хотите получить все данные в своей программе перед выполнением какой-либо обработки и вывода. При использовании шаблона Input One, Process One вывод происходит на этапе обработки.
Шаблон Input One, Process One реализуется с помощью оператора цикла. Я продемонстрирую шаблон, используя оператор Python for
, а в отдельной статье, в которой обсуждается реализация другого шаблона, я расскажу о операторе while Python для реализации циклов.
Заявление for
Оператор for
представляет собой циклическую конструкцию, которая указывает программе повторить набор программных инструкций заданное количество раз. Существует несколько способов написания операторов for в Python. Я начну с того, что покажу вам один шаблон синтаксиса:
for var in range(start, end): do something
Этот шаблон синтаксиса использует встроенную функцию range
. Эта функция позволяет вам указать диапазон чисел, представляющих количество итераций (циклов или выполнений), которые вы хотите использовать с оператором for. Например, если я хочу, чтобы оператор for
повторялся десять раз, я могу использовать диапазон (1,11)
. Несмотря на то, что я хочу только десять итераций, я должен указать 11
в качестве конечной точки диапазона.
Теперь давайте посмотрим, как работает оператор for
. В этом первом примере печатаются числа от 1 до 10:
for i in range(1, 11): print(i)
Оператор for
принимает каждое значение диапазона (от 1 до 10) и присваивает его переменной i
. Затем выполняется оператор внутри for
, в результате чего значение i
выводится на экран.
Теперь, когда мы рассмотрели, как работает эта версия инструкции for
, давайте посмотрим, как использовать ее для реализации шаблона «Вход один, первый процесс».
Реализация шаблона Input One, Process One
Псевдокод для шаблона Input One, Process One записывается следующим образом:
Repeat the following steps: Input data Process the data
На практике количество итераций цикла часто известно заранее. Если это не так, следует использовать другой оператор цикла, оператор while
.
Теперь пришло время посмотреть на пример. В более ранней статье о шаблоне «Выбрать из альтернатив» я использовал пример, в котором числовому результату теста была присвоена буквенная оценка. Давайте используем этот пример, чтобы продемонстрировать, как использовать шаблон Input One, Process One.
В примере пользователю предлагается ввести пять числовых оценок с помощью оператора for. После того, как оценка введена, отображается буквенная оценка. Вот программа:
for i in range(1,6): numGrade = int(input("Enter the test grade: ")) if numGrade >= 90: print(numGrade,"is an A.") elif numGrade >= 80: print(numGrade,"is a B.") elif numGrade >= 70: print(numGrade,"is a C.") elif numGrade >= 60: print(numGrade,"is a D.") elif numGrade < 60: print(numGrade,"is a F.") else: print(numGrade,"is not a valid grade.")
Вот результат одного запуска программы:
Введите оценку за тест: 56
56 – F.
Введите оценку за тест: 78
78 – C.
Введите оценку за тест: 82
82 – a B.
Введите оценку за тест: 99
99 – A.
Введите оценку за тест: 66
66 – D.
Преобразование строки в верхний регистр
В качестве другого примера шаблона Input One, Process One давайте напишем программу, которая берет строку, состоящую из строчных букв, и преобразует ее в прописные буквы. Чтобы выполнить эту задачу, мы должны признать, что строку можно разбить на отдельные символы так же, как функция диапазона разбивает диапазон на отдельные числа.
Чтобы продемонстрировать, как строку можно разбить на отдельные символы, следующая программа берет строку и печатает каждый символ в отдельной строке:
for i in “hello”: print(i)
Эта короткая программа производит следующий вывод:
h
e
l
l
o
Теперь мы готовы написать программу для изменения строки из нижнего регистра в верхний. Однако сначала мне нужно познакомить вас с функцией, которая преобразует символ нижнего регистра в символ верхнего регистра — upper
.
Функция работает, присоединяя его к концу символа. При вызове функция возвращает символ в верхнем регистре. Вот пример использования оболочки Python:
>>> “a”.upper() ‘A’
Теперь мы готовы написать программу. Вот:
lowercase = input("Enter a string: ") for letter in lowercase: print(letter.upper(), end="")
Вот результат нескольких запусков этой программы:
Введите строку: hello
HELLO
Введите строку: hello world
HELLO WORLD
Введите строку: supercalifragiliciousexpealidocious
SUPERCALIFRAGILICIOUSEXPEALIDOCIOUS
Последние мысли
Шаблон Input One, Process One — это лишь один из нескольких шаблонов, в которых для реализации используется оператор цикла. Мы реализовали этот шаблон с помощью оператора for.
В следующей статье я представлю новый шаблон программы «Ввод и обработка до завершения» и познакомлю с другой важной конструкцией цикла в Python — оператором while.
Спасибо за прочтение. Пожалуйста, оставляйте свои комментарии и предложения.