Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions hw02_easy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# https://github.com/GeekBrainsTutorial/Python_lessons_basic/pull/580

# Задача-1:
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
# выровненного по правой стороне.

# Пример:
# Дано: ["яблоко", "банан", "киви", "арбуз"]
# Вывод:
# 1. яблоко
# 2. банан
# 3. киви
# 4. арбуз

# Подсказка: воспользоваться методом .format()
# https://pyformat.info/
def EnumerateFruits(fruits):
maxlen = 0
for fruit in fruits:
if len(fruit) > maxlen: maxlen = len(fruit)
formatStr = '{}. {:>' + str(maxlen) + '}'
i = 1
for fruit in fruits:
print (formatStr.format(i, fruit))
i = i+1

#test
EnumerateFruits(["яблоко", "банан", "киви", "арбуз", "watermelon"])

# Задача-2:
# Даны два произвольные списка.
# Удалите из первого списка элементы, присутствующие во втором списке.
def SubstractList(list1, list2):
return set(list1) - set(list2)

#test
print( \
SubstractList ( \
["яблоко", "банан", "киви", "арбуз", "watermelon"], \
["яблоко", "киви", "watermelon", "orange"] \
)\
)


# Задача-3:
# Дан произвольный список из целых чисел.
# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
# если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.
def ProcessList(list1):
list2 = []
for x in list1:
if x % 2 == 0:
list2.append(x / 4)
else:
list2.append(x * 2)
return list2

list1 = [2, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]
list2 = ProcessList(list1)
print(list2)
63 changes: 63 additions & 0 deletions hw02_hard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Hard
#
# Задача-1: Пользователь вводит текст, необходимо разбить его по словам и
# выдать статистику по тексту
#
# 1. Сколько слов в тексте?
# 2. Сколько букв английского алфавита в тексте?
#
import re
text = 'The, quick- Быстрая brown бурая : fox лиса ? jumps! over перепрыгивает the lazy? ленивую dog собаку.'
text = input("Введите текст: ") or text
print(f'Введенный текст: {text}')
words = re.findall('\w+', text)
print(f'Кол-во слов в тексте = {len(words)} - {words}')

englishChars = re.findall('[A-Za-z]', text)
print(f'Кол-во английских букв в тексте = {len(englishChars)} - {englishChars}')

# Задача-2 Пользователь вводит два текста, необходимо найти все слова, которые есть в обоих текстах. Без учета регистра
text1 = 'The, quick- Быстрая brown бурая : fox лиса ? jumps! over перепрыгивает the lazy? ленивую dog собаку.'.lower()
text2 = 'Brown fox and a lazy dog.'.lower()
text1 = input("Введите текст №1:" ) or text1
text2 = input("Введите текст №2:" ) or text2

print(f'Введенный текст №1: {text1}')
print(f'Введенный текст №2: {text2}')

wordsSet1 = set(re.findall('\w+', text1))
wordsSet2 = set(re.findall('\w+', text2))
commonWords = wordsSet1.intersection(wordsSet2)
print(f'Общие слова: {commonWords}')

# EXTRA
# Есть два словаря. Один это рецепт блюда, второй это список продуктов, которые есть в холодильнике.
#
# Ключ это название продукта, значение - это количество.
#
# Нужно сравнить два словаря и дать словарь, в котором будет список покупок
# Если для рецепта всё есть, то сказать что ничего не нужно
# Разницей по измерению гр, мл, шт. Пренебречь

def MakeShoppingList(recepy, fridgeContents):
shoppingList = dict()
for item in recepy:
if item in fridgeContents:
if recepy[item] > fridgeContents[item]:
shoppingList[item] = recepy[item] - fridgeContents[item]
else:
shoppingList[item] = recepy[item]

if len(shoppingList) == 0:
print('Для приготовления блюда все есть');
else:
print('Список покупок:')
print(shoppingList)

#tests
recepy = {"meat": 500, "onion": 200, "carrot":250, "rice":150, "olive oil":50, "garlic":4 }
fridgeContents = {"meat": 500, "carrot":100, "rice":150, "garlic":4 }
MakeShoppingList(recepy, fridgeContents)

fridgeContents = {"meat": 500, "onion": 200, "carrot":250, "rice":150, "olive oil":50, "garlic":4 }
MakeShoppingList(recepy, fridgeContents)
79 changes: 79 additions & 0 deletions hw02_normal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Задача-1:
# Дан список, заполненный произвольными целыми числами, получите новый список,
# элементами которого будут квадратные корни элементов исходного списка,
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]
import math

def CalcSQRTs(list):
resultList = []
for x in list:
if x < 0: continue
if int(math.sqrt(x)) != math.sqrt(x): continue
resultList.append(int(math.sqrt(x)))
return resultList

#test
print(CalcSQRTs([2, -5, 8, 9, -25, 25, 4] ))

# Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013.
# Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года.
# Склонением пренебречь (2000 года, 2010 года)
def PrinFulltDate(date):
onesAndTeens = \
["первое","второе","третье","четвертое","пятое","шестое","седьмое","восьмое","девятое", \
"десятое", "одиннадцатое","двенадцатое","тринадцатое","четырнадцатое", \
"пятнадцатое","шестнадцатое","семнадцатое","восемнадцатое","девятнадцатое"]
tens = ["двадцать","тридцать"]
months = ["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]
dateParts = date.split('.')
dayInWords = 0
if int(dateParts[0]) < 20:
dayInWords = onesAndTeens[int(dateParts[0])-1]
else:
dayInWords = tens[int(dateParts[0][0])-2] + ' ' + onesAndTeens[int(dateParts[0][1])-1]

print (f'{dayInWords} {months[int(dateParts[1])-1]} {dateParts[2]} года')

PrinFulltDate("02.11.2013")
PrinFulltDate("12.03.2017")
PrinFulltDate("25.10.2014")
PrinFulltDate("31.05.2018")

# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами
# в диапазоне от -100 до 100. В списке должно быть n - элементов.
# Подсказка:
# для получения случайного числа используйте функцию randint() модуля random
import random
def randomNumbersList(n):
randomNumbers = []
for x in range(n):
randomNumbers.append(random.randrange(-100, 100, 1))
return randomNumbers

#tests
print(randomNumbersList(10))
print(randomNumbersList(15))
print(randomNumbersList(20))

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

#test
print(GetUniqueNumbersSetFromList([1, 2, 4, 5, 6, 2, 5, 2]))

# б) элементы исходного списка, которые не имеют повторений:
# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]
def GetNotRepeatableUniqueNumbersSetFromList(list):
resultSet = set()
for x in set(list):
if list.count(x) == 1 : resultSet.add(x)
return resultSet

#test
print(GetNotRepeatableUniqueNumbersSetFromList([1, 2, 4, 5, 6, 2, 5, 2]))