/
Nick_Wern
/
SUSU
Обзор
Документация
Войти
/
Nick_Wern
/
SUSU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Python/Lesson3.py
245 строк
13 KB
Nick_Wern
Добавлены работы по дисциплине Программирование на Python
03 май 2026, 19:26
03 май 2026, 19:26
913d1bd
Код
Авторство
О чём код?
import os, math # cls для Windows # clear для Linux cls = "cls" def lesson3_1(): while True: os.system(cls) print("Напишите программу, запрашивающую у пользователя целые числа, пока он не оставит строку ввода пустой.") print("После окончания ввода на экран должны быть выведены сначала все отрицательные числа, которые были введены, затем нулевые и только после этого положительные.") print("Внутри каждой группы числа должны отображаться в той последовательности, в которой были введены пользователем.") print("Входные данные: ввести последовательность целых чисел, причем каждое число в новой строке.") print("Выходные данные: вывести последовательность чисел в порядке отрицательные, нули и положительные. Каждое значение должно отображаться на новой строке.") value = input("Введите число (exit для выхода): ") if value == "exit": break try: positive = [] negative = [] zero = 0 while True: value = int(value) if value < 0: negative.append(value) elif value > 0: positive.append(value) else: zero += 1 value = input("Введите число: ") if value == "": break numbers = negative + [ 0 for i in range(zero)] + positive for number in numbers: print(number) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson3_2(): while True: os.system(cls) print("Напишите программу, которая удаляет комментарии из кода. Если строка состоит только из комментария, то ее не нужно выводить.") print("Входные данные: вводятся строки программы. Признаком остановки является пустая строка.") print("Выходные данные: вывести очищенные от комментариев строки программы. Если вся строка является комментарием, то ее выводить не надо.") value = input("Введите строку кода (exit для выхода): ") if value == "exit": break try: strings = [ value ] while True: string = input("Введите строку кода: ") if string == "": break strings.append(string) print("") for string in strings: index = None for i, symbol in enumerate(string): if symbol == "#": index = i break if index != None: modified = string[:index] if modified: print(modified) else: print(string) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson3_3(): while True: os.system(cls) print("Решето Эратосфена – алгоритм, изобретенный более 2000 лет назад и служащий для нахождения всех простых чисел от 2 до некоторого целого числа n.") print("Описание этого алгоритма приведено ниже.") print("Выписываем все целые числа от 0 до заданной границы") print("Вычеркиваем 0 и 1 как непростые числа") print("Устанавливаем значение переменной p, равное 2") print("Пока p меньше указанного числа, делать") print(" Вычеркиваем все числа, кратные p, но не его само") print(" Устанавливаем значение p, равное следующему невычеркнутому числу") print("Выводим все числа, оставшиеся незачеркнутыми") print("Ценность данного алгоритма заключается в том, что на бумаге очень легко вычеркнуть все числа, кратные определенному.") print("Для компьютера это также не самая сложная задача – с этим может прекрасно справиться инструкция for с третьим параметром, переданным функции range.") print("Мы знаем, что вычеркнутые числа на листочке не являются простыми, но физически они никуда с листа не деваются и должны участвовать в дальнейшем алгоритме.") print("Так что и в компьютерной симуляции не стоит «вычеркивать» элемент путем его удаления из списка – вместо этого лучше будет присвоить ему значение 0.") print("После завершения алгоритма все ненулевые числа в списке и будут простыми.") print("Напишите программу, реализующую указанный выше алгоритм для отображения простых чисел в интервале от двух до значения, введенного пользователем.") print("Если алгоритм будет реализован правильно, ваша программа справится с выводом всех простых чисел от двух до миллиона всего за пару секунд.") print("Входные данные: вводится целое число n – правая граница диапазона проверяемых чисел на простоту.") print("Выходные данные: вывести список простых чисел из диапазона от 2 до n.") value = input("Введите целое число n (exit для выхода): ") if value == "exit": break try: value = int(value) numbers = [ x for x in range(0, value) ] numbers[0] = 0 numbers[1] = 0 for i in range(2, value // 2): for j in range(i + 1, value): if numbers[j] == 0: continue elif numbers[j] % i == 0: numbers[j] = 0 result = [] for number in numbers: if number != 0: result.append(str(number)) print(", ".join(result)) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson4_1(): while True: os.system(cls) print("Создайте мини-поисковик, который по ключевому слову покажет подходящие заголовки страниц.") print("Входные данные: вводится натуральное число N – количество страниц, среди которых требуется произвести поиск. В каждой из последующих N строк записаны заголовки страниц.") print("В последней строке записан поисковый запрос (ключевое слово).") value = input("Введите количество страниц (exit для выхода): ") if value == "exit": break try: labels = [] lowerLabels = [] for i in range (int(value)): value = input(f"Введите заголовок страницы {i + 1}: ") labels.append(value) lowerLabels.append(value.lower()) keyWord = input("Введите ключевое слово: ").lower() print("") for i, label in enumerate(lowerLabels): if label.find(keyWord) != -1: print(labels[i]) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson4_2(): while True: os.system(cls) print("Целое число n называется совершенным, если сумма всех его собственных делителей равна самому числу n.") print("Например, 28 – это совершенное число, поскольку его собственными делителями являются 1, 2, 4, 7 и 14, а 1 + 2 + 4 + 7 + 14 = 28.") print("Напишите программу для определения того, является ли заданное число совершенным.") print("Входные данные: вводится целое число n.") print("Выходные данные: вывести True, если число представляет собой совершенное число, и False – в противном случае.") value = input("Введите число (exit для выхода): ") if value == "exit": break try: dividerSum = 0 value = int(value) for i in range(1, value // 2 + 1): if value % i == 0: dividerSum += i print(dividerSum == value) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson5_1(): while True: os.system(cls) print("RLE (Run-Length Encoding) – это способ сокращенной записи повторяющихся символов. Вместо длинной группы одинаковых символов записывается сам символ и число его повторений. Например, 99999 превращается в 9 5 («девять пять раз»).") print("Напишите программу, которая получает строку из цифр и выводит ее RLE-представление: последовательность пар «цифра – количество подряд идущих повторений».") print("Входные данные: вводится строка цифр длиной не меньше 1.") print("Выходные данные: вывести пары: сама цифра и количество повторений цифры подряд во введенной строке, как описано в условии и показано в примере.") value = input("Введите последовательность цифр (exit для выхода): ") if value == "exit": break try: int(value) # Проверка на отсутствие посторонних символов if value == "": print("Вы не ввели значение") else: currentSymbol = "" countSymbols = 0 for symbol in value: if currentSymbol != symbol: if currentSymbol != "": print(f"{currentSymbol} {countSymbols}") currentSymbol = symbol countSymbols = 0 countSymbols += 1 print(f"{currentSymbol} {countSymbols}") except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") while True: os.system(cls) print("Выполненные задания:") print("3.1") print("3.2") print("3.3") print("4.1") print("4.2") print("5.1") lesson = input("Введите номер задания (например 1.2) (exit для выхода): ") match lesson: case "exit": exit() case "3.1": lesson3_1() continue case "3.2": lesson3_2() continue case "3.3": lesson3_3() continue case "4.1": lesson4_1() continue case "4.2": lesson4_2() continue case "5.1": lesson5_1() continue