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

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

  1. Сравните и противопоставьте следующие пары терминов:

    1. Определённый и неопределённый циклы

    2. Циклы for и циклы while

    3. Интерактивный цикл и цикл с проверкой

    4. Цикл с проверкой на окончание и цикл до конца файла

  2. Приведите таблицы истинности, которые показывают значения всех булевых выражений при всех возможных вариантах значений булевых переменных. Указание: включение колонок для промежуточных выражений бывает полезно.

    1. не (P и Q)

    2. (не P) и Q

    3. (не P) или (не Q)

    4. (P и Q) или R

    5. (P или Q) и (Q или R)

  3. Напишите цикл while, который вычисляет следующие значения:

    1. Сумму первых n натуральных чисел: 1+2+3+…+n

    2. Сумму первых n нечетных чисел: 1+3+5+…+(2n-1)

    3. Сумму последовательности чисел, введённой пользователем, пока не будет введено число 999. Замечание: число 999 не должно быть слагаемым суммы.

    4. Число раз сколько целое число n можно делить на два без остатка.

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

  1. Последовательность Фибоначчи начинается с чисел 1, 1, 2, 3, 5, 8, … . Каждое число последовательности (за исключением первых двух) является суммой двух предыдущих. Напишите программу, которая вычисляет и выдаёт n-ое число Фибоначчи, где n вводится пользователем.

  2. Коэффициент погодной резкости вычисляется по формуле 35.74+0.6215T-35.75(V0.16)+0.4275T(V0.16), где T это температура в градусах Фаренгейта и V это скорость в милях в час. Напишите программу, которая печатает хорошо отформатированную таблицу значений коэффициентов. Столбцы должны представлять скорость ветра от 0 до 80 км/ч, с шагом 8 км/ч, строки представляют температуры от -20 до 30 градусов Цельсия с шагом 5 С0. Замечание: формула применима только тогда, когда скорость ветра превышает 5 км/ч.

  3. Напишите программу, которая использует цикл while и определяет за какое время удваивается вклад для данных годовых процентов. Ввод это годовые проценты, вывод это число лет, за которые удваивается вклад. Замечание: размер вклада не имеет значение, можно взять вклад, равный 1 руб.

  4. Последовательность Сиракуз (Коллатца или градин) образуется для любого натурального числа следующим образом: syr(x)= x/2, если х – четно, syr(x)= 3x+1, если х – нечетно. Вопрос, всегда ли последовательность Сиракуз содержит 1, является в настоящее время открытым. Напишите программу, которая для заданного числа пишет последовательность Сиракуз, вплоть до первой 1.

  5. Положительное целое число n>2 простое, если никакое число между 2 и включительно не делит n нацело. Напишите программу, которая получает целое число n и определяет, является ли оно простым. Если n не является простым, то программа должна прекращать работу, как только обнаруживается первый нетривиальный делитель, который нацело делит n.

  6. Измените предыдущую программу так, чтобы находить все простые числа меньшие либо равные n.

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

  8. Наибольший общий делитель (НОД) двух целых чисел можно вычислить с помощью алгоритма Евклида. Начиная со значений m и n мы последовательно применяем формулу n, m = m, n%m, пока m не станет равным 0. В этот момент n=НОД. Напишите программу, которая вычисляет НОД двух чисел с помощью описанного алгоритма.

  9. Напишите программу, которая вычисляет эффективность использования топлива на многоэтапном маршруте. Программа сначала просит ввести начальные показания одометра, а затем все данные об этапах путешествия. Для каждого этапа пользователь вводит его длину и количество использованного на этапе топлива. Пользователь обозначает окончание путешествия пустой строкой. Программа должна посчитать количество литров топлива на 100 км на каждом этапе и для всего путешествия в целом.

  10. Переведите предыдущую программу в пакетный режим.

  11. Градусодни нагревания и охлаждения вычисляются коммунальными компаниями, чтобы определить потребности в топливе. Если средняя температура за день меньше 60 F, то число градусов ниже 60 F добавляется к градусодням нагревания. Если средняя температура выше 80 F, то число градусов выше 80 F добавляется к градусодням охлаждения. Напишите программу, которая получает последовательность средних температур и вычисляет градусодни нагревания и охлаждения. Программа должна напечатать эти результаты после обработки всех данных.

  12. Переведите предыдущую программу в пакетный режим.

  13. Напишите программу, которая чертит прямую регрессии, то есть прямую, которая наилучшим образом расположена по отношению к последовательности точек. . Сначала попросите пользователя ввести множество точек. Поместите небольшой прямоугольник с надписью «Окончание» внизу слева в окне; программа должна прекратить сбор точек после щелчка в этом окне. Прямая регрессии задаётся следующими уравнениями: , где , и n число точек, -- среднее х-значений, -- среднее у-значений.

  14. Напишите программу, которая переводит цветное изображение в черно-белое. Пользователь вводит имя файла , содержащего GIF или PPM изображение, а программа загружает изображение и отображает файл. По щелчку мыши программа преобразует изображение в черно белое. У пользователя затем просят назвать имя файла, в котором следует сохранить черно-белое изображение. Основная идея преобразования изображения заключается в переборе всех пикселов и замене цвета каждого цветного пиксела на оттенок серого цвета. Серый цвет пиксела получается после задания всем компонентам цвета одной и той же яркости. Так color_rgb(0, 0, 0) это черный цвет, color_rgb(255, 255, 255) это белый цвет, цвет color_rgb(127, 127, 127) находится на полпути от одного ко второму. Вам следует использовать взвешенное среднее первоначальных значений RGB, чтобы определить яркость серого. Ниже приводится псевдокод для перевода для каждой строки в изображении для каждого столбца в изображении r, g, b = получаем данные о цвете brightness= int(round(0.299r+0.587g+0.114)) установи пиксел в color_rgb(brightness, brightness, brightness) актуализация изображения Замечание: пикселовские операции очень медленные, поэтому следует использовать достаточно маленькие файлы.

  15. Напишите программу, переводящую изображение в его негатив. Общая форма программы такая же как и предыдущая. Негатив пиксела получается вычитанием каждой цветовой составляющей из 255. Поэтому новым цветом пиксела будет color_rgb(255-r, 255-g, 255-b).

22