Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / ЛР4 ООП

.docx
Скачиваний:
0
Добавлен:
21.02.2024
Размер:
17.3 Кб
Скачать

Задание 1:

class Sorted():

   

    #Конструктор со свойством список:

    def __init__(self, spisok):      

        self.spisok = spisok

     

       

    def edit(self):

        lenght = int(self.spisok.pop(0)) #Сохраняем введенное число в переменную и убираем её из списка

        self.spisok.sort(key = lambda spisok: spisok.lower())#

       

        #Проверка на сответсвие числа и кол-ва элементов

        if len(self.spisok) != lenght:

            print("")

            return

           

        #Проверка на 0 <= N <= 1000  

        if not (0 <= lenght <= 1000):

            print("")

            return

       

        #Проверка на 1 <= |S| <= 15

        filtered_spisok = filter(lambda s: 1 <= len(s) <= 15, self.spisok)

        if len(list(filtered_spisok)) != len(self.spisok): #Проверка на фильтрование, если отфильтровалось - что-то не так

            print("")

            return

   

        print(" ".join(self.spisok))

   

       

while True:

    stroka = input("Введите входные параметры\n").split()    

    lst =  Sorted(stroka)  

    lst.edit()

Задание 2:

from functools import reduce #Функция reduce

class Vector():

   

    @staticmethod #Декоратор, чтобы запустить метод класса без объявления его

    def calc(prev, next):

       

        global numbers, sum_all

        prev[-1].append(next)#добавляем элемент в список внутри основного списка

       

        #проверка на соответсвие условию

        if sum(prev[-1]) + next < len(prev) * (sum_all / 3):

            return prev

       

        #если условие не выполняется, то убираем все использованные элементы из начального списка

        #это нужно, чтобы он считал дальше сумму не от всех элеменов, а от оставшихся

       

        numbers = list(set(numbers) - set(prev[-1]))#если убрать эту строчку, то код будет работать, как указано в условии задачи, но последний список всегда будет нулевым:

        #условие остановки

        if numbers:

            sum_all = sum(numbers)

            prev.append([])

        return prev

while True:

    c = int(input("Введите количество цифр\n"))

    numbers = input("Введите числа через пробел\n").split()

    if c == len(numbers):

        numbers = list(map(int, numbers))

        numbers = sorted(numbers)

        sum_all = sum(numbers)

        result = reduce(Vector.calc, numbers, [[]])

        print(" ".join(map(str,result)))

    else:

        print("Кол-во чисел не совпадает")

Соседние файлы в папке Лабы