__author__ = "Шастин Павел"

# Задача-1:
# Дан список, заполненный произвольными целыми числами, получите новый список,
# элементами которого будут квадратные корни элементов исходного списка,
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4]   Результат: [3, 5, 2]

import math

initList = list(map(int, input("Задача 1. Введите список значений через запятую: ").split(",")))

def filterList(listInt):
    if type(listInt) is not list:
        return "В качестве аргумента функции должен быть передан список. Передан {}".format(type(listInt))

    resList = []
    for i in listInt:
        if i < 0:
            print(i)
            continue

        sq = math.sqrt(i)

        if str(sq).split(".")[1] != "0":
            continue

        resList.append(int(sq))

    return resList


print(initList, filterList(initList))

# Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013.
# Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года.
# Склонением пренебречь (2000 года, 2010 года)


date = input("Задача 2. Введите дату в формате dd.mm.yyyy: ")

def dateToWords(date):
    if type(date) is not str:
        return "В качестве входного аргумента нужна строкаю Дано {}".format(type(date))

    day, month, year = list(map(int, date.split(".")))

    days = ("первое", "второе", "третье", "четвертое", "пятое", "шестое", "седьмое", "восьмое", "девятое",
            "десятое", "одиннадцатое", "двенадцатое", "тринадцатое", "четырнадцатое", "пятнадцатое", "шестнадцатое",
            "семнадцатое", "восемнадцатое", "девятнадцатое", "двадцатое", "двадцать первое", "двадцать второе",
            "двадцать третье", "двадцать четвертое", "двадцать пятое", "двадцать шестое", "двадцать седьмое",
            "двадцать восьмое", "двадцать девятое", "тридцатое", "тридцать первое")

    months = ("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября",
              "октября", "ноября", "декабря")

    return "{} {} {} года".format(days[day-1], months[month-1], year)

print(dateToWords(date))


# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами
# в диапазоне от -100 до 100. В списке должно быть n - элементов.
# Подсказка:
# для получения случайного числа используйте функцию randint() модуля random

import random

min, max, n = list(map(int, input("Введите мин и макс значения случайной последовательности и количество элементов через пробел: ").split() ))

def getRandomList(min, max, n):
    randList = []

    for i in range(n):
        randList.append(random.randint(min, max))

    return randList

print(getRandomList(min, max, n))


# Задача-4: Дан список, заполненный произвольными целыми числами.
# Получите новый список, элементами которого будут:
# а) неповторяющиеся элементы исходного списка:
# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6]
# б) элементы исходного списка, которые не имеют повторений:
# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]

initList = list(map(int, input("Задача 4. Введите список значений через запятую: ").split(",")))


def getUnrptdList(initList):
    return list(set(initList))

def getUnrptdElems(initList):
    unrptdElems = []

    unrptdList = list(set(initList))

    for elem in unrptdList:
        if initList.count(elem) == 1:
            unrptdElems.append(elem)

    return unrptdElems


print(getUnrptdList(initList))
print(getUnrptdElems(initList))
