diff --git a/DZ3.py b/DZ3.py new file mode 100644 index 0000000..c26b43e --- /dev/null +++ b/DZ3.py @@ -0,0 +1,96 @@ +# 1. Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + +print('Задание 1\n') +def separate(a,b): + try: + return a/b + except ZeroDivisionError: + print('на ноль не делится') + +a = int(input('введите число, которое будем делить: ')) +b = int(input('введите число на которое будем делить: ')) +print(separate(a,b)) + +# 2. Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. Функция должна принимать +# параметры как именованные аргументы. Реализовать вывод данных о пользователе одной строкой. +print('\nЗадание 2\n') +human = ['имя', 'фамилия', 'год рождения', 'город проживания', 'email', 'телефон'] +hunam = [] +def my_f(): + for i in human: + hunam.append(input(f'введите {i}: ')) +my_f() +print(dict(zip(human, hunam))) + +# 3. Реализовать функцию my_func(), которая принимает три позиционных аргумента, и возвращает +# сумму наибольших двух аргументов. + +print('\nЗадание 3\n') +def my_func(a,b,c): + if a+b>b+c and a+b>a+c: + return a+b + elif a+c>b+c and a+c>a+b: + return a+c + else: + return b+c + +u_i1 = int(input('Введите число: ')) +u_i2 = int(input('Введите число: ')) +u_i3 = int(input('Введите число: ')) +print('из введенных Вами чисел - наибольшая комбинация получается: {}'.format(my_func(u_i1,u_i2,u_i3))) + +# z = lambda: int(input('a:')), int(input('b:')), int(input('c:')) # Почему-то всегда с b начинается +# z = lambda: a, b = map(int, input().split()) + +# 4. Программа принимает действительное положительное число x и целое отрицательное число y. +# Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде +# функции my_func(x, y). При решении задания необходимо обойтись без встроенной функции возведения +# числа в степень. +# Подсказка: попробуйте решить задачу двумя способами. Первый — возведение в степень с помощью +# оператора **. Второй — более сложная реализация без оператора **, предусматривающая использование цикла. + +print('Задание 4') +def my_func(x, y): + return x**y + #return pow(x,y) +x = int(input('Введите положительное число :')) +y = int(input('введите число положительное (а мы при помощи магии сделаем его отрицательным) :')) +print('если {} будет в степеи -{} получится: {}'.format(x,y,my_func(x, -y))) + +# 5. Программа запрашивает у пользователя строку чисел, разделенных пробелом. При нажатии Enter +# должна выводиться сумма чисел. Пользователь может продолжить ввод чисел, разделенных пробелом и +# снова нажать Enter. Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме. +# Но если вместо числа вводится специальный символ, выполнение программы завершается. +# Если специальный символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел +# к полученной ранее сумме и после этого завершить программу. + +b = 0 +while True: + a = input('Введите числа через пробел :') + #print(a.count('q')) + if a.count('q') != 1: + b += sum(map(int,a.split(' '))) + print(f'Промежуточная сумма: {b}') + elif a.count('q') == 1 or a.count('Q') == 1: + a = a[:(a.find('q')-1)] + b += sum(map(int, a.split(' '))) + print(f'Итоговая сумма равна: {b}') + break + + +# 6. Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую +# его же, но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. +# Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. +# Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, но каждое +# слово должно начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). + +print('Задание 6') +def int_func(t): + return t.capitalize() +print(int_func('text')) +a = ('it a good day to die') +print(list(map(int_func, a.split()))) +a = input('Сами введите предложение: ') +print(list(map(int_func, a.split()))) \ No newline at end of file diff --git a/DZ4.py b/DZ4.py new file mode 100644 index 0000000..2aeda7c --- /dev/null +++ b/DZ4.py @@ -0,0 +1,101 @@ +# 1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. +# В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. +# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. +import random +import sys +from random import random +print(sys.argv, 'Введите h или help, чтобы рассчитать з/п') + +def zp(hours): + return (int(input('Введите ставку за час: '))*hours)*(1+(int(input('Введите % премии: '))/100)) + #(1500*int(hours*(random()))) #вариант рандомная премия + +argv = sys.argv[1:] +if 'h' in argv or 'help' in argv: + print(zp(int(input('Введите число отработанных часов: '))), 'рублей заработано за месяц') + +# 2. Представлен список чисел. Необходимо вывести элементы исходного списка, значения которых +# больше предыдущего элемента. +# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. Для формирования списка +# использовать генератор. +# Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +# Результат: [12, 44, 4, 10, 78, 123]. +print('\nЗадание 2') +prime_s1 = list(map(int, input('Введите несколько цифр через пробел: ').split(' '))) +print('из введенных цифр элементы больше предыдущих будут {}'.format(list(b for a,b in enumerate(prime_s1) if a>0 and prime_s1[a]>prime_s1[a-1]))) + +prime_s = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] +print('из имеющихся в примере цифр элементы больше предыдущих будут {}'.format(list(b for a,b in enumerate(prime_s) if a>0 and prime_s[a]>prime_s[a-1]))) + +# 3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Необходимо решить задание +# в одну строку. Подсказка: использовать функцию range() и генератор. +print('\nЗадание 3') +print('из имеющихся чисел кратные 20 или 21 будут {}'.format(list(el for el in range(20,241) if el%20==0 or el%21==0))) + +# 4. Представлен список чисел. Определить элементы списка, не имеющие повторений. Сформировать +# итоговый массив чисел, соответствующих требованию. Элементы вывести в порядке их следования в исходном списке. +# Для выполнения задания обязательно использовать генератор. +# Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +# Результат: [23, 1, 3, 10, 4, 11] +print('\nЗадание 4') +numb = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +print("из диапазона {}\nНе повторяюшиеся элементы будут : {}".format(numb, list(i for i in numb if numb.count(i) == 1))) + +# 5. Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти четные числа от 100 до 1000 (включая границы). +# Необходимо получить результат вычисления произведения всех элементов списка. +# Подсказка: использовать функцию reduce(). +print('\nЗадание 5') +from functools import reduce +print('Из диапазона 100/1000 умноженные чётные числа дадут: {}'.format(reduce(lambda x, y: x * y, list(range(100,1001,2))))) +print('Из диапазона 100/1000 сумма чётных чисел будет: {}'.format(reduce(lambda x, y: x + y, list(range(100,1001,2))))) +#Не знаю что значит произведение, поэтому и умножил и сложил на всякий случай + +# 6. Реализовать два небольших скрипта: +# а) итератор, генерирующий целые числа, начиная с указанного, +# б) итератор, повторяющий элементы некоторого списка, определенного заранее. +# Подсказка: использовать функцию count() и cycle() модуля itertools. Обратите внимание, +# что создаваемый цикл не должен быть бесконечным. Необходимо предусмотреть условие его завершения. +# Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. +# Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. +print('\nЗадание 6') +from itertools import count, cycle +from time import sleep +new_n = [] +while True: + if input('Выход - Q, \nЛюбая клавиша - продолжить: ').upper() == 'Q': + break + st = list(map(int, input('Введите две числа через пробел: начало отсчёта и конец: ').split(' '))) + print(st[0], st[1]) + if st[1]>st[0]: + for i in count(start=st[0], step=3): + new_n.append(i) + print(f'цифра {i} с шагом 3') + if i >= st[1]: + break + + else: + print("Первая введённая цифра должна быть меньше втрой цифры)") +print(new_n) +for number in cycle(new_n): + sleep(1) + print(f'в цикле были цифры {number} и цикл закончится на {new_n[-1]} вы ввели её последней') + if number == new_n[-1]: + break +print('I love python') + + +# 7. Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение. +# При вызове функции должен создаваться объект-генератор. Функция должна вызываться следующим +# образом: for el in fact(n). Функция отвечает за получение факториала числа, а в цикле необходимо +# выводить только первые n чисел, начиная с 1! и до n!. +# Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24. +print('\nЗадание 7') +def factor(n): + numbers = 1 + for i in range(1, n+1): + numbers=numbers*i + yield numbers +for a in factor(int(input('Введите число, к которому будем расписывать факториал: '))): + print(f'числа в факториале получаются: {a}') + diff --git "a/DZ_1 \320\276\320\261\321\211\320\265\320\265 (\320\225\321\201\320\273\320\270 \320\262\321\201\321\221 \321\201\320\272\320\276\320\277\320\276\320\274 \321\201\320\274\320\276\321\202\321\200\320\265\321\202\321\214 \320\277\320\276\320\264\321\200\321\217\320\264).py" "b/DZ_1 \320\276\320\261\321\211\320\265\320\265 (\320\225\321\201\320\273\320\270 \320\262\321\201\321\221 \321\201\320\272\320\276\320\277\320\276\320\274 \321\201\320\274\320\276\321\202\321\200\320\265\321\202\321\214 \320\277\320\276\320\264\321\200\321\217\320\264).py" new file mode 100644 index 0000000..a56048f --- /dev/null +++ "b/DZ_1 \320\276\320\261\321\211\320\265\320\265 (\320\225\321\201\320\273\320\270 \320\262\321\201\321\221 \321\201\320\272\320\276\320\277\320\276\320\274 \321\201\320\274\320\276\321\202\321\200\320\265\321\202\321\214 \320\277\320\276\320\264\321\200\321\217\320\264).py" @@ -0,0 +1,99 @@ +#1. Поработайте с переменными, создайте несколько, выведите на экран, запросите +#у пользователя несколько чисел и строк и сохраните в переменные, выведите на экран. +print('Урок 1, задание 1') +variable1 = [2, 3 ,4 ,5,6] +variable2 = 'Привет!' +variable3 = int(input('Напишите любое число: ')) +variable4 = int(input('и ещё любое число: ')) +print('Просто переменные {}, и всем {}, а вот число, которые ввели вы {} и {}'.format(variable1, variable2, variable3, variable4)) +print('вы написали слово', input('Напишите слово какое-нибудь: ')) + +#2. Пользователь вводит время в секундах. Переведите время в часы, минуты и секунды и выведите в +#формате чч:мм:сс. Используйте форматирование строк. +print('\nУрок 1, задание 2') +user_time = int(input('Введите секунды, которые мы будем переводить в формат чч:мм:сс: ')) +user_hours = int(user_time/3600) +user_minuts = int(user_time/60)-user_hours*60 +user_seconds = user_time%60 +print('В {} секундах будет: {} часов, {} минут, {} секунд'.format(user_time, user_hours, user_minuts, user_seconds)) +print(f'Вы ввели {user_time} и получилось {user_hours}:{user_minuts}:{user_seconds} ') + + +#3. Узнайте у пользователя число n. Найдите сумму чисел n + nn + nnn. Например, пользователь ввёл +#число 3. Считаем 3 + 33 + 333 = 369. +print('\nУрок 1, задание 3') +user_numb = input('Введите число :') +print('если взять ваше число за x то если пересложить по такой формуле x+xx+xxx,то получится число: ') +#user_numb2 = int(user_numb+user_numb) +#user_numb3 = int(user_numb+user_numb+user_numb) +#print(int(user_numb)+ user_numb3+ user_numb2) +print(int(user_numb)+int(user_numb+user_numb)+int(user_numb+user_numb+user_numb)) # если одной строкой + + +#4. Пользователь вводит целое положительное число. Найдите самую большую цифру в числе. Для +#решения используйте цикл while и арифметические операции. +print('\nУрок 1, задание 4') +u_number = input('Введите целое число состоящее из нескольких цифр: ') +max_number = [] +for i in u_number: + max_number.append(i) +print('самое большое число будет:', max(max_number)) + + +a = int(input('Введите целое число состоящее из нескольких цифр (решение через while): ')) +m = a%10 +a = a//10 +while a > 0: + if a%10 > m: + m = a%10 + a = a//10 +print('самое большое число будет:', m) + +''' +5. Запросите у пользователя значения выручки и издержек фирмы. Определите, с каким финансовым +результатом работает фирма (прибыль — выручка больше издержек, или убыток — издержки больше выручки). +Выведите соответствующее сообщение. Если фирма отработала с прибылью, вычислите рентабельность выручки +(соотношение прибыли к выручке). Далее запросите численность сотрудников фирмы и определите +прибыль фирмы в расчете на одного сотрудника. +''' +print('\nУрок 1, задание 5') +revenue = int(input('введите вашу выручку вашей фирмы: ')) +expence = int(input('введите вашу издержки вашей фирмы: ')) +profitability = int(revenue/expence*100) + +if revenue>expence: + print(f'вы работаете в прибыль. Ваша рентабельность составляет {profitability}%') + print('прибыль на одного сотрудника будет равна: ', int((revenue-expence)/int(input('введите кол-во сотрудников,которые у вас работают: ')))) +elif revenueb: + break + a = a + c +print(f'Спортсмен начал проходить более {b} км/день на {i} день') diff --git "a/HT 2 \320\222\320\241\320\225 \320\241\320\240\320\220\320\227\320\243 .py" "b/HT 2 \320\222\320\241\320\225 \320\241\320\240\320\220\320\227\320\243 .py" new file mode 100644 index 0000000..eacfa5b --- /dev/null +++ "b/HT 2 \320\222\320\241\320\225 \320\241\320\240\320\220\320\227\320\243 .py" @@ -0,0 +1,153 @@ + +# 1. Создать список и заполнить его элементами различных типов данных. Реализовать скрипт проверки +# типа данных каждого элемента. Использовать функцию type() для проверки типа. Элементы списка можно +# не запрашивать у пользователя, а указать явно, в программе. +print('\nЗадание №1 \n') +example = [] +example.append(25) +example.insert(2, (2,4,6)) +example.insert(3, {1, 3, 5}) +example.insert(4, {'name': 'Victor', 'age':33}) +example.insert(5, [6,8, 'distant']) +print(type(example), f' {example} - общий тип данных список') +print(type(example[1]),f' {example[1]} - кортеж') +print(type(example[2]),f' {example[2]} - множество') +print(type(example[3]), f' {example[3]} - словарь') +print(type(example[4]), f' {example[4]} - список') + +# 2. Для списка реализовать обмен значений соседних элементов, т.е. Значениями обмениваются элементы +# с индексами 0 и 1, 2 и 3 и т.д. При нечетном количестве элементов последний сохранить на своем месте. +# Для заполнения списка элементов необходимо использовать функцию input(). +print('\nЗадание №2 \n') +count_numb = int(input('Введите кол-во цифр, который будете вводить: ')) +i=0 +user_numbers = [] +while i!=int(count_numb): + numb = int(input('введите число: ')) + user_numbers.append(numb) + i+=1 +print(user_numbers) + +for a in range(1,count_numb,2): + print(a) + user_numbers[a-1], user_numbers[a] = user_numbers[a], user_numbers[a-1] + print(user_numbers[a-1], user_numbers[a]) +print(user_numbers) + +# 3. Пользователь вводит месяц в виде целого числа от 1 до 12. Сообщить к какому времени года относится +# месяц (зима, весна, лето, осень). Напишите решения через list и через dict. +print('\nЗадание №3 \n') +#решение через список +months = ['зима', 'весна', 'лето', 'осень'] +user_month = 1 +spring = [5, 3, 4] +winter = [12, 1, 2] +fall = [9, 10, 11] +summer = [6, 7, 8] +while 13 > user_month > 0: + user_month = int(input('Введит цифру месяца от 1 до 12 : ')) + print('если надоест,то вбейте любое число больше 12') + if user_month == winter[2] or user_month == winter[1] or user_month == winter[0]: + print(months[0]) + elif user_month == spring[0] or user_month == spring[1] or user_month == spring[2]: + print(months[1]) + elif user_month == fall[0] or user_month == fall[1] or user_month == fall[2]: + print(months[3]) + elif user_month == summer[0] or user_month == summer[1] or user_month == summer[2]: + print(months[2]) +print('вы вышли из цикла') +print('\nвариант словаря 1') +month = { + 1:'зима', + 2:'зима', + 3:'весна', + 4:'весна', + 5:'весна', + 6:'лето', + 7:'лето', + 8:'лето', + 9:'осень', + 10:'осень', + 11:'осень', + 12:'зима' +} +print(month[(int(input('Введите месяц от 1 до 12: ')))]) + +print('\nвариант словаря ') +month_new = { + 'spring' : [5, 3, 4], + 'winter' : [12, 1, 2], + 'fall' : [9, 10, 11], + 'summer' : [6, 7, 8] +} + +user_month_new = int(input('Введит цифру месяца от 1 до 12 : ')) +for month in month_new: + if user_month_new in month_new[month]: + print(month) + + +# 4. Пользователь вводит строку из нескольких слов, разделённых пробелами. Вывести каждое слово с новой +# строки. Строки необходимо пронумеровать. Если в слово длинное, выводить только первые 10 букв в слове. +print('\nЗадание №4 \n') + +user_input = input('Введите несколько слов разделённых пробелами: ') +print(type(user_input.split(' '))) +for num, words in enumerate(user_input.split(' ')): + print('{} {}'.format(num, words[0:10])) + + +# 5. Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел. +# У пользователя необходимо запрашивать новый элемент рейтинга. Если в рейтинге существуют элементы +# с одинаковыми значениями, то новый элемент с тем же значением должен разместиться после них. +# Подсказка. Например, набор натуральных чисел: 7, 5, 3, 3, 2. +# Пользователь ввел число 3. Результат: 7, 5, 3, 3, 3, 2. +# Пользователь ввел число 8. Результат: 8, 7, 5, 3, 3, 2. +# Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1. +# Набор натуральных чисел можно задать непосредственно в коде, например, my_list = [7, 5, 3, 3, 2]. + +i = 0 +my_list = [7, 5, 3, 3, 2] +print(my_list) +while i<5: + new_el = int(input('Введите новый элемент рейтинга: ')) + if new_el in my_list: + if my_list.count(new_el) == 1: + my_list.insert(my_list.index(new_el)+1,new_el) + elif my_list.count(new_el) > 1: + my_list.insert((my_list.index(new_el)+my_list.count(new_el)), new_el) + elif 5>new_el>3: + my_list.insert(my_list.index(5)+1, new_el) + elif 7>new_el>5: + my_list.insert(my_list.index(7)+1, new_el) + elif new_el not in my_list: + if new_el>my_list[0]: + my_list.insert(0, new_el) + elif new_el