Главная страница
Навигация по странице:

  • 3. Сколько человек находится между i-м и k-м в очереди 4. Сколько нечётных чисел на отрезке [a; b], если a и b чётные a и b нечётные a чётное, a нечётное

  • 6. В доме 9 этажей, на каждом этаже одного подъезда по 4 квартиры. В каком подъезде, и на каком этаже находится n-я квартира

  • 10. Та же ситуация, что и в предыдущей задаче. Длина вашего шага z метров. Мимо скольких столбов вы пройдете, сделав n шагов

  • 13. От бревна длиной L отпиливают куски длиной x. Сколько целых полноразмерных кусков максимально удастся отпилить

  • 15. Резиновое кольцо диаметром d разрезали в n местах. Какова средняя длина получившихся кусков

  • • Сколько километров хотите проехать на автомобиле • Сколько литров топлива расходует автомобиль на 100 километров

  • Дополнительные упражнения к модулю 3

  • Практические задания на модуль 5

  • Практическая работа. Решение задачи Обозначим катеты прямоугольного треугольника a и b, а гипотенузу c. Площадь треугольника обозначим S, один из острых углов .


    Скачать 362.82 Kb.
    НазваниеРешение задачи Обозначим катеты прямоугольного треугольника a и b, а гипотенузу c. Площадь треугольника обозначим S, один из острых углов .
    АнкорПрактическая работа
    Дата21.12.2022
    Размер362.82 Kb.
    Формат файлаdocx
    Имя файлаZadania_i_uprazhnenia_2.docx
    ТипРешение
    #857483

    Задания к модулю 1

    Задание 1.1

    Напишите программу для решения примера (по вариантам). Все необходимые переменные пользователь вводит через консоль. Запись |пример| означает «взять по модулю», т.е. если значение получится отрицательным, необходимо сменить знак с минуса на плюс.

    Вариант 1. |(a2/b2 + c2*a2)/(a+b+c*(k-a/b3)) + c + (k/b -k/a)*c|

    Вариант 2. |((a2-b3 - c3*a2)*(b-c+c*(k-d/b3)) - (k/b -k/a)*c)2 - 20000|

    Вариант 3. |1 - a*bc - a*(b2-c2) + (b-c+a)*(12+b)/(c-a)|

    Вариант 4. |a - b*c*d3+(c5-a2)/a + f3*(a-213)|
    Задание 1.2 (Ввод/вывод данных)

    Напишите программу:

    1. последовательно запрашивающую ваши фамилию, имя, отчество и выводящую их одной строкой в последовательности: фамилия → имя → отчество;

    2. последовательно запрашивающую ваши фамилию, имя, отчество и выводящую их одной строкой в последовательности: имя → отчество → фамилия;

    3. преобразующую простую русскую фамилию в мужском роде в женский род (Петров → Петрова; Путин → Путина);

    4. последовательно введите число, месяц, год рождения; выведите дату своего рождения через точки (01.01.2000), слэши (01/01/2000), пробелы (01 01 2000), тире (01-01-2000).
    Задания к модулю 2

    Примеры решения задач

    Пример задачи 2.1 (Арифметические операции)

    Напишите программу (необходимые данные вводятся с клавиатуры) для вычисления всех трёх сторон прямоугольного треугольника, если даны один из острых углов и площадь.

    Решение задачи 2.1. Обозначим катеты прямоугольного треугольника a и b, а гипотенузу - c. Площадь треугольника обозначим S, один из острых углов . Воспользуемся формулой площади прямоугольного треугольника S = ab/2 и формулой тангенса tg=а/с. Отсюда можно получить выражение для одного из катетов: a = . Теперь легко вычислить оставшийся катет и гипотенузу:

    b = 2S/ и c = .

    from math import *

    S = int(input(’Площадь трегольника = ’))

    alpha = int(input(’Острый угол (в градусах) = ’))

    a = sqrt (2* S/tan ( radians ( alpha )))

    b = 2*S/a

    c = (a **2+ b **2)**(1/2)

    print (a, b, c)
    Вывод программы:

    Площадь треугольника = 8

    Острый угол (в градусах) = 45

    4.0 4.0 5.656854249492381
    Пример задачи 2.2 (Строки)

    Свяжите любую переменную со строкой: «У Лукоморья дуб зелёный. …» Выведите все символы этой строки в обратном порядке.
    Решение задачи 2.2. Листинг программы:

    S = ’У Лукоморья дуб зелёный...’

    print(S[ -1:: -1])
    Вывод программы:

    ...йынёлез буд яьромокуЛ У
    Пример задачи 2.3. (Простое условие)

    Ответить на вопрос, истинно ли условие: x3 + y3 <= 9. Значения переменных x и y вводятся с клавиатуры.

    Решение задачи 2.3 Листинг программы:

    x = float(input(’x=’))

    y = float(input(’y=’))

    print (x**3 + y **3 <= 9)
    Вывод программы:

    x = 1

    y = 3

    False
    Пример задачи 2.4 (Сложное условие)

    Записать условие (составить логическое выражение), которое является истинным, когда число X чётное и меньше 100.

    Решение задачи 2.4. Листинг программы:

    X = float(input(’x=’))

    print ((X%2 == 0) and (X < 100))
    Вывод программы:

    >>>

    x = 50

    True

    >>> ================= RESTART ===================

    >>>

    x = 3

    False

    >>> ================= RESTART ===================

    >>>

    x = 102

    False
    Пример задачи 2.5 (Условный оператор)

    Приведём пример множественного ветвления с использованием elif, где разберём перебор вариантов.

    Задача такая: пользователь вводит количество денег в рублях, в магазине можно купить хлеб за 20 руб. и сыр за 100 руб. Если хватает на то и другое, покупаем всё, если только на сыр или только на хлеб, берём что-то одно, если не хватает ни на что - уходим.

    Решение задачи 2.5 Листинг программы:

    a = int(input(" Input amount of money :"))

    if a >= 120:

    print (" Bread and cheese ")

    elif a >= 100:

    print (" Cheese only ")

    elif a >= 20:

    print (" Bread only ")

    else:

    print (" Nothing :(")

    Как видим, проверять все условия в каждом случае, например, для хлеба условие, что денег меньше 100, нет смысла: если первое условие выполняется, то проверка прочих никогда не происходит, иначе управление передаётся на следующий elif и так далее, если не выполнилось ни одно из условий, выполняются операторы в блоке else, если таковой присутствует.
    Пример задачи 2.6. (Списки)

    Создайте список в диапазоне (0, 100) с шагом 1. Свяжите его с переменной. Извлеките из него срез с 20 по 30 элемент включительно.

    Решение задачи 2.6. Листинг программы:

    A = list((0 , 100 , 1))

    print(A [20:31])
    Вывод программы:

    [20 , 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
    Пример задачи 2.7 (Кортежи)

    Создайте кортеж в диапазоне (0, 20) с шагом 1. Свяжите его с переменной. Выведите эту переменную на экран.

    Решение задачи 2.7. Листинг программы:

    A = tuple(range(0, 20, 1))

    print(A)
    Вывод программы:

    (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
    Пример задачи 2.8. (Словари)

    Создайте словарь, который будет содержать значения параметров функции y = Acos(t+f). А затем по ключу запросите значения каждого из них.

    Решение задачи 2.8

    Листинг программы

    print (’y=Acos (wt+f)’)

    Parameters = {’A’:10 , ’w’:1, ’f’:0}

    Key = str(input(’Какой параметр? ’))

    print( Parameters [Key])
    Вывод программы:

    y = A cos(wt+f)

    Какой параметр? A

    10
    Задание 2.1

    Выполнять три задания в зависимости от номера в списке.

    Чтобы узнать номера ваших заданий, необходимо решить задачку: требуется сделать задания № m, № m + 5, № m + 10, где m = (n − 1)%5 + 1, n -порядковый номер студента в списке группы по алфавиту.
    Используя арифметические операторы (+, −, ∗, /, //, %), напишите программу (необходимая информация запрашивается у пользователя с клавиатуры).

    1. Составьте арифметическое выражение и вычислите n-е чётное число (первым считается 2, вторым 4 и т.д.).

    2. Составьте арифметическое выражение и вычислите n-е нечётное число (первое 1, второе 3 и т.д.).


    3. Сколько человек находится между i-м и k-м в очереди?


    4. Сколько нечётных чисел на отрезке [a; b], если a и b чётные? a и b нечётные? a чётное, a нечётное?

    5. Сколько полных часов, минут и секунд содержится в x секундах? Разложите имеющееся количество секунд на сумму из x часов + y минут + z секунд.


    6. В доме 9 этажей, на каждом этаже одного подъезда по 4 квартиры. В каком подъезде, и на каком этаже находится n-я квартира?

    7. Старинными русскими денежными единицами являются: 1 рубль = 100 копеек, 1 гривна = 10 копеек, 1 алтын = 3 копейки, 1 полушка = 0,25 копейки. Имеется A копеек. Разложите имеющуюся сумму в копейках на сумму из x рублей + y гривен + z алтынов + v полушек.

    8. Стрелка прибора вращается с постоянной скоростью, совершая w оборотов в секунду (не обязательно стрелка прибора, может быть это волчок в игре “Что? Где? Когда?” и т.п.) Угол поворота стрелки в нулевой момент времени примем за 0. Каков будет угол поворота через t секунд?

    9. Вы стоите на краю дороги и от вас до ближайшего фонарного столба x метров. Расстояние между столбами y метров. На каком расстоянии от вас находится n-й столб?


    10. Та же ситуация, что и в предыдущей задаче. Длина вашего шага z метров. Мимо скольких столбов вы пройдете, сделав n шагов?

    11. x вещественное число. Запишите выражение, позволяющее выделить его дробную часть.

    12. x вещественное число. Запишите выражение, которое округлит его до сотых долей (останется только два знака после запятой).


    13. От бревна длиной L отпиливают куски длиной x. Сколько целых полноразмерных кусков максимально удастся отпилить?


    14. Бревно длиной L распилили в n местах. Какова средняя длина получившихся кусков?


    15. Резиновое кольцо диаметром d разрезали в n местах. Какова средняя длина получившихся кусков?

    Задание 2.2 (Строки)

    Задания выполняйте все по порядку. Свяжите любую переменную со строкой: “Мы обязательно научимся программировать!”. Извлеките из неё следующие срезы:

    1. выведите третий символ этой строки;

    2. выведите предпоследний символ этой строки;

    3. выведите первые пять символов этой строки;

    4. выведите всю строку, кроме последних двух символов;

    5. выведите все символы с чётными индексами (считая, что индексация начинается с 0);

    6. выведите все символы с нечётными индексами, то есть, начиная с первого символа строки;

    7. выведите четыре символа из центра строки;

    8. выведите символы с индексами, кратными трём;

    9. выведите все символы в обратном порядке;

    10. выведите все символы строки через один в обратном порядке, начиная с последнего;

    11. удалите второе слово из строки;

    12. замените второе слово на строку “никогда не”;

    13. добавьте в конец строки “на Python”;

    14. поставьте последнее слово первым в строке;

    15. выведите длину данной строки.
    Задание 2.3 (Логический тип данных. Логические операторы)

    В каждой группе выполнять по одному заданию в зависимости от номера в списке группы: (n − 1)%10 + 1, где n номер в списке.

    Вычислить значение логического выражения. Значения переменных x и y вбиваются с клавиатуры.

    1. x2 + x2 < 4;

    2. x2 − x2 < 4;

    3. x > 0 или y2 <= 4;

    4. x > 0 и y2 <= 4;

    5. x · y <= 0 или y > x;

    6. x · y <= 0 и y > x;

    7. не x · y < 0 или y > x;

    8. не x · y < 0 и y > x;

    9. x > 4 или y2 <= 4;

    10. x > 4 и y2 <= 4.

    Вычислить значение логического выражения при всех возможных значениях логических величин X, Y и Z (для образца можно взять задачку про Шумахера):

    1. не (X или не Y и Z);

    2. Y или (X и не Y или Z);

    3. не (не X и Y или Z);

    4. не (X или не Y и Z) или Z;

    5. не (X и не Y или Z) и Y ;

    6. не (не X или Y и Z) или X;

    7. не (Y или не X и Z) или Z;

    8. X и не (не Y или Z) или Y ;

    9. не (X или Y и Z) или не X;

    10. не (X и Y ) и (не X или не Z).

    Записать условие (составить логическое выражение), которое является истинным, когда:

    1. число X делится нацело на 13 и меньше 100;

    2. число X больше 10 и меньше 20;

    3. каждое из чисел X и Y больше 25;

    4. каждое из чисел X и Y нечетное;

    5. только одно из чисел X и Y четное;

    6. хотя бы одно из чисел X и Y положительно;

    7. каждое из чисел X, Y , Z кратно пяти;

    8. только одно из чисел X, Y , Z кратно трем;

    9. только одно из чисел X, Y , Z меньше 10;

    10. хотя бы одно из чисел X, Y , Z отрицательно.
    Задание 2.4 (Условный оператор)

    Выполнять три задания в зависимости от номера в списке. Необходимо сделать задания № m, № m + 5, № m + 10, где m = (n − 1)%5 + 1, n номер -студента в списке группы в алфавитном порядке.

    1. Напишите программу, которая запрашивает значение x, а затем выводит

    значение следующей функции от x (она называется по латыни «signum»,

    что значит «знак»):



    2. Напишите программу, которая запрашивает значение x, а затем выводит

    значение следующей функции от x:



    3. Напишите программу, которая запрашивает значение x, а затем выводит

    значение следующей функции от x:



    4. Запросите у пользователя два числа. Далее:

    • если первое больше второго, то вычислить их разницу и вывести данные на печать;

    • если второе число больше первого, то вычислить их сумму и вывести на печать;

    • если оба числа равны, то вывести это значение на печать.

    5. Запросите у пользователя два целых числа m и n. Если целое число m

    делится нацело на целое число n, то вывести на экран частное от деления,

    в противном случае вывести сообщение «m на n нацело не делится».

    6. Напишите программу для решения квадратного уравнения ax2 + bx + c =0. Значения коэффициентов a, b, c вводятся с клавиатуры. Вычисление квадратного корня можно организовать либо путём возведения в степень 0.5, либо с помощью функции sqrt из математического модуля. Проверяйте значение дискриминанта: если оно меньше нуля, корней нет, если равно нулю, значит, корень 1, если больше нуля корней два. Для этого можно использовать конструкцию вида if elif else.

    7. Напишите программу, решающую кубическое уравнение вида y3+px+q = 0 с помощью формулы Кардано. Значения коэффициентов p и q вводятся с клавиатуры. Найдите корни уравнения. Помните, что Python может работать с комплексными числами, но модуль math использовать для их возведения в степень нельзя. Будьте внимательны с кубическим корнем: кубический корень от отрицательного числа превращается в комплексное число.

    8. Напишите программу, которая запрашивает у пользователя его возраст (целое число лет) и в зависимости от значения введённого числа выводит:

    • от 0 до 7 «Вам в детский сад»;

    • от 7 до 18 «Вам в школу»;

    • от 18 до 25 «Вам в профессиональное учебное заведение»;

    • от 25 до 60 «Вам на работу»;

    • от 60 до 120 «Вам предоставляется выбор»;

    • меньше 0 и больше 120 пять раз подряд: «Ошибка! Это программа

    для людей!».

    9. Напишите программу, которая поможет вам оптимизировать путешествие на автомобиле. Пусть программа запрашивает у пользователя следующие данные:


    • Сколько километров хотите проехать на автомобиле?


    • Сколько литров топлива расходует автомобиль на 100 километров?


    • Сколько литров топлива в вашем баке?

    Далее в зависимости от введённых значений программа должна выдать вердикт: проедете вы желаемое расстояние или нет;

    10. Пользователь вводит три действительных числа: длины сторон треугольника. Программа должна сообщить пользователю:

    • является ли треугольник равносторонним;

    • является ли треугольник равнобедренным;

    • является ли треугольник разносторонним;

    • является ли треугольник прямоугольным;

    • существует ли вообще такой треугольник (такого треугольника не может быть, если длина хотя бы одной стороны больше или равна сумме длин двух других).

    11. Известен вес боксёра-любителя. Он таков, что боксёр может быть отнесен к одной из трех весовых категорий:

    • легкий вес до 60 кг;

    • первый полусредний вес до 64 кг;

    • полусредний вес до 69 кг;

    Определить, в какой категории будет выступать данный боксер.

    12. В чемпионате по футболу команде за выигрыш дается 3 очка, за проигрыш 0, за ничью 1. Известно количество очков, полученных командой за игру. Определить словесный результат игры (выигрыш, проигрыш или ничья).

    13. Составить программу, которая в зависимости от порядкового номера дня недели (от 1 до 7) выводит на экран его название (понедельник, вторник, ..., воскресенье).

    14. Составить программу, которая в зависимости от порядкового номера месяца (1, 2, ..., 12) выводит на экран его название (январь, февраль, ..., декабрь).

    15. Составить программу, которая в зависимости от порядкового номера месяца (1, 2, ..., 12) выводит на экран время года, к которому относится этот месяц.

    Задание 2.5 (Списки. Кортежи. Словари)

    Задания выполнять все по порядку.

    1. Списки

    a) Создайте два списка в диапазоне (0, 100) с шагом 10. Присвойте некоторым переменным значения этих списков.

    b) Извлеките из первого списка второй элемент.

    c) Измените во втором списке последний объект на число «200». Выведите список на экран.

    d) Соедините оба списка в один, присвоив результат новой переменной. Выведите получившийся список на экран.

    e) Возьмите срез из соединённого списка так, чтобы туда попали некоторые части обоих первых списков. Срез свяжите с очередной новой переменной. Выведите значение этой переменной.

    f) Добавьте в список-срез два новых элемента и снова выведите его.

    g) С помощью функций min() и max() найдите и выведите элементы объединённого списка с максимальным и минимальным значением.

    2. Кортежи

    a) Создайте два кортежа: один из чисел в диапазоне (1, количество учеников в группе) с шагом 1, второй из фамилий учеников вашей группы. Пусть они соответствуют друг другу;

    b) Посмотрите, какая фамилия у студента с номером 5.

    c) А теперь посмотрите, что записано во второй кортеж под номером 5.

    d) Объедините два кортежа в один, присвоив результат новой перемен-

    ной. Выведите получившийся список на экран.

    e) Возьмите срез из соединенного кортежа так, чтобы туда попали некоторые части обоих первых кортежей. Срез свяжите с очередной новой переменной. Выведите значение этой переменной.

    3. Словари

    a) Создайте словарь, связав его с переменной School, и наполните его данными, которые бы отражали количество учащихся в пяти разных классах (например, 1а, 1б, 2в и т. д.); выведите содержимое словаря на экран.

    b) Узнайте сколько человек в каком-нибудь классе. Класс запрашивается у пользователя с клавиатуры, если такого запрашиваемого класса в школе нет, то выдаётся сообщение: «Такого класса на существует».

    c) В школе произошли изменения, внесите их в словарь: в трёх классах изменилось количество учащихся; результат выведите на экран.

    d) В школе появилось два новых класса, новый словарь выведите на экран.

    e) В школе расформировали один из классов, выведите содержимое нового словаря на экран.
    Задания к модулю 3

    Пример на циклы

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

    1. Выписать подряд все целые числа от двух до n (2, 3, 4, . . . , n).

    2. Пусть переменная p изначально равна двум - первому простому числу.

    3. Зачеркнуть в списке числа от 2p до n, считая шагами по p (это будут числа кратные p: 2p, 3p, 4p, . . . ).

    4. Найти первое незачёркнутое число в списке, большее, чем p, и присвоить значению переменной p это число.

    5. Повторять шаги 3 и 4, пока возможно.

    6. Теперь все незачёркнутые числа в списке - это все простые числа от 2 до n.
    Решение задачи

    На практике алгоритм можно улучшить следующим образом. На шаге №3 числа можно зачеркивать, начиная сразу с числа p2, потому что все составные числа меньше него уже будут зачеркнуты к этому времени. И, соответственно, останавливать алгоритм можно, когда p2 станет больше, чем n.



    Задание 3.1 (Задания на цикл с условием)

    Выполнять три задания в зависимости от номера в списке группы в алфавитном порядке. Необходимо сделать задания №m, №m+5, №m+10, m=(n-1)%5+1, где n - номер в списке группы.
    1. Напишите программу, которая будет суммировать вводимые с клавиатуры числа до тех пор, пока они положительны.

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

    3. Напишите программу, которая будет суммировать вводимые с клавиатуры числа до тех пор, пока они не равны нулю.

    4. Напишите программу, которая будет суммировать вводимые с клавиатуры числа до тех пор, пока они чётные.

    5. Дано число n. Напечатать те натуральные числа, квадрат которых не превышает n.

    6. Дано число n. Найти первое натуральное число, квадрат которого больше n.

    7. Дано число n. Среди чисел 1, 1+1/2, 1+1/2+1/3….найдите первое, большее числа n.

    8. Дано число a (1 <= a <= 1.5). Среди чисел 1 + 1/2 , 1 + 1/3 , 1 + 1/4 , . . (заметим, что каждое следующее число в последовательности меньше предыдущего) найдите первое, меньшее a.

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

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

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

    12. Напишите программу, которая запрашивает у пользователя числа до тех пор, пока каждое следующее число меньше 10. В конце программа сообщает, сколько чисел было введено.

    13. Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной цифры, считая номера: от конца числа; от начала числа.

    14. Дано натуральное число, в котором все цифры различны. Определить порядковый номер его минимальной цифры, считая номера: от конца числа; от начала числа.

    15. Дано натуральное число. Определить, сколько раз в нем встречается максимальная цифра (например, для числа 132233 ответ равен 3, для числа 46336 - двум, для числа 12345 - одному).
    Задание 3.2 (Задания на цикл со счётчиком)

    Выполнять три задания в зависимости от номера в списке группы в алфавитном порядке. Необходимо сделать задания №m, №m+5, №m+10, m=(n-1)%5+1, где n - номер в списке группы.
    1. Напишите программу, вычисляющую сумму всех чётных чисел в диапазоне от 1 до 90 включительно.

    2. Напишите программу, вычисляющую сумму всех чётных чисел в диапазоне от a до b включительно (вводятся с клавиатуры).

    3. Напишите программу, вычисляющую сумму всех нечётных чисел в диапазоне от 1 до 90 включительно.

    4. Напишите программу, вычисляющую сумму всех нечётных чисел в диапазоне от a до b включительно (вводятся с клавиатуры).

    5. Напечатайте таблицу умножения на 5, желательно печатать в виде:

    1 × 5 = 5

    2 × 5 = 10

    . . .

    9 × 5 = 45
    Вместо знака умножения × можно использовать строчную латинскую букву x.

    6. Напечатайте таблицу умножения на 9, желательно печатать в виде:

    1 × 9 = 9

    2 × 9 = 18

    . . .

    9 × 9 = 81

    Вместо знака умножения × можно использовать строчную латинскую букву x.
    7. Напечатайте таблицу умножения на целое число n, n вводится с клавиатуры, желательно печатать в виде:

    1 × n = . . .

    2 × n = . . .

    . . .

    9 × n = . . .

    Вместо знака умножения × можно использовать строчную латинскую букву x. Внимание! Не нужно печатать символ n, вместо этого нужно печатать введённое значение.

    8. Напечатать таблицу стоимости 50, 100, 150, . . . , 1000 г сыра (стоимость 1 кг сыра вводится с клавиатуры).

    9. Напечатать таблицу стоимости 100, 200, 300, . . . , 2000 г конфет (стоимость 1 кг конфет вводится с клавиатуры).

    10. Найти сумму всех целых чисел от 10 до 100.

    11. Найти сумму всех целых чисел от a до 100 включительно (значение a вводится с клавиатуры).

    12. Найти сумму всех целых чисел от 10 до b включительно (значение b вводится с клавиатуры).

    13. Найти сумму всех целых чисел от a до b включительно (значения a и b вводятся с клавиатуры).

    14. Найти произведение всех целых чисел от 10 до 100 включительно. Обратите внимание, что Python может работать с целыми числами неограниченного размера!

    15. Найти произведение всех целых чисел от a до b включительно (значения a и b вводятся с клавиатуры).
    Задание 3.3 (Задания на комбинацию циклов со счётчиком и условием)
    Выполнять одно задание с номером (n-1)%8+1 в зависимости от номера

    n в списке группы в алфавитном порядке.
    1. За столом сидят n гостей (вводится с клавиатуры), перед которыми стоит пирог. Пирог и его части можно делить только пополам. Определите, сколько раз нужно делить пирог на ещё более мелкие части, чтобы:

    • каждому из гостей достался хотя бы 1 кусок;

    • как минимум половине гостей досталось по 2 куска;

    • каждому гостю досталось по 1 куску и при этом ещё хотя бы 10 кусков осталось в запасе.

    2. Ученик 4-го класса Василий время от времени начинает прогуливать школу.

    Первый раз он прогуливает 2 дня в конце первого месяца, через месяц -3 дня, ещё через месяц - 4 дня и так далее. За каждый день прогулов Василию ставят по 2 двойки, плюс ещё по 3 двойки он получает в месяц на занятиях. Сколько раз Василий может прогуливать школу (сколько раз уйти в «загул») и сколько дней прогуляет, чтобы не быть отчисленным, если отчисление грозит ему за 70 двоек? Продолжительность учебного года – 9 месяцев, выйти из «загула» досрочно (не прогуляв положенное число дней) Василий не в состоянии, каникулами пренебречь.

    3. В детском садике n детей играют в следующую игру. Перед ними гора из m кубиков, первый ребёнок вынимает из кучи 1 кубик, каждый последующий ребёнок - в два раза больше предыдущего и так по кругу. Если число кубиков, которые нужно вынуть, превышает 25, из него вычитается 25 и отсчёт идёт от уменьшенного числа, например, вместо 32 кубиков будет вынуто 7, затем 14 и т. д. Проигравшим считается тот, кто не смог вытащить нужное число кубиков (в куче осталось недостаточно). Определите проигравшего.

    4. Последовательность Фибоначчи определяется рекуррентным соотношением xn+1 = xn + xn−1, где x0 = 1 и x1 = 1. Найти первое число в последовательности Фибоначчи, которое больше 1000.

    5. Для n-го члена в последовательности Фибоначчи существует явная формула:


    Поскольку операции с вещественными числами происходят с конечной точностью, то с ростом n, результат вычисления по этой формуле будет все больше отличаться от настоящего числа Фибоначчи. Найдите n, начиная с которого, отличие от истинного значения превысит 0.001.

    6. Создайте программу, играющую с пользователем в орлянку. Программа должна спрашивать у пользователя: орёл или решка. Если пользователь вводит 0, то выбирает орла, 1 - решку, любое другое число - конец игры. Программа должна вести учёт выигрышей и проигрышей и после каждого раунда сообщать пользователю о состоянии его счёта. Пусть вначале на счету 3 рубля и ставка в каждом коне 1 рубль. Если денег у пользователя не осталось - игра прекращается.

    Выпал орёл или решка, программа определяет с помощью функции randint(a, b) из стандартного модуля random, которая возвращает случайное целое число n, a <= n <= b.

    7. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить:

    • за какой месяц величина ежемесячного увеличения вклада превысит 30 рублей;

    • через сколько месяцев размер вклада превысит 1200 руб.

    8. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня.

    Определить:

    • в какой день он пробежит больше 20 км;

    • в какой день суммарный пробег за все дни превысит 100 км.

    Дополнительные упражнения к модулю 3

    Задание 3.4

    Найдите все значения функции y (x) = x2 + 3 на интервале от 10 до 30 с шагом 2.

    Задание 3.5

    L = [-8, 8, 6.0, 5, 'строка', -3.1]

    Определить сумму чисел, входящих в список L. Подсказка: для определения типа объекта можно воспользоваться сравнением вида type(-8) == int.

    Задание 3.6

    Напишите программу-игру. Компьютер загадывает случайное число, пользователь пытается его угадать. Пользователь вводит число до тех пор, пока не угадает или не введет слово «Выход». Компьютер сравнивает число с введенным и сообщает пользователю больше оно или меньше загаданного.

    Задание 3.7

    Дано число, введенное с клавиатуры. Определите сумму квадратов нечетных цифр в числе.
    Задание 3.8

    Найдите сумму чисел, вводимых с клавиатуры. Количество вводимых чисел заранее неизвестно. Окончание ввода, например, слово «Стоп».
    Задание 3.9

    Задана строка из стихотворения: «Мой дядя самых честных правил, Когда не в шутку занемог, Он уважать себя заставил И лучше выдумать не мог». Удалите из строки все слова, начинающиеся на букву «м». Результат вывести на экран в виде строки.

    Подсказка: вспомните про модификацию списков.
    Задание 3.10

    Дан произвольный текст. Найдите номер первого самого длинного слова в нем.
    Задание 3.11

    Дан произвольный текст. Напечатайте все имеющиеся в нем цифры, определите их количество, сумму и найти максимальное.
    Задания к модулю 4
    Примеры решения заданий

    Пример задачи 4.1

    Напишите функцию, вычисляющую значения экспоненты по рекуррентной формуле ex = 1 + x + =

    Реализуйте контроль точности вычислений с помощью дополнительного параметра  со значением по умолчанию (следует остановить вычисления, когда очередное приближение будет отличаться от предыдущего менее, чем на 1010).

    Реализуйте вызов функции различными способами:

    • с одним позиционным параметром (при этом будет использовано значение по умолчанию);

    • с двумя позиционными параметрами (значение точности будет передано как второй аргумент);

    • передав значение как именованный параметр.
    Решение задачи 4.1
    def EXPONENTA (x, eps =10**( -10)):

    ex = 1 # будущий результат

    dx = x # приращение

    i = 2 # номер приращения

    while abs(dx)>eps :

    ex = ex + dx

    dx = dx * x / i

    i = i + 1

    return ex

    #Основная программа

    A = float(input(’Введите показатель экспоненты: ’))

    print( EXPONENTA (A))

    print( EXPONENTA (A, 10**( -4)))

    print( EXPONENTA (x = A)
    Пример задачи 4.2

    Сделайте из функции процедуру (вместо того, чтобы вернуть результат с помощью оператора return, выведите его внутри функции с помощью функции print).
    Решение задачи 4.2
    def EXPONENTA (x, eps =10**( -10)):

    ex = 1 # будущий результат

    dx = x # приращение

    i = 2 # номер приращения

    while abs(dx)>eps :

    ex = ex + dx

    dx = dx * x / i

    i = i + 1

    print(ex)

    #Основная программа

    A = float(input(’Введите показатель экспоненты: ’))

    EXPONENTA (A)
    Задания на функции
    Задание 4.1

    Выполнять одно задание в зависимости от номера в списке: (n-1)%10+1, где n - номер в списке. Напишите функцию, вычисляющую значения одной из следующих специальных функций по рекуррентной формуле. Реализуйте контроль точности вычислений с помощью дополнительного параметра  со значением по умолчанию (следует остановить вычисления, когда очередное приближение будет отличаться от предыдущего менее, чем на 1010).

    Реализуйте вызов функции различными способами:

    • с одним позиционным параметром (при этом будет использовано значение по умолчанию);

    • с двумя позиционными параметрами (значение точности будет передано как второй аргумент);

    • передав значение как именованный параметр.

    Сделайте из функции процедуру (вместо того, чтобы вернуть результат с помощью оператора return, выведите его внутри функции с помощью функции print).

    1. Косинус cos(x) = 1 - =

    Формула хорошо работает для −2≤ x ≤ 2, поскольку получена разложением в ряд Тейлора возле ноля. Для прочих значений x следует воспользоваться свойствами периодичности косинуса: cos(x) = cos(2 + 2n), где n есть любое целое число, тогда cos(x) = cos(x%(2*math.pi)). Для проверки использовать функцию math.cos(x).
    2. Синус sin(x) =x - =

    Формула хорошо работает для −2≤ x ≤ 2, поскольку получена разложением в ряд Тейлора возле ноля. Для прочих значений x следует воспользоваться свойствами периодичности синуса: sin(x) = sin(2 + 2n), где n есть любое целое число, тогда sin(x) = sin(x%(2*math.pi)). Для проверки использовать функцию math.sin(x).
    3. Гиперболический косинус ch(x) = 1 + =

    Для проверки использовать функцию math.cosh(x).
    4. Гиперболический косинус по формуле для экспоненты, оставляя только слагаемые с чётными n. Для проверки использовать функцию math.cosh(x).
    5. Гиперболический синус sh(x) = x + =

    Для проверки использовать функцию math.sinh(x).
    6. Гиперболический синус по формуле для экспоненты, оставляя только сла-

    гаемые с нечётными n. Для проверки использовать функцию math.sinh(x).
    7. Натуральный логарифм (формула работает при 0< x ≤ 2):

    ln(x) = (x-1) - =

    Чтобы найти логарифм для x > 2, необходимо представить его в виде ln(x) = ln(y · 2p) = p ln(2) + ln(y), где y < 2, а p - натуральное число. Чтобы найти p и y, нужно в цикле делить x на 2 до тех пор, пока результат больше 2. Когда очередной результат деления станет меньше 2, этот результат и есть y, а число делений, за которое он достигнут – это p. Для проверки использовать функцию math.log(x).
    8. Гамма-функция Г(x) по формуле Эйлера:


    Формула справедлива для x  {0,−1,−2, . . . }. Для проверки можно использовать math.gamma(x). Также, поскольку Г(x+1) = x! для натуральных x, то для проверки можно использовать функцию math.factorial(x).
    9. Функция ошибок, также известная как интеграл ошибок, интеграл вероятности, или функция Лапласа:



    Для проверки использовать функцию scipy.special.erf(x).
    10. Дополнительная функция ошибок:



    Для проверки использовать функцию scipy.special.erf(x).
    Задание 4.2 (Танцы)

    Выполнять в каждом разделе по одному заданию в зависимости от номера в списке группы: (n-1)%5+1, где n - номер в списке. Напишите функцию, формирующую пары для соревнований по танцам. В каждой паре должен быть один мальчик и одна девочка. Аргументы функции – списки (варианты 1-3) или словари (варианты 4-5).
    1. два списка имён: первый - мальчиков, второй - девочек;

    2. один список имён и число мальчиков, все имена мальчиков стоят в начале списка;

    3. один список имён и число девочек, все имена девочек стоят в начале списка;

    4. словарь, в котором в качестве ключа используется имя, а в качестве значения символ «м» для мальчиков и символ «ж» для девочек;

    5. словарь, в котором в качестве ключей выступают символы «м» и «ж», а в качестве соответствующих им значений - списки мальчиков и девочек соответственно.

    Проверьте работу функции на разных примерах:

    • когда мальчиков и девочек поровну,

    • когда мальчиков больше, чем девочек, и наоборот,

    • когда есть ровно 1 мальчик или ровно 1 девочка,

    • когда либо мальчиков, либо девочек нет вовсе.

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

    • как и ранее (с одним аргументом), в этом случае результат должен совпасть с ранее полученным;

    • передав все аргументы позиционно без имён;

    • передав последний аргумент (список уже составленных пар) по имени;

    • передав все аргументы по имени в произвольном порядке.
    Задание 4.3 (Создание списков)

    Напишите функцию, принимающую от 1 до 3 параметров - целых чисел (как стандартная функция range). Единственный обязательный аргумент - последнее число. Если поданы 2 аргумента, то первый интерпретируется как начальное число, второй - как конечное (не включительно). Если поданы 3 аргумента, то третий аргумент интерпретируется как шаг. Функция должна выдавать один из следующих списков:

    1. квадратов чисел;

    2. кубов чисел;

    3. квадратных корней чисел;

    4. логарифмов чисел;

    5. чисел последовательности Фибоначчи с номерами в указанных пределах.

    Запускайте вашу функцию со всеми возможными вариантами по числу параметров: от 1 до 3.

    Подсказка: проблему переменного числа параметров, из которых необязательным является в том числе первый, можно решить 2-мя способами. Во-первых, можно сопоставить всем параметрам нечисловые значения по умолчанию, обычно для этого используют специальное значение None. Тогда используя условный оператор можно определить, сколько параметров реально заданы (не равны None). В зависимости от этого следует интерпретировать значение первого аргумента как: конец последовательности, если зада только 1 параметр; как начало, если заданы 2 или 3. Во-вторых, можно проделать то же, используя синтаксис функции с произвольным числом параметров; в таком случае задавать значения по умолчанию не нужно, а полезно использовать стандартную функцию len, которая выдаст количество реально используемых параметров.
    Задание 4.4 (Интернет-магазин)

    Решите задачу об интернет-торговле. Несколько покупателей в течении года делали покупки в интернет-магазине. При каждой покупке фиксировались имя покупателя (строка) и потраченная сумма (действительное число). Напишите функцию, рассчитывающую для каждого покупателя и выдающую в виде словаря по всем покупателям (вида имя:значение) один из следующих параметров:

    1. число покупок;

    2. среднюю сумму покупки;

    3. максимальную сумму покупки;

    4. минимальную сумму покупки;

    5. общую сумму всех покупок.

    На вход функции передаётся:

    • либо 2 списка, в первом из которых имена покупателей (могут повторяться), во втором – суммы покупок;

    • либо 1 список, состоящий из пар вида (имя, сумма);

    • либо словарь, в котором в качестве ключей используются имена, а в качестве значений - списки с суммами.
    Практические задания на модуль 5

    В задании 5.1  следует выполнить три пункта в зависимости от номера в списке группы в алфавитном порядке. Необходимо сделать задания №m, №m+5, №m + 10, m = (n − 1)%5 + 1, где n - номер в списке группы.

     Задание 5.1.

     Создайте и выведите на экран массивы. Получившиеся матрицы сохраните в текстовые файлы.

    1.      из нулей одномерные длины 10 и 55, матрицу размерами 3×4, трёхмерный массив формы 2 × 4 × 5;

    2.      из единиц одномерные длины 10 и 55, матрицу размерами 3×4, трёхмерный массив формы 2 × 4 × 5;

    3.     из девяток одномерные длины 10 и 55, матрицу размерами 3×4, трёхмерный массив формы 2 × 4 × 5;

    4.     одномерные длины 10 и 55, матрицу размерами 3 × 4, трёхмерный массив формы 2 × 4 × 5, все состоящие целиком из значений 0.25;

    5.      массив-диапазон от −10 до 10 с шагом 0.1;

    6.     массив-диапазон от −e до e с шагом e/50;

    7.      массив-диапазон от −15_ до 15_ с шагом pi/12;

    8.      единичную матрицу размера 5 × 5;

    9.       диагональную матрицу размера 5 × 5, все значения на главной диагонали которой равны 0.5;

    10.   матрицу размера 5 × 5, где на главной диагонали стоят единицы, а прочие элементы равны 2;

    11.   матрицу размера 5 × 5, где в первом столбце стоят единицы, во втором - двойки, в третьем - тройки и т. д.

    12.   матрицу размера 5 × 5, где в первой строке стоят единицы, во втором - двойки, в третьем - тройки и т. д.

    13.   матрицу размера 5 × 5, где на главной диагонали стоят нули, элементы выше неё - единицы, ниже - минус единицы;

    14.  верхнюю треугольную матрицу 5 × 5, где все элементы выше главной диагонали равны −2, а на ней - единицы;

    15.  нижнюю треугольную матрицу 5 × 5, где все элементы ниже главной диагонали равны 2, а на ней - единицы.

     Внимание: задания 10–15 требуют умения манипулировать с отдельными столбцами или строками двумерного массива!

    Задание 5.2

     Загрузите из файла, созданного в предыдущем задании, данные в массив. Убедитесь, что новый массив получился двумерный. Создайте одномерный массив-диапазон и прибавьте его к вашей матрице.

     Посмотрите, что получилось. Определите максимальный и минимальный элементы массива. Посчитайте сумму элементов по каждой строке массива. Запишите в два отдельных текстовых файла ваши массив-матрицу и массив-вектор.

    Задание 5.3

    В задании 5.3  следует выполнить три пункта в зависимости от номера в списке группы в алфавитном порядке. Необходимо сделать задания №m, №m+5, №m + 10, m = (n − 1)%5 + 1, где n - номер в списке группы.

     Протабулируйте (вычислите значения функций при изменении аргумента в некоторых пределах с заданным шагом) функции:



    Задания на модуль 6.

    Для каждого из заданий данного раздела следует выполнить 1 вариант с номером (n − 1)%m + 1, где n - номер в списке группы, а m - число заданий.

    Задание 6.1 

    Постройте графики следующих функций, используя шаг выборки данных по абсциссе из задания 5.3:



    Задание 6.2

    Для построенного в рамках задания 6.1 графика измените:

    • цвет линии;

    • тип линии и маркеров;

    • шаг выборки данных.

    Далее введите сетку. Сохраните полученный график в файл, попробуйте сохранять файл в разных форматах: png, pdf, jpg, eps.

    Задание 6.3 

    Постройте семейство функций на одном графике различными цветами:



    Задание 6.4 

    Для построенного в задании 6.3 графика сделайте сетку и легенду. Перестройте графики так, чтобы каждая кривая располагалась на одном графике с помощью команды subplot, легенду уберите, а её текст переместите в название соответствующего графика. Графики расположите на полотне:

    • в одни столбец;

    • в два столбца;

    • в 3 столбца;

    • в одну строку.

    Перестройте графики из задания каждый в своём окне. Сделайте так, чтобы эти графики автоматически сохранялись каждый в свой файл.

    Задание 6.5 

    Постройте круговую диаграмму, которая показывала бы доли от общего числа студентов вашей группы, сдавших сессию на:

    1. одни пятёрки,

    2. пятёрки и четвёрки,

    3. с тройками, но без задолженностей,

    4. с задолженностями, сумевших в итоге пересдать,

    5. не сдавших и отчисленных (если такие имеются).

    Задание 6.6

     Постройте закрашенную контурную диаграмму и трёхмерный график для следующих функций двух переменных, определённых в прямоугольной области x ∈ [−3; 3], y ∈ [−3; 3]:





    Построенные графики сохраните в файлы с расширением png.


    написать администратору сайта