Python да практикалық жұмыстар 2 бөлім. Негізгі алгоритмдер және олардың Python тілінде іске асырылуы



бет7/14
Дата08.12.2023
өлшемі0,54 Mb.
#135027
1   2   3   4   5   6   7   8   9   10   ...   14
ввод N
S=0 нц для i от 1 до N
ввод A[i]
S=S+A[i] кц
C=S/N вывод C
Здесь нц и кц обозначают, соответственно, начало и конец цикла, строка с нц является заголовком цикла. Как видно из текста, указываются начальное и конечное значение переменной цикла, которая обязательно должна быть целым числом. В приведённой здесь записи переменная цикла увеличивается на 1 при каждом повторении («шаг переменной цикла» равен 1). Если требуется шаг не равный 1, это указывается специально.
Тело цикла состоит из двух операторов — ввода очередного числа и прибавления этого числа к текущему значению суммы.
На Python можно написать практически то же самое (с учётом особенностей, связанных с использованием функции range()).
# ­*­ coding: utf­8 ­*­
#
N=input('Количество элементов: ') S=0 for i in range(N­1):
a=input('Введите число: ')
S=S+a
C=S/N
print 'Результат:',C
Поскольку диапазон чисел, формируемых функцией range(), начинается с 0, то верхней границей должно быть N­1. Поскольку массив хранить не надо, можно просто вводить числа и добавлять их к текущему значению суммы.
Тело цикла начинается после символа «:» и все операторы тела цикла в Python должны иметь одинаковый отступ от начала строки. Как только отступ исчезает, Python считает, что тело цикла закончилось.
А вот вариант решения этой же задачи на Python с использованием списка и методов списка.
# ­*­ coding: utf­8 ­*­
#
N=input('Количество элементов: ') S=0 lst=[] for i in range(N­1):
a=input('Введите число: ')
lst.append(a) C=sum(lst)/N print 'Результат:',C
В этом варианте формируется список, а сумма элементов списка вычисляется с помощью встроенной функции. Программа увеличилась на одну строку (создание пустого списка), но зато мы научились формировать список в цикле.
Задача 2. Определить, является ли введённая строка палиндромом («перевёртышем») типа ABBA, kazak и пр.
Постановка задачи: Требуется сравнивать попарно символы с начала и с конца строки S (первый и последний, второй и предпоследний и т.д.). Если в каждой такой паре символы одинаковы, строка является палиндромом. Соответственно, каждая проверка пары символов должна получить некоторый признак (flag ­ «флаг»), который будет равен 1, если символы в паре совпадают и 0, если не совпадают. Окончательный результат обработки строки получится как произведение всех значений «флагов». Если хотя бы один раз «флаг» оказался равен нулю, строка палиндромом не является и произведение всех «флагов» окажется равным 0. Количество пар не превышает половины длины строки L (точно равно половине длины для строк с чётным количеством символов и результат целочисленного деления длины строки на 2 для строк с нечётным количеством символов, поскольку «центральный» символ строки с нечётным количеством символов очевидно совпадает сам с собой).
Блок­схема алгоритма показана на рис. 12.

Рисунок 12. Блок­схема алгоритма определения палиндрома
Текст программы на «псевдоязыке»:


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   ...   14




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет