Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОбсуждУпр8_Python зачет.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
138.42 Кб
Скачать

Глава 7. Обсуждения

  1. Объясните следующие шаблоны своими словами:

    1. простое ветвление

    2. ветвление с двумя вариантами

    3. выбор из нескольких вариантов

  2. Рассмотрим следующую структуру ветвления: a, b, c, =eval(input(“Введите три числа через запятые: ”)) if a>b: if b>c: print(“Хочу колбасы!”) else: print(“Это запоздалый попугай!”) elif b>c: print(“Специализированный магазинчик сыров”) if a>=c: print(“Чеддер”) elif a<b: print(“Гауда”) elif c==b: print(“Швейцарский сыр”) else: print(“Деревья”) if a==b: print(“Каштан”) else: print(“Лиственница”) print(“Окончание”) Найдите что будет выведено после каждого из следующих вводов чисел

    1. 3, 4, 5

    2. 3, 3, 3

    3. 5, 4, 3

    4. 3, 5, 2

    5. 5, 4, 7

    6. 3, 3, 2

  3. В чем обработка ошибок с помощью try/except одинакова и в чем различна с обработкой исключительных случаев с помощью обычных структур ветвления (вариаций, основанных на команде if)

Глава 7. Упражнения

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

  2. Преподаватель информатики задаёт 5-бальные задачи и выставляет за них буквенные оценки по следующему закону: 5-A, 4-B, 3-C, 2-D, 1-F, 0-F. Используя команду выбора, напишите программу, которая получает численную оценку, а выдаёт буквенную

  3. Профессор информатики проводит 100-бальный экзамен и выставляет буквенные оценки согласно следующей таблице

90-100

A

80-89

B

70-79

C

60-69

D

<60

F

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

  1. Некий колледж классифицирует студентов согласно зачетам по предметам, пройденным студентами. Студент с менее чем 7 зачетами «новичок». Семи зачетов достаточно, чтобы стать «недоучкой», 16, чтобы стать кадетом и 26 зачетов обеспечивают звание «старшего». Напишите программу, которая по количеству зачетов определяет звание студента.

  2. Индекс массы тела (ИМТ) вычисляется как вес тела человека в фунтах (1 фунт =0.45 кг) умноженный на 720 и делённый на квадрат роста человека в дюймах (1 дюйм=2.54 см). Индекс в пределах 19-25 включительно рассматривается как индекс здорового человека. Напишите программу, вычисляющую индекс и печатающую сообщение находится ли индекс ниже в пределах или выше «здоровой области».

  3. Штраф за превышение скорости в Урюпинске 1500 руб. плюс 150 руб. за каждые 1.5 км/час сверх нормы плюс штраф 6000 руб. за скорость свыше 150 км/час. Напишите программу, которая получает норму скорости и фактическую скорость и выводит величину штрафа или пишет что скорость в пределах дорожных правил.

  4. Няня маленьких детей получает 75 руб. до 21:00, после чего оплата падает до 65 руб. (дети в постели). Напишите программу, в которую вводится начальное и конечное время няни, после чего она вычисляет величину оплаты.

  5. Человек может быть выбран в американский сенат, если ему не менее 30 лет и он не менее чем 9 лет является американским гражданином. Для избрания в палату представителей достаточно 25 и 7 лет соответственно. Напишите программу, которая принимает возраст и годы гражданства, а выдаёт возможность выбора в сенат или палату представителей.

  6. Формула для вычисления Пасхи в 1982-2048 годах выглядит следующим образом: пусть a=year%19, b=year%4, c=year%7, d=(19a+24)%30, e=(2b+4c+6d+5)%7. Дата Пасхи (22+d+e) марта (может быть и в апреле). Напишите программу, которая получает год, проверяет попадает ли год в указанные выше пределы и если да, то вычисляет дату Пасхи в заданном году.

  7. Формула для Пасхи из предыдущей задачи работает для всех лет из отрезка 1900-2099 за исключением 1954, 1981, 2049 и 2076 года. Для этих лет выдаваемый ответ ровно на одну неделю позже настоящей даты. Измените программу, чтобы она работала для 1900-2099 годов.

  8. Год високосный, если он делится на 4за исключением годов делящихся на 100 и не делящихся на 400 (1800 и 1900 годы не високосные, а 1600 и 2000 високосные). Напишите программу, которая определяет является ли введённый год високосным.

  9. Напишите программу, которая принимает дату в форме dd/mm/yyyy и сообщает является ли дата реальной или нет. Например, 24/5/1962 реальная дата, а 31/9/2000 – нет (в сентябре только 30 дней).

  10. Дни года часто нумеруются числами от 1 до 365 (или 366). Это число можно вычислить за три шага, используя целую арифметику:

    1. dayNum=31(month-1)+day

    2. если месяц после февраля следует вычесть (4(month)+23)//10

    3. если это високосный год и дата после февраля 29, то добавьте 1. Напишите программу, которая принимает дату по шаблону dd/mm/yyyy, проверяет, что это реальная дата и затем вычисляет соответствующий дню номер.

  11. Сделайте упражнение 7 из главы 4, но добавьте оператор ветвления, чтобы учесть случаи, когда прямая не пересекает круг.

  12. Сделайте упражнение 8 из главы 4, но добавьте оператор ветвления, чтобы избежать деления на 0, когда прямая вертикальна.

  13. Подсчет очков для стрелка из лука. Напишите программу, которая рисует мишень для стрелка из лука (упражнение 2 из главы 4) и позволяет пользователю щелкнуть 5 раз, задавая попадания в цель лучника. Используя 5-ступенчатую систему подсчета (центральный кружок желтого цвета – 9 очков, каждое последующее кольцо на 2 очка дешевле, так что за попадание в белое кольцо даётся 1 очко). Программа должна выдавать текущий счет для каждого щелчка мыши вплоть до последнего.

  14. Напишите программу движения (с отскоками) круга в окне. Основная идея запустить круг где-то внутри окна. Используйте переменные dx и dy (обе инициализированы 1) для управления движением круга. Используйте большой определённый цикл, скажем на 10000 итераций. Когда значение x становится максимальным, то изменяем dx на -1, когда значение х становится минимальным, то изменяем dx на 1. Аналогично для переменной y. Замечание: возможно ваша анимация окажется чересчур быстрой. Можно замедлить анимацию с помощью функции sleep из библиотеки time. from time import sleep … sleep(0.005) # останавливает выполнение программы на 5 тысячных секунды

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