From c3e47892f8a62e62452c38767d0954420e649ff7 Mon Sep 17 00:00:00 2001 From: GAS53 <45990653+GAS53@users.noreply.github.com> Date: Thu, 30 Sep 2021 21:23:38 +0300 Subject: [PATCH 1/5] lesson 1 --- dz_1.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ dz_2.py | 45 ++++++++++++++++++++++++++++++++++ dz_3.py | 23 ++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 dz_1.py create mode 100644 dz_2.py create mode 100644 dz_3.py diff --git a/dz_1.py b/dz_1.py new file mode 100644 index 0000000..b1ad494 --- /dev/null +++ b/dz_1.py @@ -0,0 +1,75 @@ +'''точное выполнение задания''' +duration = 400153 +if duration < 60: + print(f'{duration} сек ') +elif 60 < duration < 3600: + minute = duration // 60 + # duration = duration//60 + sec = duration % 60 + print(f'{minute} мин {sec} сек') +elif 3600 < duration < 86400: + hour = duration//3600 + duration = duration%3600 + minute = duration//60 + sec = duration%60 + print(f'{hour} час {minute} мин {sec} сек') +elif 86400 < duration: + day = duration//86400 + duration = duration%86400 + hour = duration//3600 + duration = duration%3600 + minute = duration//60 + sec = duration%60 + print(f'{day} дн {hour} час {minute} мин {sec} сек') + + + + + + + +'''модернизированная версия + названия всех констант большими буквами sec - SEC + и они должны быть импортированы из отдельного файла: + from const import SEC +русского в коде быть не должно +''' + +sec = 1 +minute = sec*60 +hour = minute*60 +day = hour*24 + + +def get_time(full_time): + '''get periods from seconds''' + result = '' + days = full_time//day + if days: + result += f'{days} дн ' + full_time = full_time%day + hours = full_time//hour + if hours: + result += f'{hours} час ' + full_time = full_time%hour + minutes = full_time//minute + if minutes: + result += f'{minutes} мин ' + full_time = full_time%minute + seconds = full_time + if seconds: + result += f'{seconds} сек ' + print(result) + + +get_time(400153) + +'''подумайте, можно ли использовать цикл для проверки работы кода +сразу для нескольких значений продолжительности, будет ли тут полезен список?''' + +'''ответ: проверить можно с помощью любого цикла, удобно- for неудобно- while +Пример''' + +li_seconds = [53,153,4153,400153] +for second in li_seconds: + get_time(second) diff --git a/dz_2.py b/dz_2.py new file mode 100644 index 0000000..12fdb4c --- /dev/null +++ b/dz_2.py @@ -0,0 +1,45 @@ + + +'''Создать список, состоящий из кубов нечётных чисел от 1 до 1000''' +li_cube=[] +for num in range(1000): + if num % 2 != 0: + li_cube.append(num**3) + + +li_cube=[x ** 3 for x in range(1000) if not x % 2 == 0] # создание генератором + +'''a Вычислить сумму тех чисел из этого списка, +сумма цифр которых делится нацело на 7''' + +def get_devide_seven(li): + new_summ_list=[] + for num in li: + new_summ=0 + for digit in str(num): + new_summ+=int(digit) + if new_summ % 7 == 0: + new_summ_list.append(new_summ) + + result=0 + for digit in new_summ_list: + result+=digit + print(result) + return result + +get_devide_seven(li_cube) + + +'''b К каждому элементу списка добавить 17 и +заново вычислить сумму тех чисел из этого списка, + сумма цифр которых делится нацело на 7''' + +new_li_17=[] +for i in li_cube: + new_li_17.append(i+17) + +get_devide_seven(new_li_17) + +'''* Решить задачу под пунктом b, не создавая новый список''' +new_li_cube=[x ** 3+17 for x in range(1000) if not x % 2 == 0] +get_devide_seven(new_li_cube) diff --git a/dz_3.py b/dz_3.py new file mode 100644 index 0000000..78ab31d --- /dev/null +++ b/dz_3.py @@ -0,0 +1,23 @@ +'''Реализовать склонение слова «процент» во фразе «N процентов». +Вывести эту фразу на экран отдельной строкой +для каждого из чисел в интервале от 1 до 100''' + + +def get_procent(num): + li_except=[11,12,13,14] + if num in li_except: + return 'процентов' + else: + num=str(num) + digit=int(num[-1]) + if 1 == digit: + return 'процент' + if 1 Date: Sun, 3 Oct 2021 01:01:23 +0300 Subject: [PATCH 2/5] Add files via upload lesson_2 --- 1.py | 13 +++++++++ 2.py | 60 ++++++++++++++++++++++++++++++++++++++ 3.py | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4.py | 18 ++++++++++++ 5.py | 44 ++++++++++++++++++++++++++++ 5 files changed, 229 insertions(+) create mode 100644 1.py create mode 100644 2.py create mode 100644 3.py create mode 100644 4.py create mode 100644 5.py diff --git a/1.py b/1.py new file mode 100644 index 0000000..8e58a55 --- /dev/null +++ b/1.py @@ -0,0 +1,13 @@ +'''1. Выяснить тип результата выражений: +15 * 3 +15 / 3 +15 // 2 +15 ** 2''' +a=15 * 3 +b = 15 / 3 +c = 15 // 2 +d = 15 ** 2 +print(f'{a} - {type(a)}') +print(f'{b} - {type(b)}') +print(f'{c} - {type(c)}') +print(f'{d} - {type(d)}') \ No newline at end of file diff --git a/2.py b/2.py new file mode 100644 index 0000000..eab2085 --- /dev/null +++ b/2.py @@ -0,0 +1,60 @@ +'''Дан список: +['в', '5', 'часов', '17', 'минут', 'температура', 'воздуха', 'была', '+5', 'градусов'] + +Необходимо его обработать — обособить каждое целое число (вещественные не трогаем) + кавычками (добавить кавычку до и кавычку после элемента списка, являющегося числом) + и дополнить нулём до двух целочисленных разрядов: +['в', '"', '05', '"', 'часов', '"', '17', '"', 'минут', 'температура', +'воздуха', 'была', '"', '+05', '"', 'градусов']''' + +li = ['в', '5', 'часов', '17', 'минут', 'температура', 'воздуха', 'была', '+5', 'градусов'] + +'''выполнение в лоб''' +# li.insert(1,'"') +# li.insert(3,'"') +# li.insert(5,'"') +# li.insert(7,'"') +# li.insert(12,'"') +# li.insert(14,'"') +# li[2] = '05' +# li[-3] = '+05' +# +# res_str = ' '.join(li) +# res_str = res_str.replace('" 05 "','"05"') +# res_str = res_str.replace('" 17 "','"17"') +# res_str = res_str.replace('" +05 "','"+05"') +# # print(res_str) # решение в лоб''' + +# 2-ой вариант +new_li = [] +for i in li: + if not i.isalpha(): # обособить каждое целое число кавычками можно сделать if j.isdigit() +for + new_li.append( '"') + if len(i) == 1: + new_li.append(f'0{i}') # дополнить нулём до двух целочисленных разрядов + elif "+" in i: # модифицировать это условие для чисел со знаком + new_li.append(f'{i[0]}0{i[1]}') # дополнить нулём до двух целочисленных разрядов + else: + new_li.append(i) + new_li.append( '"') + else: + new_li.append(i) +print(new_li) +print(len(new_li)) + +start = True +new_li2 = [] +for val in new_li: + if val == '"' and start: + new_li2.append(f'{val} ') + start = False + elif val == '"' and not start: + new_li2.append(f' {val}') + start = True + else: + new_li2.append(val) +res = ' '.join(new_li2) +res = res.replace(' ','') +print(f' {res}') # Сформировать из обработанного списка строку: + +# есть возможность сделать с помощью модуля re diff --git a/3.py b/3.py new file mode 100644 index 0000000..51d73e2 --- /dev/null +++ b/3.py @@ -0,0 +1,94 @@ +li = ['в', '5', 'часов', '17', 'минут', 'температура', 'воздуха', 'была', '+5', 'градусов'] + + + + + + +count=0 +for i in li: + if not i.isalpha(): + count+=3 + else: + count+=1 +len_update_li=count-len(li) +update_li=['' for _ in range(len_update_li)] +update_li.extend(li) # get len update li + +li=update_li + +def get_digit_str(num): + for num1,i in enumerate(li[num:]): + + if i.isalpha() and not i=='': + return True, i, num1 + elif not i.isalpha() and not i=='': + return False, i, num1 +not_count=0 +for num, i in enumerate(li): + if not_count руб коп +new_li_price=[] +for i in li_price: + rub,cop=i.split('.') + if len(cop) == 1: # как добавить нули, если, например, получилось 7 копеек или 0 копеек (должно быть 07 коп или 00 коп). + cop= f'0'+cop + elif len(cop) == 0: + cop='00' + price=f'{rub} руб {cop} коп' + new_li_price.append(price) +print(new_li_price) # цена должна отображаться в виде руб коп + +#Подумать, как из цены получить рубли и копейки + +for i in new_li_price: + i=i.split(' ') + rub=i[0] # get rub + cop= i[2] # get cop + +print(new_li_price) +new_li_price.sort() +print(new_li_price) # Вывести цены, отсортированные по возрастанию + +print(str(id(new_li_price))+' '+str(id(new_li_price))) # доказать, что объект списка после сортировки остался тот же + +# Создать новый список, содержащий те же цены, но отсортированные по убыванию +new_li_price2=new_li_price.copy() +new_li_price2.sort(reverse=True) # то же самое возможно [::-1] или .reverse() +print(new_li_price2) # revers sort + +# Вывести цены пяти самых дорогих товаров. +five_high_price=new_li_price2[:5] +print(five_high_price) + +#Сможете ли вывести цены этих товаров по возрастанию, написав минимум кода? +print(sorted(five_high_price)) # From 26c5abb60b7d963aabc7848cb0459371c8240a6d Mon Sep 17 00:00:00 2001 From: GAS53 <45990653+GAS53@users.noreply.github.com> Date: Sun, 3 Oct 2021 01:01:49 +0300 Subject: [PATCH 3/5] Delete dz_1.py --- dz_1.py | 75 --------------------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 dz_1.py diff --git a/dz_1.py b/dz_1.py deleted file mode 100644 index b1ad494..0000000 --- a/dz_1.py +++ /dev/null @@ -1,75 +0,0 @@ -'''точное выполнение задания''' -duration = 400153 -if duration < 60: - print(f'{duration} сек ') -elif 60 < duration < 3600: - minute = duration // 60 - # duration = duration//60 - sec = duration % 60 - print(f'{minute} мин {sec} сек') -elif 3600 < duration < 86400: - hour = duration//3600 - duration = duration%3600 - minute = duration//60 - sec = duration%60 - print(f'{hour} час {minute} мин {sec} сек') -elif 86400 < duration: - day = duration//86400 - duration = duration%86400 - hour = duration//3600 - duration = duration%3600 - minute = duration//60 - sec = duration%60 - print(f'{day} дн {hour} час {minute} мин {sec} сек') - - - - - - - -'''модернизированная версия - названия всех констант большими буквами sec - SEC - и они должны быть импортированы из отдельного файла: - from const import SEC -русского в коде быть не должно -''' - -sec = 1 -minute = sec*60 -hour = minute*60 -day = hour*24 - - -def get_time(full_time): - '''get periods from seconds''' - result = '' - days = full_time//day - if days: - result += f'{days} дн ' - full_time = full_time%day - hours = full_time//hour - if hours: - result += f'{hours} час ' - full_time = full_time%hour - minutes = full_time//minute - if minutes: - result += f'{minutes} мин ' - full_time = full_time%minute - seconds = full_time - if seconds: - result += f'{seconds} сек ' - print(result) - - -get_time(400153) - -'''подумайте, можно ли использовать цикл для проверки работы кода -сразу для нескольких значений продолжительности, будет ли тут полезен список?''' - -'''ответ: проверить можно с помощью любого цикла, удобно- for неудобно- while -Пример''' - -li_seconds = [53,153,4153,400153] -for second in li_seconds: - get_time(second) From 32215ce052badae09760fbfb1550717da3435d96 Mon Sep 17 00:00:00 2001 From: GAS53 <45990653+GAS53@users.noreply.github.com> Date: Sun, 3 Oct 2021 01:02:00 +0300 Subject: [PATCH 4/5] Delete dz_2.py --- dz_2.py | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 dz_2.py diff --git a/dz_2.py b/dz_2.py deleted file mode 100644 index 12fdb4c..0000000 --- a/dz_2.py +++ /dev/null @@ -1,45 +0,0 @@ - - -'''Создать список, состоящий из кубов нечётных чисел от 1 до 1000''' -li_cube=[] -for num in range(1000): - if num % 2 != 0: - li_cube.append(num**3) - - -li_cube=[x ** 3 for x in range(1000) if not x % 2 == 0] # создание генератором - -'''a Вычислить сумму тех чисел из этого списка, -сумма цифр которых делится нацело на 7''' - -def get_devide_seven(li): - new_summ_list=[] - for num in li: - new_summ=0 - for digit in str(num): - new_summ+=int(digit) - if new_summ % 7 == 0: - new_summ_list.append(new_summ) - - result=0 - for digit in new_summ_list: - result+=digit - print(result) - return result - -get_devide_seven(li_cube) - - -'''b К каждому элементу списка добавить 17 и -заново вычислить сумму тех чисел из этого списка, - сумма цифр которых делится нацело на 7''' - -new_li_17=[] -for i in li_cube: - new_li_17.append(i+17) - -get_devide_seven(new_li_17) - -'''* Решить задачу под пунктом b, не создавая новый список''' -new_li_cube=[x ** 3+17 for x in range(1000) if not x % 2 == 0] -get_devide_seven(new_li_cube) From f345fd9428f5f09779fb7cc72d37e36a65d01ed0 Mon Sep 17 00:00:00 2001 From: GAS53 <45990653+GAS53@users.noreply.github.com> Date: Sun, 3 Oct 2021 01:02:07 +0300 Subject: [PATCH 5/5] Delete dz_3.py --- dz_3.py | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 dz_3.py diff --git a/dz_3.py b/dz_3.py deleted file mode 100644 index 78ab31d..0000000 --- a/dz_3.py +++ /dev/null @@ -1,23 +0,0 @@ -'''Реализовать склонение слова «процент» во фразе «N процентов». -Вывести эту фразу на экран отдельной строкой -для каждого из чисел в интервале от 1 до 100''' - - -def get_procent(num): - li_except=[11,12,13,14] - if num in li_except: - return 'процентов' - else: - num=str(num) - digit=int(num[-1]) - if 1 == digit: - return 'процент' - if 1