diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Pyton.git.iml b/.idea/Pyton.git.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/Pyton.git.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d56657a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6bf975f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..d5bcecf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/HomeTask1.zip b/HomeTask1.zip new file mode 100644 index 0000000..192d1f0 Binary files /dev/null and b/HomeTask1.zip differ diff --git a/Lesson2_/Les2Task1.py b/Lesson2_/Les2Task1.py new file mode 100644 index 0000000..1e314b6 --- /dev/null +++ b/Lesson2_/Les2Task1.py @@ -0,0 +1,4 @@ +list_1=(1,1.3,'fine',False, {'price', 224, True}, [1,3,5,5.5,8,0.5,'oro']) +for all_type in list_1: + print(type(all_type)) + # testing \ No newline at end of file diff --git a/Lesson2_/Les2Task2.py b/Lesson2_/Les2Task2.py new file mode 100644 index 0000000..45db405 --- /dev/null +++ b/Lesson2_/Les2Task2.py @@ -0,0 +1,10 @@ +list1 = input("Перечислите не менее 5 наименований:").split() +your_list = len(list1) +i=0 +if your_list > 1: + while i < your_list - 1: + your_list[i], your_list[i+ 1] = your_list[i + 1], your_list[i] + i += 2 + +print(your_list) +# testing \ No newline at end of file diff --git a/Lesson2_/Les2Task3.py b/Lesson2_/Les2Task3.py new file mode 100644 index 0000000..05096ab --- /dev/null +++ b/Lesson2_/Les2Task3.py @@ -0,0 +1,11 @@ +month=input("Введите число месяца от 1 до 12:") +win = 'зима' +spr = 'весна' +sum = 'лето' +aut = 'осень' +dict_season= {'1':win , '2':win, '3':spr, '4':spr, '5':spr, '6':sum, '7':sum, '8':sum, '9':aut, '10':aut, '11':aut, '12':win} +print(dict_season[month]) + +month_list=[win, win, spr, spr, spr, sum, sum, sum, aut, aut, aut, win,win] +print(month_list[int(month)]) +# testing \ No newline at end of file diff --git a/Lesson2_/Les2Task4.py b/Lesson2_/Les2Task4.py new file mode 100644 index 0000000..657ae16 --- /dev/null +++ b/Lesson2_/Les2Task4.py @@ -0,0 +1,4 @@ +name_user= (input('Введите ФИО полностью:')).split() +for a, b in enumerate(name_user): + print(f'{a} - {b[:10]}') + # testing \ No newline at end of file diff --git a/Lesson2_/Les2Task5.py b/Lesson2_/Les2Task5.py new file mode 100644 index 0000000..40c975c --- /dev/null +++ b/Lesson2_/Les2Task5.py @@ -0,0 +1,13 @@ +rating = [7, 5, 3, 3, 2] +user_rating = int(input('Оцените работу оператора от 1 до 10:')) +answer = False +for index, elem in enumerate(rating): + if user_rating > elem: + rating.insert(index, user_rating) + answer = True + break + +if not answer: + rating.append(user_rating) + +print(rating) diff --git a/Lesson2_/test.py b/Lesson2_/test.py new file mode 100644 index 0000000..51861ad --- /dev/null +++ b/Lesson2_/test.py @@ -0,0 +1,2 @@ +a = 10 +print(a) \ No newline at end of file diff --git a/Lesson_3/Les3Task1.py b/Lesson_3/Les3Task1.py new file mode 100644 index 0000000..075f1f1 --- /dev/null +++ b/Lesson_3/Les3Task1.py @@ -0,0 +1,14 @@ + +def num_list_div(x, y): + if y==0: + return "На 0 делить нельзя!" + else: + return x / y + +x=float(input('Введите делимое:')) +y=float(input('Введите делитель:')) + +print(num_list_div(x, y)) + + + diff --git a/Lesson_3/Les3Task2.py b/Lesson_3/Les3Task2.py new file mode 100644 index 0000000..d0eddbf --- /dev/null +++ b/Lesson_3/Les3Task2.py @@ -0,0 +1,12 @@ +def user_data(name,surname,year, city, mail, phone): + result=(name,surname,year, city, mail, phone) + return result +user_name=input('Имя:') +user_surname=input('Фамилия:') +user_year=input('Год рождения:') +user_city=input('Город:') +user_mail=input('Эл.почта:') +user_phone=input('Телефон:') + +user_data_1= user_data(name=user_name, surname=user_surname, year=user_year, city =user_city, mail=user_mail, phone=user_phone) +print(user_data_1) diff --git a/Lesson_3/Les3Task3.py b/Lesson_3/Les3Task3.py new file mode 100644 index 0000000..e034607 --- /dev/null +++ b/Lesson_3/Les3Task3.py @@ -0,0 +1,15 @@ +def list_arg(a,b,c): + min_num = min(a,b,c) + sum_num = a+b+c + return sum_num-min_num + +num_1=int(input('введите певрвое число:')) +num_2=int(input('Введите второе число:')) +num_3=int(input('Введите третье число:')) +my_list=[num_1, num_2, num_3] +result = list_arg(my_list[0], my_list[1], my_list[2]) +print(result) + + + + diff --git a/Lesson_3/Les3Task4.py b/Lesson_3/Les3Task4.py new file mode 100644 index 0000000..2d02a32 --- /dev/null +++ b/Lesson_3/Les3Task4.py @@ -0,0 +1,19 @@ +# Вариант решения-1 + +# def deg_arg(a,b): +# return pow(a, b) +# num_1=float(input('Введите целое положительное число:')) +# num_2=int(input('Введите целое отрицательное число:')) +# +# result = deg_arg(num_1, num_2) +# print(result)] + +# Вариант решения-2 + +def deg_arg(a,b): + return a**b +num_1=float(input('Введите целое положительное число:')) +num_2=int(input('Введите целое отрицательное число:')) + +result = deg_arg(num_1, num_2) +print(result) \ No newline at end of file diff --git a/Lesson_3/Les3Task5.py b/Lesson_3/Les3Task5.py new file mode 100644 index 0000000..36e2681 --- /dev/null +++ b/Lesson_3/Les3Task5.py @@ -0,0 +1,17 @@ +def list_num(num_list, stop): + nums=num_list.split(' ') + total=0 + for x in nums: + if x == stop: + break + total+= int(x) + return total +end = '=' +fin=False +n=0 +while not fin: + user_num = input('Введите числа:') + n+= list_num(user_num, end) + fin=end in user_num + print(f"Sum={n}") + diff --git a/Lesson_3/Les3Task6.py b/Lesson_3/Les3Task6.py new file mode 100644 index 0000000..2626f23 --- /dev/null +++ b/Lesson_3/Les3Task6.py @@ -0,0 +1,7 @@ +def user_words(txt): + text = txt[0].upper()+txt[1:].lower() + return text + +string = input('Введите слова с маленькой буквы:') +for text in string.split(' '): + print(f'{user_words(text)}', end=' ') diff --git a/Lesson_4/Les4_Task1.py b/Lesson_4/Les4_Task1.py new file mode 100644 index 0000000..3ee68e9 --- /dev/null +++ b/Lesson_4/Les4_Task1.py @@ -0,0 +1,7 @@ +from sys import argv +print(argv) +if len(argv)<3: + print('Введите три параметра: 1.Выработка в часах, 2.Ставка в час, 3.Премия') +else: + print(f'Salary= {float(argv[1]) * float(argv[2]) + float(argv[3])}') + diff --git a/Lesson_4/Les4_Task2.py b/Lesson_4/Les4_Task2.py new file mode 100644 index 0000000..a1545e3 --- /dev/null +++ b/Lesson_4/Les4_Task2.py @@ -0,0 +1,11 @@ +my_list= [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] + +# filtred_list=[] +# for i in range(1, len(my_list)): +# if my_list[i]>my_list[i-1]: +# filtred_list.append(my_list[i]) +# print(filtred_list) + + +filtred_list = [my_list[i] for i in range(1, len(my_list)) if my_list[i]>my_list[i-1]] +print(filtred_list) diff --git a/Lesson_4/Les4_Task3.py b/Lesson_4/Les4_Task3.py new file mode 100644 index 0000000..613f026 --- /dev/null +++ b/Lesson_4/Les4_Task3.py @@ -0,0 +1,9 @@ +my_list=list(range(20,241,1)) +# filtred_list=[] +# for i in range(1, len(my_list)): +# if my_list[i]%20==0 or my_list[i]%21==0: +# filtred_list.append(my_list[i]) +# print(filtred_list) + +filtred_list = [my_list[i] for i in range(1, len(my_list)) if my_list[i]%20==0 or my_list[i]%21==0] +print(filtred_list) diff --git a/Lesson_4/Les4_Task4.py b/Lesson_4/Les4_Task4.py new file mode 100644 index 0000000..ff5e8af --- /dev/null +++ b/Lesson_4/Les4_Task4.py @@ -0,0 +1,10 @@ +my_list= [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] + +# filtred_list=[] +# for i in my_list: +# if my_list.count(i)==1: +# filtred_list.append(i) +# print(filtred_list) + +filtred_list = [ i for i in my_list if my_list.count(i)==1] +print(filtred_list) diff --git a/Lesson_4/Les4_Task5.py b/Lesson_4/Les4_Task5.py new file mode 100644 index 0000000..2518293 --- /dev/null +++ b/Lesson_4/Les4_Task5.py @@ -0,0 +1,11 @@ +from functools import reduce +# num_list=[] +# for i in range(100,1001): +# if i%2==0: +# num_list.append(i) +# total=reduce(lambda x, y: x * y, num_list) +# print(total) + +num_list=[i for i in range(100,1001) if i%2==0] +total=reduce(lambda x, y: x * y, num_list) +print(total) \ No newline at end of file diff --git a/Lesson_4/Les4_Task6.py b/Lesson_4/Les4_Task6.py new file mode 100644 index 0000000..7f2d83d --- /dev/null +++ b/Lesson_4/Les4_Task6.py @@ -0,0 +1,14 @@ +from itertools import count, cycle + +for i in count(3): + if i>10: + break + print(i) + +my_list = [3, 15, 18, 42] +counter = 0 +for i in cycle(my_list): + counter += 1 + if counter > 10: + break + print(i) \ No newline at end of file diff --git a/Lesson_4/Les4_Task7.py b/Lesson_4/Les4_Task7.py new file mode 100644 index 0000000..8baa8dd --- /dev/null +++ b/Lesson_4/Les4_Task7.py @@ -0,0 +1,8 @@ +def fact(num): + num_1 = 1 + for i in range(1, num + 1): + num_1 *= i + yield num_1 +x = 10 +for y, z in enumerate(fact(x)): + print(f'!{y+1} {z}') diff --git a/Lesson_4/My_script.py b/Lesson_4/My_script.py new file mode 100644 index 0000000..9f38dbc --- /dev/null +++ b/Lesson_4/My_script.py @@ -0,0 +1,6 @@ +from sys import argv +print(argv) +if len(argv)<3: + print('Введите три параметра: 1.Выработка в часах, 2.Ставка в час, 3.Премия') +else: + print(f'Salary= {int(argv[1]) * int(argv[2]) + int(argv[3])}') \ No newline at end of file diff --git a/Lesson_4/Test.py b/Lesson_4/Test.py new file mode 100644 index 0000000..7111bdd --- /dev/null +++ b/Lesson_4/Test.py @@ -0,0 +1 @@ +print(f'This is python script!') diff --git a/New/.idea/.gitignore b/New/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/New/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/New/.idea/vcs.xml b/New/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/New/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/New/archive/lesson2_1.py b/New/archive/lesson2_1.py new file mode 100644 index 0000000..6c0cfd6 --- /dev/null +++ b/New/archive/lesson2_1.py @@ -0,0 +1,4 @@ +ЗАДАНИЕ1 +list_1=(1,1.3,'fine',False, {'price', 224, True}, [1,3,5,5.5,8,0.5,'oro']) +for all_type in list_1: + print(type(all_type)) diff --git a/README.md b/README.md index 42e11cd..4193ef4 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Pyton \ No newline at end of file +# Python diff --git a/lesson2_task_all.py b/lesson2_task_all.py new file mode 100644 index 0000000..6365ba6 --- /dev/null +++ b/lesson2_task_all.py @@ -0,0 +1,54 @@ + +#ЗАДАНИЕ1 +# list_1=(1,1.3,'fine',False, {'price', 224, True}, [1,3,5,5.5,8,0.5,'oro']) +# for all_type in list_1: +# print(type(all_type)) + +#ЗАДАНИЕ2 (не работает как надо, не знаю почему) +# list1 = input("Перечислите не менее 5 наименований:").split() +# your_list = len(list1) +# i=0 +# if your_list > 1: +# while i < your_list - 1: +# your_list[i], your_list[i+ 1] = your_list[i + 1], your_list[i] +# i += 2 +# +# print(your_list) + +#ЗАДАНИЕ3 +# month=input("Введите число месяца от 1 до 12:") +# win = 'зима' +# spr = 'весна' +# sum = 'лето' +# aut = 'осень' +# dict_season= {'1':win , '2':win, '3':spr, '4':spr, '5':spr, '6':sum, '7':sum, '8':sum, '9':aut, '10':aut, '11':aut, '12':win} +# print(dict_season[month]) +# +# month_list=[win, win, spr, spr, spr, sum, sum, sum, aut, aut, aut, win,win] +# print(month_list[int(month)]) + +#ЗАДАНИЕ4 +# name_user= (input('Введите ФИО полностью:')).split() +# for a, b in enumerate(name_user): +# print(f'{a} - {b[:10]}') + +#ЗАДАНИЕ5 +rating = [7, 5, 3, 3, 2] +user_rating = int(input('Оцените работу оператора от 1 до 10:')) +answer = False +for index, elem in enumerate(rating): + if user_rating > elem: + rating.insert(index, user_rating) + answer = True + break + +if not answer: + rating.append(user_rating) + +print(rating) + + + + + + diff --git a/test.py b/test.py new file mode 100644 index 0000000..7111bdd --- /dev/null +++ b/test.py @@ -0,0 +1 @@ +print(f'This is python script!') diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265 5" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265 5" new file mode 100644 index 0000000..6daf6c8 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265 5" @@ -0,0 +1,36 @@ +#2. Напишите функцию, которая принимает на вход строку +# - абсолютный путь до файла. Функция возвращает кортеж из трёх элементов: путь, имя файла, расширение файла. + +my_way= r'C:\Users\Pobeda\Desktop\geekbrains\Погружение в Python\Home_Task.py' +def my_func(my_way): + *a, b = my_way.split("\\") + *c, d = b.split(".") + c = ".".join(c) + a = "/".join(a) + return a,c,d + +print(my_func(my_way)) + +# 3. Напишите однострочный генератор словаря, который принимает на вход три списка одинаковой длины: +# имена str, ставка int, премия str с указанием процентов вида “10.25%”. В результате получаем +# словарь с именем в качестве ключа и суммой премии в качестве значения. Сумма рассчитывается как ставка +# умноженная на процент премии + + +names = ["Иван", "Николай", "Петр"] +salarys = [125000, 96000, 109000] +awards = ["10.0%", "25.00%", "13.00%"] +my_dict = {names: salarys + ((salarys /100) * float(awards.replace('%', ' '))) for names, salarys, awards in zip(names, salarys, awards)} +print(my_dict) + + + +# 4. Создайте функцию генератор чисел Фибоначчи +a = int(input('Укажите количество элементов: ')) + +def fib(x): + a, b = 0, 1 + for i in range(x): + yield a + a, b = b, a + b +print(list(fib(a))) diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_1" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_1" new file mode 100644 index 0000000..806c8ec --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_1" @@ -0,0 +1,65 @@ +# 2. Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей. +# Дано a, b, c - стороны предполагаемого треугольника. Требуется сравнить длину каждого +# отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше +# суммы двух других, то треугольника с такими сторонами не существует. Отдельно сообщить является +# ли треугольник разносторонним, равнобедренным или равносторонним. + +# a = float(input("Введите длину стороны a: ")) +# b = float(input("Введите длину стороны b: ")) +# c = float(input("Введите длину стороны c: ")) + +# if a + b <= c or a + c <= b or b + c <= a: +# print("Треугольник не может существовать.") +# else: +# if a == b == c: +# print("Треугольник является равносторонним.") +# elif a == b or a == c or b == c: +# print("Треугольник является равнобедренным.") +# else: +# print("Треугольник является разносторонним.") + + + +# 3. Напишите код, который запрашивает число и сообщает является ли оно простым или составным. +# Используйте правило для проверки: “Число является простым, если делится нацело только на единицу +# и на себя”. Сделайте ограничение на ввод отрицательных чисел и чисел больше 100 тысяч. + +# num = int(input("Введите число: ")) + +# if num <= 1 or num > 100_000: +# print("Число должно быть в диапазоне от 2 до 100_000.") +# else: +# is_prime = True +# for i in range(2, num): +# if num % i == 0: +# is_prime = False +# break +# print('Простое число' if is_prime else 'Составное число') + + + +# 4. Программа загадывает число от 0 до 1000. Необходимо угадать число за 10 попыток. +# Программа должна подсказывать «больше» или «меньше» после каждой попытки. + +# import random + +# num = random.randint(0, 1000) +# guess = None +# flag = False +# attempts = 0 + +# print("Загадано число от 0 до 1000. У тебя есть 10 попыток, чтобы его угадать.") + +# while attempts < 10: +# guess = int(input("Введи свой вариант: ")) +# attempts += 1 +# if guess == num: +# print(f"Ура! Ты угадал число {num} за {attempts} попыток.") +# guess = True +# break +# elif guess < num: +# print("Загаданное число больше.") +# else: +# print("Загаданное число меньше.") + +# print(f"У тебя закончились попытки. Загаданное число было {num}." if not flag else '') diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_2" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_2" new file mode 100644 index 0000000..3f24889 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_2" @@ -0,0 +1,66 @@ +# 2. Напишите программу, которая получает целое число и возвращает его шестнадцатеричное +# строковое представление. Функцию hex используйтe для проверки своего результата. + +# def recalculation_number_system(number): +# string_to_translate = '0123456789ABCDEF' +# result = '' +# notation = 16 + +# while number > 0: +# result = string_to_translate[number % notation] + result +# number //= notation + +# return result + +# print('Итог - ', recalculation_number_system(int(input('Введите число для перевода в 16-ю систему счисления: ')))) + + + +# 3. Напишите программу, которая принимает две строки вида “a/b” - дробь с числителем и знаменателем. +# Программа должна возвращать сумму и произведение* дробей. Для проверки своего кода используйте модуль fractions. + +# def fraction_conversion(number): +# numerator, denominator = number.split('/') +# return int(numerator), int(denominator) + + +# def reduction(nom, den): +# def all_devs(number): +# all_dev = set() +# for dev in range(1, number // 1 + 1): +# if not number % dev: +# all_dev.add(dev) +# return all_dev + +# nom_dev = all_devs(nom) +# den_dev = all_devs(den) +# reduct = max(nom_dev.intersection(den_dev)) + +# return str(nom // reduct), str(den // reduct) + + +# def summ(first_number, second_number): +# first, second = fraction_conversion(first_number), fraction_conversion(second_number) + +# if first[1] == second[1]: +# nom = first[0] + second[0] +# den = first[1] +# return '/'.join(reduction(num, den)) +# else: +# nom = first[0] * second[1] + first[1] * second[0] +# den = first[1] * second[1] +# return '/'.join(reduction(nom, den)) + + +# def multi(first_number, second_number): +# first, second = fraction_conversion(first_number), fraction_conversion(second_number) +# nom = first[0] * second[0] +# den = first[1] * second[1] +# return '/'.join(reduction(nom, den)) + + +# first_number = input('Введите первую дробь в формате a/b: ') +# second_number = input('Введите вторую дробь в формате a/b: ') + +# print(f'Summa: {summ(first_number, second_number)}') +# print(f'Multiplication: {multi(first_number, second_number)}') diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_3" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_3" new file mode 100644 index 0000000..d95ef9f --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_3" @@ -0,0 +1,75 @@ +# Дан список повторяющихся элементов. Вернуть список с дублирующимися элементами. +# В результирующем списке не должно быть дубликатов. + +my_list = ['День', 'Ночь', 'День', 1, 1, 51, '51', 1, '1'] +print(f"Мой список: {my_list}") +duplicates = [] + +for item in my_list: + if my_list.count(item) > 1 and item not in duplicates: + duplicates.append(item) + +print(f'Повторяющиеся элементы в списке: {duplicates}') + +# В большой текстовой строке подсчитать количество встречаемых слов и вернуть 10 самых частых. +# Не учитывать знаки препинания и регистр символов. За основу возьмите любую статью из википедии +# или из документации к языку. + +long_string = ''' +Сегодня королевский питон для любителей экзотических домашних животных одна из самых популярных змей. В природных условиях этот вид змей живет в западной части Африки. Излюбленное место его обитания — саванны и открытые леса неподалёку от воды, в которой змеи спасаются от жары, но все же основное время они проводят в норах. Королевский питон активен вечером и ночью, именно тогда он охотится на птиц, ящериц, мелких млекопитающих. + +В неволе при хорошем уходе, королевские питоны чувствуют себя очень комфортно, они не привередливы. Могут укусить, но это скорее редкость, чем обычное явление, так как к этой форме защиты прибегают только в экстренных случаях, обычно сворачиваются в тугой клубок — шарик, за это королевского питона также называют «шаровой питон». + +Продолжительность жизни: на воле — 10 лет, в домашних условиях живут до 30-40 лет. + +Половая зрелость — в возрасте 3-5 лет. Королевский питон один из тех, кто довольно легок в содержании, ухаживать за ним для любителей животных не составит особого труда. Для них необходим просторный стеклянный или пластиковый террариум, в юном возрасте ( пока не вырастут до 90 см) можно содержать и в 35-литровом террариуме, а затем, когда подрастут – стоит увеличить и место их жительства. Периметр их «квартиры» должен превышать длину жильцов как минимум в два раза, чтобы было, где развернуться. + +Обязательное условие содержания в домашних условиях этой змеи – это наличие крышки у террариума, вы ведь не хотите, чтобы ваш питомец отправился гулять по комнате. Кроме того крышка должна иметь отверстия для обеспечения вентиляции. Для подстилки можно использовать бумажные полотенца, газету, искусственный субстрат, а вот древесные опилки вам для этой цели точно не подойдут. + +Так как в природе питон королевский любит прятаться, то и в неволе нужно создать для него такие укромные места. Оптимальная температура для жизнедеятельности питона – 25-29 оC днем, а ночью – 20-23 оС. Для обогрева можно использовать греющие коврики. Для купания питомца нужно сделать в его жилище небольшой водоем, следите, чтобы вода в нем всегда была чистой. Особый момент в уходе за королевскими питонами – питание. Их можно кормить замороженными мышами, крысами, цыплятами, хомяками, живыми животными можно кормить при условии их предварительного оглушения, чтобы избежать травм. Периодичность кормлений зависит от возраста и размера питона. Для молодых - 1 раз в пять дней, взрослым достаточно 1 раза в 10 дней. И не стоит забывать о витаминных добавках, чтобы ваш питомец получал все необходимые для здоровья вещества. +''' + +print(long_string) + +symbols="1234567890-—/\[]().:><,!?""''" +for symbol in symbols: + big_string = long_string.replace(symbol, " ") +big_string = long_string.lower() +my_list = long_string.split() +my_dict = dict() +for word in my_list: + if my_dict.get(word) == None: my_dict[word] = 1 + else: my_dict[word] += 1 + +sorted_dict = sorted(my_dict.items(), key=lambda x: x[1], reverse=True) +print(sorted_dict[:10]) + + +# Создайте словарь со списком вещей для похода в качестве ключа и их массой в качестве значения. +# Определите какие вещи влезут в рюкзак передав его максимальную грузоподъёмность. +# Достаточно вернуть один допустимый вариант.*Верните все возможные варианты комплектации рюкзака. + +import random +my_items = { 'палатка': 2500, + 'спальный мешок': 1000, + 'мангал': 700, + 'шампура': 700, + 'спички': 10, + 'уголь': 8000, + 'рыболовные снасти': 500, + 'складной стул': 300 + } + +max_weight = 10000 +count = 0 +result = [] +while count <= max_weight: + key, value = random.choice(list(my_items.items())) + if key in result: + continue + if count + value > max_weight: + break + count += value + result += (str(key), str(value)) + +print(f'{result} = {count}') diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_4" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_4" new file mode 100644 index 0000000..c5841f0 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_4" @@ -0,0 +1,41 @@ +''' +Напишите функцию для транспонирования матрицы. +''' + + +def transpose_matrix(matrix): + rows = len(matrix) + cols = len(matrix[0]) + transpose = [[0 for j in range(rows)] for i in range(cols)] + for i in range(rows): + for j in range(cols): + transpose[j][i] = matrix[i][j] + return transpose + + +def print_(matrix_): + for row in matrix_: + for x in row: + print(x, end=" ") + print() + + +my_matrix = [[10, 20], [35, 45], [56, 35], [35, 76]] +print_(my_matrix) +print() +print_(transpose_matrix(my_matrix)) + +''' +Напишите функцию принимающую на вход только ключевые параметры и возвращающую словарь, где ключ — значение переданного +аргумента, а значение — имя аргумента. Если ключ не хешируем, используйте его строковое представление. +''' +def my_func(**kwargs): + my_dict = dict() + for key, value in kwargs.items(): + if isinstance(value, (list, dict, set)): + value = str(value) + my_dict[value] = key + return my_dict + + +print(my_func(компании=['Рога', 'Копыта', 'Хвосты'], учредители={1: 'Петров', 2: 'Сидоров'})) diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_6_2" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_6_2" new file mode 100644 index 0000000..7de7c79 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_6_2" @@ -0,0 +1,37 @@ +#В модуль с проверкой даты добавьте возможность запуска в терминале с передачей даты на проверку. +__all__ = ['data_is_true'] +from sys import argv +def _is_leap(year:int)->bool: + return year%4 == 0 and year%100 !=0 or year%400 == 0 + +def data_is_true(data:str)->bool: + day, month, year = list(map(int, data.split('.'))) + check_days = { + 1:31, + 2:28 if _is_leap(year) else 28, + 3:31, + 4:30, + 5:31, + 6:30, + 7:31, + 8:31, + 9:30, + 10:31, + 11:30, + 12:31 + } + + max_day = check_days.get(month) + if not max_day or (year > 9999 or year < 1) or (max_day < day or day < 1): + return False + else: + return True + + +if __name__=='__main__': + if len(argv) == 2: + _, date = argv + print(f"{date} {data_is_true(date)}") + else: + date = input('Введите дату в формате DD.MM.YYYY: ') + print(f"{date} {data_is_true(date)}") diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_7_2" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_7_2" new file mode 100644 index 0000000..a6ad1a0 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_7_2" @@ -0,0 +1,32 @@ +''' +Напишите функцию группового переименования файлов. Она должна: +a. принимать параметр желаемое конечное имя файлов. При переименовании в конце имени добавляется порядковый номер. +b. принимать параметр количество цифр в порядковом номере. +c. принимать параметр расширение исходного файла. Переименование должно работать только для этих файлов внутри каталога. +d. принимать параметр расширение конечного файла. +e. принимать диапазон сохраняемого оригинального имени. Например для диапазона [3, 6] берутся буквы с 3 по 6 из +исходного имени файла. К ним прибавляется желаемое конечное имя, если оно передано. Далее счётчик файлов и расширение. +''' + +import os +from pathlib import Path + + +def files_rename(path_, source_ext, fin_ext, range_=[0, 0], numc=3, new_name="new"): + my_files = [file for file in os.listdir(path_) if file.lower().endswith(source_ext)] + count = 1 + + for file in my_files: + file_name, ext = os.path.splitext(file) + file_name = file_name[range_[0] - 1:range_[1]] + new_name + new_file = f"{file_name}{str(counter).zfill(numc)}.{fin_ext}" + os.rename(os.path.join(path_, file), os.path.join(path_, new_file)) + count += 1 + + +if __name__ == "__main__": + my_path = Path().cwd() /'geekbrains'/ "Погружение в Python" / "Home_Task_7_2" + print(my_path) + print(f"{my_path=}") + print(f"files: {os.listdir(my_path)}") + files_rename(my_path, "txt", "txt", numc=2, new_name="new", range_=[1, 2]) diff --git "a/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_8" "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_8" new file mode 100644 index 0000000..ccd1102 --- /dev/null +++ "b/\320\237\320\276\320\263\321\200\321\203\320\266\320\265\320\275\320\270\320\265_8" @@ -0,0 +1,55 @@ +''' + +Напишите функцию, которая получает на вход директорию и рекурсивно обходит её и все вложенные директории. +Результаты обхода сохраните в файлы json, csv и pickle. +Для дочерних объектов указывайте родительскую директорию. +Для каждого объекта укажите файл это или директория. +Для файлов сохраните его размер в байтах, а для директорий размер файлов в ней с учётом всех вложенных файлов и директорий. +''' + +import json +import os +import csv +import pickle +from os.path import join, getsize + + +def my_directory(file_path): + for root, dirs, files in os.walk(file_path): + folder = root.split('\\') + + + print(f'В директории {folder[-1]}', end="\n") + if not dirs: + print("В этой папке нет директорий") + else: + + print(f'Директория(и) {dirs}', end="\n") + print(f'Файл(ы) {files}', end="\n") + print(sum(getsize(join(root, name)) for name in files), end="\n") + + + + str_json = " ".join(files) + to_json = {root: dirs, 'files': str_for_json, 'Size': sum(getsize(join(root, name)) for name in files) } + with open('to_json.json', 'a') as f: + json.dump(to_json, f, sort_keys=True, indent=2) + + with open('for_csv.csv', 'a', newline='') as csvfile: + fieldnames = ['files', 'dirs'] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + + writer.writeheader() + writer.writerow({'files': str_json, 'dirs': dirs}) + + + with open('data.pickle', 'wb') as f: + pickle.dump(to_json, f) + + with open('data.pickle', 'rb') as f: + ... + data_new = pickle.load(f) + print(data_new) + + +my_directory(os.curdir)