Урок 10. Использование основных алгоритмических конструкций и вспомогательных алгоритмов для решения практических задач

Цель урока: научиться составлять числовые последовательности и находить сумму элементов числовой последовательности средствами изучаемого языка программирования.


Пример 1. Вывести на экран числовую последовательность 1, 3, 5, 7, … . Количество чисел ввести с клавиатуры. Формула: an=2n-1, минимальное значение числа n = 1

k = int(input('k = '))
for n in range(1, k+1):
    a = 2 * n - 1
    print(a, end = ' ')

Результат работы программы:

Команда print(a, end=» «) выводит числа в одну строку через пробел. Диапазон range(1, k + 1) даёт значения n от 1 до k включительно. Частая ошибка — записать range(1, k): тогда будет выведено только k – 1 число.

Пример 2. Последовательность Фибоначчи и приём «сдвиг»

Одной из наиболее известных является последовательность Фибоначчи: 0, 1, 1, 2, 3, 5, 8, 13… Каждый её элемент, начиная с третьего, равен сумме двух предыдущих: an = an–1 + an–2, a1 = 0, a2 = 1.

Для вывода чисел используют три переменные: a — значение, которое нужно вывести; b и c — два предыдущих значения. После вывода значения a нужно «сдвинуть» значения переменных: c = b; b = a, а затем получить новый элемент: a = b + c.

«Сдвиг» переменных при выводе чисел Фибоначчи

n1234567
Числа Фибоначчи0112358
Текущий шаг cba   
Следующий шаг  cba  

На каждом шаге «окошко» из трёх переменных перемещается по последовательности на одну позицию вправо: то, что было b, становится c; то, что было a, становится b.

x = int(input("x = "))
c = 0; b = 1
# вывод первых двух элементов
print(c, b, end=" ")
a = c + b
while a < x:
    # вывод текущего значения
    print(a, end=" ")
    # сдвиг
    c = b
    b = a
    # новый элемент
    a = b + c

Результат работы программы:

Пример 3. В лаборатории выводят полезные бактерии. Экспериментально было установлено, что количество бактерий (в млн) зависит от номера дня, в который проводится эксперимент: . Определить, сколько бактерий вывели за m дней.

from math import *
m = int(input("m = "))
# начальное значение суммы
s = 0
for n in range(1, m + 1):
    x = n ** 3
    # вычисление элемента
    # последовательности
    a = x / (sqrt(x) - n + 1)
    # изменение значения суммы
    s += a
print("всего бактерий", s, "млн")

Результат работы программы:

Сумму хранит переменная s, её начальное значение — ноль. Количество дней заранее известно, поэтому используем цикл for: номер дня n изменяется от 1 до m. В цикле вычисляем количество бактерий за текущий день a и добавляем его к сумме.

Пример 4. Катя и Петя решили организовать благотворительную лотерею. Для этого они случайным образом генерируют номер билета. Номера билетов принадлежат промежутку [1..100]. Выигрышным билетом будет тот, номер которого кратен 5. Определить, сколько будет выигрышных билетов среди n сгенерированных Катей и Петей.

from random import *
n = int(input('n = '))
k = 0
for i in range(n):
    a = randint(1, 100)
    print(a, end = ' ')
    if a % 5 == 0: # проверка выигрыша
         k += 1
print()
print('выиграло', k, 'билета(ов)')

Результат работы программы:


Задания по теме урока

Задание 1. Вывести на экран первые k чисел последовательности, заданной формулой an = 4n − 3.

Подсказка: цикл for с range(1, k + 1) — по образцу примера 1

Задание 2. Последовательность задана рекуррентно: a1 = 1, a2 = 2, а каждый следующий элемент равен произведению двух предыдущих: an = an–1 * an–2. Вывести на экран все элементы этой последовательности, меньшие x.

Подсказка: приём «сдвиг» из примера 2: цикл while и три переменные c, b, a.

Задание 3. Сгенерировать k случайных целых чисел от 1 до 50. Подсчитать количество чисел, кратных 3.

Подсказка: обратить внимание на пример 4.


Это изображение имеет пустой атрибут alt; его имя файла - hw-e1653285769766.png

Домашнее задание

§ 7.1 и 7.2 учебного пособия, ответить на вопросы

Добавить комментарий