Да. Отчет лабораторная работа № 4 по Python. Лабораторная работа 4 Вариант 8 Автор работы (подпись)
Скачать 76.25 Kb.
|
СОДЕРЖАНИ Задача №1 4 Задача №2 6 Задача №3 7 Задача №4 8 Задача №5 9 Задача №6 11 Задача №7 12 13 Задача №8 14 15 Задача №9 16 Задача №10 18 Задача №11 19 Задача №12 21 Задача №1 3 Задача №2 5 Задача №3 6 Задача №4 7 Задача №5 8 Задача №6 10 Задача №7 11 Задача №8 13 Задача №9 15 Задача №10 17 Задача №11 18 Задача №12 20 Задача №1Условие: Как известно, когда мы придумываем пароль от аккаунта ВКонтакте, электронной почты или Яндекс.Контеста, к этому паролю часто предъявляются определённые требования по сложности. Напишите программу, которая имитирует проверку пароля, придуманного пользователем. Пользователь вводит пароль, потом ещё раз его же, для подтверждения. если пароль, который ввёл пользователь (в первый раз) короче 8 символов, программа выводит "Короткий!" и завершает свою работу если пароль достаточно длинный, но введённый во второй раз пароль не совпадает с первым, программа выводит "Различаются." если же и эта проверка пройдена успешно, программа выводит "OK" (латинскими буквами). Формат ввода Две строки — первый и второй пароль, введенные пользователем. Формат вывода Одна строка — результат проверки пароля. Решение: count = 0 while count < 2: password = input() if count == 0: password_1 = password if len(password) < 8: print('Короткий') break elif password != password_1: print('Различаются') break count += 1 else: print('Ок') Пример работы программы: Задача №2Условие: Напишите программу, которая считывает температуру в градусах Цельсия и выводит "ХОЛОДНО", если температура меньше 15 5, "ЖАРКО", если температура больше 28, и "НОРМАЛЬНО" в остальных случаях. Формат ввода Одно число с плавающей точкой — температура. Формат вывода Одна строка — ответ на задачу. Решение: while True: temperature = float(input()) if temperature < 15.5: print('ХОЛОДНО') break elif temperature > 28: print('ЖАРКО') break else: print('НОРМАЛЬНО') break Пример работы программы: Задача №3Условие: В магазине акция: скидка 5% на товары, цена которых превышает 1000 рублей. Напишите программу, отчасти имитирующую работу кассового аппарата: вводятся цены покупаемых товаров, нужно вывести общую стоимость товаров с учётом скидки. Формат ввода Несколько действительных чисел — цены на товары. Каждое число записано в отдельной строке. Последнее число — отрицательное — сигнал остановки. Формат вывода Одно действительное число — общая стоимость товаров с учётом скидки. Решение: summ = 0 while True: price = float(input()) if price < 0: break if price > 1000: price = price - price * 0.05 summ += price print(summ) Пример работы программы: Задача №4Условие: Пользователь вводит строки одну за другой до тех пор, пока не введёт пустую. Программа должна выводить введенные строки, пока не встретилась пустая. Формат ввода Вводятся строки одна за другой. Формат вывода Введенные строки до пустой Решение: while True: word = input() if word == '' or word == ' ': break print(word) Пример работы программы: Задача №5Условие: После полета Юрия Гагарина в 1961 практически каждый мальчик СССР хотел стать космонавтом. Прошло уже более полувека, но профессия космонавт все так же престижна. К сожалению, не каждый желающий может пройти отбор, существуют высокие требования к уровню подготовки будущих космонавтов, а также ограничения по антропометрическим показателям. Например, рост космонавта не может быть больше 190 см и меньше 150 см. Напишите программу, которая считывает рост претендентов в отряд космонавтов до тех пор, пока не будет введен «!». А затем выводит на первой строчке количество подходящих кандидатур, а на второй строке – минимальный и максимальный рост участников, отобранных в новый отряд космонавтов. Гарантируется, что в отряд отберутся как минимум два летчика-космонавта. Формат ввода Несколько строк с ростом космонавтов и последняя строка «!». Формат вывода Две строки: количество кандидатур на первой, и минимальный и максимальный рост через пробел – на второй. Решение: participants = 0 arr = [] while True: height = input() if height == '!': break participants += 1 height = int(height) arr.append(height) print(participants) print(max(arr), min(arr)) Пример работы программы: Задача №6Условие: Пользователь вводит числа одно за другим до тех пор, пока не введёт ноль. Программа должна выводить введенные числа до тех пор, пока не будет введен 0 Никаких операций с числами не производится. Формат ввода Вводятся целые числа одно за другим, на отдельных строках. Формат вывода Выводятся введенные числа на отдельных строках до тех пор, пока не будет введен ноль Решение: while True: number = int(input()) if number == 0: break print(number) Пример работы программы: Задача №7Условие: Как известно, когда мы придумываем пароль от аккаунта ВКонтакте, электронной почты или Яндекс.Контеста, к этому паролю часто предъявляются определённые требования по сложности. Напишите программу, которая имитирует проверку пароля, придуманного пользователем. Пользователь вводит пару слов: пароль, а потом ещё раз его же, для подтверждения. Если введённая пара не удовлетворяет одному из перечисленных ниже условий, пользователь вводит пару паролей ещё раз, и так до тех пор, пока не будут выполнены все условия (т. е. пока программа не выведет «OK»). если первый пароль из пары, который ввёл пользователь короче 8 символов, программа выводит на экран слово "Короткий!" и заново считывает пару слов-паролей; если же первый пароль из пары достаточно длинный, но в нём содержится сочетание символов "123", программа выводит на экран слово "Простой!" и снова читает пару слов-паролей; если же предыдущие проверки пройдены успешно, но введённые слова-пароли не совпадают, то программа выводит на экран слово "Различаются." и опять же читает пару слов-паролей; если же и третья проверка пройдена успешно, программа выводит "OK" (латинскими буквами) и заканчивает свою работу. Формат ввода Несколько раз подряд следуют две строки — пароль, введённый пользователем в первый и во второй раз. Формат вывода Несколько строк — результат проверки пар паролей. Решение: count = 0 while True: password = input() if len(password) < 8: print('Короткий') elif '123' in password: print('Простой') if count == 0: password_1 = password elif password != password_1: print('Различаются') else: print('Ок') break count += 1 Пример работы программы: Задача №8Условие: Напишите программу, которая отгадывает загаданное целое число от 1 до 1000 (пользователь загадывает число в уме и не сообщает программе). Угадать число нужно не более чем за 10 попыток. На каждую попытку пользователь отвечает, что названное число больше загаданного (вводит символ “>”), меньше загаданного (“<”) или угадано правильно (“=”). Используйте бинарный поиск. Программа должна каждый раз называть число, находящееся посередине исследуемого диапазона — в результате станет ясно, в какой половине диапазона находится искомое число. Например, для диапазона от 1 до 8 (а не до 1000) это могло бы выглядеть так (загадано число 5): 4 (программа пробует угадать, называя число из середины интервала от 1 до 8) < (пользователь отвечает, что названное число меньше искомого; теперь программа ищет в интервале от 4 до 8) 6 > 5 = Решение: count = 0 num = 1000 while count < 10: answer = input(f'Это число {num}? ') if answer == '<': num //= 2 elif answer == '>': num += num // 2 else: print('Угадал') break count += 1 Пример работы программы: Задача №9Условие: Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан клад, но этого мало: остров полон опасностей, и нужно перемещаться строго по указаниям карты, которая, к счастью, тоже имеется в нашем распоряжении. Мы хотим найти клад как можно скорее. Известны координаты клада и указания, которым нужно следовать, чтобы его найти. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп». После слова «вперёд» следует количество шагов, которое следует пройти в том направлении, куда мы в данный момент смотрим. Слова «налево» или «направо» означают, что нужно изменить направление взгляда под прямым углом, «разворот» — что прямо на обратное. Команда «стоп» означает остановку. Найдите минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу. Формат ввода Сначала вводятся два числа на отдельных строчках: координаты клада по оси икс (запад-восток) и игрек (юг-север). Затем следует некоторое количество указаний карты. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа на отдельной строке. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп». Формат вывода Программа выводит на отдельных строках минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу, и направление взгляда в этот момент (одно из: «север», «юг», «запад», «восток»). Гарантируется, что карта приводит к кладу. Решение: x_res = int(input()) y_res = int(input()) x = 0 y = 0 while True: answ = input() step = int(input()) if answ == 'вперёд': look = 'север' y += step elif answ == 'вправо': look == 'восток' x += step elif answ =='влево': look == 'запад' x -= step elif answ == 'разворот': look == 'юг' if answ == 'стоп' or x == x_res and y == y_res: print(look) print(x, y) break Пример работы программы: Задача №10Условие: Пользователь вводит одно за другим целые числа, делящиеся на 10, пока не введёт число, которое не делится на 10 Программа выводит введеные числа до тех пор, пока они делятся на 10 Формат ввода Вводятся числа одно за другим, каждое на отдельной строке. Формат вывода Введеные числа, каждое на отдельной строке, пока введенные числа делятся на 10 Решение: while True: nm = int(input()) if nm % 10 == 0: print(nm) else: break Пример работы программы: Задача №11Условие: Сиракузская последовательность, или последовательность Коллатца, строится так: возьмём натуральное число n; если оно чётное, то заменим его числом n/2; если же оно нечётное, то заменим его числом 3n+1. Получившееся число — следующее в сиракузской последовательности после числа n. Затем заменяем получившееся число по тому же правилу, и так далее. Обычно, если проделать такую замену достаточно много раз, мы приходим к числу 1 (за которым следует снова). Например: Определите, сколько шагов потребуется сиракузской последовательности, стартующей с заданного числа, чтобы прийти к 1 Если вы обнаружите число, сиракузская последовательность от которого не приходит к 1, то... вы, скорее всего, ошиблись. Но если нет, то поздравляем: вы прославитесь, ведь вопрос о том, всегда ли сиракузская последовательность приходит к 1 (независимо от начального числа), давно будоражит умы математиков. Формат ввода Вводится одно натуральное число n. Формат вывода Выводится одно число — количество шагов, необходимое стартующей от n сиракузской последовательности, чтобы впервые дойти до 1 Решение: n = int(input()) count = 0 while n != 1: if n % 2 == 0: n //= 2 else: n = n * 3 + 1 count += 1 else: print(count) Пример работы программы: Задача №12Условие: Несколько дней подряд метеоролог измеряет температуру воздуха в своём городе. Ваша программа считывает измеренные им значения и выводит среднее значение температуры за время измерений. Чтобы обозначить конец ввода данных, вводится значение, меньшее -300 (реальная температура не может быть ниже -273 15). При проведении вычислений с действительными числами ответ может незначительно отличаться от математически правильного из-за погрешностей округления; это не повлияет на проверку решения. Формат ввода Несколько (не меньше одного) действительных чисел на отдельных строках — температура воздуха в разные дни. Действительное число, меньшее -300 Формат вывода Одно действительное число — средняя температура воздуха. Решение: count = 0 n = 0 while True: temperature = float(input()) if temperature < -300: break n += temperature count += 1 print(n / count) Пример работы программы: |