
- •Обсуждения/Упражнения Глава 1. Обсуждения
- •Глава 1. Упражнения
- •Глава 2. Обсуждения
- •Глава 2. Упражнения
- •Глава 3. Обсуждения
- •Глава 3. Упражнения
- •Глава 4. Обсуждения
- •Глава 4. Упражнения
- •Глава 5. Обсуждения
- •Глава 5. Упражнения
- •Глава 6. Обсуждения
- •Глава 6. Упражнения
- •Глава 7. Обсуждения
- •Глава 7. Упражнения
- •Глава 8. Обсуждения
- •Глава 8. Упражнения
Глава 7. Обсуждения
Объясните следующие шаблоны своими словами:
простое ветвление
ветвление с двумя вариантами
выбор из нескольких вариантов
Рассмотрим следующую структуру ветвления: 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(“Окончание”) Найдите что будет выведено после каждого из следующих вводов чисел
3, 4, 5
3, 3, 3
5, 4, 3
3, 5, 2
5, 4, 7
3, 3, 2
В чем обработка ошибок с помощью try/except одинакова и в чем различна с обработкой исключительных случаев с помощью обычных структур ветвления (вариаций, основанных на команде if)
Глава 7. Упражнения
Многие компании платят в полтора раза больше за часы, отработанные служащим после отработки обязательных 40 часов данной недели. Напишите программу, в которую вводится количество часов, отработанных за неделю, и почасовая оплата служащего, после чего программа вычисляет оплату за неделю.
Преподаватель информатики задаёт 5-бальные задачи и выставляет за них буквенные оценки по следующему закону: 5-A, 4-B, 3-C, 2-D, 1-F, 0-F. Используя команду выбора, напишите программу, которая получает численную оценку, а выдаёт буквенную
Профессор информатики проводит 100-бальный экзамен и выставляет буквенные оценки согласно следующей таблице
-
90-100
A
80-89
B
70-79
C
60-69
D
<60
F
С помощью команды выбора напишите программу, которая по численной оценке выдаёт буквенную.
Некий колледж классифицирует студентов согласно зачетам по предметам, пройденным студентами. Студент с менее чем 7 зачетами «новичок». Семи зачетов достаточно, чтобы стать «недоучкой», 16, чтобы стать кадетом и 26 зачетов обеспечивают звание «старшего». Напишите программу, которая по количеству зачетов определяет звание студента.
Индекс массы тела (ИМТ) вычисляется как вес тела человека в фунтах (1 фунт =0.45 кг) умноженный на 720 и делённый на квадрат роста человека в дюймах (1 дюйм=2.54 см). Индекс в пределах 19-25 включительно рассматривается как индекс здорового человека. Напишите программу, вычисляющую индекс и печатающую сообщение находится ли индекс ниже в пределах или выше «здоровой области».
Штраф за превышение скорости в Урюпинске 1500 руб. плюс 150 руб. за каждые 1.5 км/час сверх нормы плюс штраф 6000 руб. за скорость свыше 150 км/час. Напишите программу, которая получает норму скорости и фактическую скорость и выводит величину штрафа или пишет что скорость в пределах дорожных правил.
Няня маленьких детей получает 75 руб. до 21:00, после чего оплата падает до 65 руб. (дети в постели). Напишите программу, в которую вводится начальное и конечное время няни, после чего она вычисляет величину оплаты.
Человек может быть выбран в американский сенат, если ему не менее 30 лет и он не менее чем 9 лет является американским гражданином. Для избрания в палату представителей достаточно 25 и 7 лет соответственно. Напишите программу, которая принимает возраст и годы гражданства, а выдаёт возможность выбора в сенат или палату представителей.
Формула для вычисления Пасхи в 1982-2048 годах выглядит следующим образом: пусть a=year%19, b=year%4, c=year%7, d=(19a+24)%30, e=(2b+4c+6d+5)%7. Дата Пасхи (22+d+e) марта (может быть и в апреле). Напишите программу, которая получает год, проверяет попадает ли год в указанные выше пределы и если да, то вычисляет дату Пасхи в заданном году.
Формула для Пасхи из предыдущей задачи работает для всех лет из отрезка 1900-2099 за исключением 1954, 1981, 2049 и 2076 года. Для этих лет выдаваемый ответ ровно на одну неделю позже настоящей даты. Измените программу, чтобы она работала для 1900-2099 годов.
Год високосный, если он делится на 4за исключением годов делящихся на 100 и не делящихся на 400 (1800 и 1900 годы не високосные, а 1600 и 2000 високосные). Напишите программу, которая определяет является ли введённый год високосным.
Напишите программу, которая принимает дату в форме dd/mm/yyyy и сообщает является ли дата реальной или нет. Например, 24/5/1962 реальная дата, а 31/9/2000 – нет (в сентябре только 30 дней).
Дни года часто нумеруются числами от 1 до 365 (или 366). Это число можно вычислить за три шага, используя целую арифметику:
dayNum=31(month-1)+day
если месяц после февраля следует вычесть (4(month)+23)//10
если это високосный год и дата после февраля 29, то добавьте 1. Напишите программу, которая принимает дату по шаблону dd/mm/yyyy, проверяет, что это реальная дата и затем вычисляет соответствующий дню номер.
Сделайте упражнение 7 из главы 4, но добавьте оператор ветвления, чтобы учесть случаи, когда прямая не пересекает круг.
Сделайте упражнение 8 из главы 4, но добавьте оператор ветвления, чтобы избежать деления на 0, когда прямая вертикальна.
Подсчет очков для стрелка из лука. Напишите программу, которая рисует мишень для стрелка из лука (упражнение 2 из главы 4) и позволяет пользователю щелкнуть 5 раз, задавая попадания в цель лучника. Используя 5-ступенчатую систему подсчета (центральный кружок желтого цвета – 9 очков, каждое последующее кольцо на 2 очка дешевле, так что за попадание в белое кольцо даётся 1 очко). Программа должна выдавать текущий счет для каждого щелчка мыши вплоть до последнего.
Напишите программу движения (с отскоками) круга в окне. Основная идея запустить круг где-то внутри окна. Используйте переменные dx и dy (обе инициализированы 1) для управления движением круга. Используйте большой определённый цикл, скажем на 10000 итераций. Когда значение x становится максимальным, то изменяем dx на -1, когда значение х становится минимальным, то изменяем dx на 1. Аналогично для переменной y. Замечание: возможно ваша анимация окажется чересчур быстрой. Можно замедлить анимацию с помощью функции sleep из библиотеки time. from time import sleep … sleep(0.005) # останавливает выполнение программы на 5 тысячных секунды
Выберите любимую программистскую задачу из предыдущей главы и добавьте и/или обработку исключений, чтобы сделать программу действительно устойчивой (не будет авоста при любом вводе). Обменяйтесь программами с другом и устройте соревнование, кто быстрее сломает чужую программу.