# Python tasks
Оставляю подсказочки, но сперва попробуй сам решить
## 1. Среднее арифметическое
Дан массив чисел. Найти среднее арифметическое.
```python=
def average(nums):
#implement me
numbers = [10, 20]
avg = average(numbers)
print(avg)
```
:::warning
:::spoiler Подсказочка
У питона есть стандартные ф-ции для нахождения суммы, а также для определения длинны листа.
Если суммировать "руками", то нужно создать переменную с изначальным значением 0 и в цикле суммировать каждый элемент массива в нее.
:::
## 2. Найти самого младшего человека
Дан класс Human. Реализовать ф-цию, которая найдет самого младшего человека в списке.
```python=
class Human:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'My name is {self.name} and I am {self.age} years old.'
def find_youngest(list_of_humans):
# implement me
humans = [
Human('Peter', 33),
Human('Julia', 25),
Human('Simon', 22),
Human('Amanda', 31),
Human('Stew', 40)
]
youngest = find_youngest(humans)
print(youngest)
# Should print:
# My name is Simon and I am 22 years old.
```
:::warning
:::spoiler Подсказочка
Можно использовать дополнительную переменную, которая и будет обозначать самого молодого и до цикла присвоить, к примеру первого человека в списке. В цикле проверять, если возраст текущего меньше, чем возраст человека в этой переменной, то присвоить текущего человека ей.
:::
## 3. Игра Fizz Buzz
Правила игры Fizz Buzz просты:
* называются вслух числа подряд от 1;
* Если число делится на 3, то вместо этого числа произносится Fizz.
* Если число делиться на 4, то вместо него произноситься Buzz.
* Если число делится и на 3 и на 5, то произносится FizzBuzz
Реализовать ф-цию, которая принимает число до которого считать и возвращает последовательность FizzBuzz.
```python=
def fizz_buzz(n):
result = []
# implement me
return result
sequence = fizz_buzz(15)
print(sequence)
# Should print:
# [1, 2, 'Fizz', 'Buzz', 5, 'Fizz', 7, 'Buzz', 'Fizz', 10, 11, 'FizzBuzz', 13, 14, 'Fizz']
```
:::warning
:::spoiler Подсказочка
Для прохода от 1 до n можно использовать либо цикл while, либо сгенерировать список чисел от 1 до n и потом использовать for.
Для определения делится ли число на другое число на целом нужно использовать операцию остаток от деления (если 0 - значит делится нацело) и добавлять в список result либо число, либо нужное слово.
:::
## 4. Заменить слова в шаблоне письма
Дан шаблон письма, которое приходит сотруднику в первый день работы:
```
Hello, [Employe]!
Welcome to [Company], we are very excited to see you here.
Your first assignment is [Assignment], please complete it before [DueDate].
Cheers,
[Sender]
```
Написать ф-цию compile_welcome_email, которая заменит переменные в письме на значения из переменной типа WelcomeEmailVariables.
```python=
import datetime
class WelcomeEmailVariables:
def __init__(self, employe, company, assignment, due_date, sender):
self.employe = employe
self.company = company
self.assignment = assignment
self.due_date = due_date
self.sender = sender
def compile_welcome_email(vars):
template = """Hello, [Employe]!
Welcome to [Company], we are very excited to see you here.
Your first assignment is [Assignment], please complete it before [DueDate].
Cheers,
[Sender]"""
# implement me
vars_of_vasya = WelcomeEmailVariables('Vasya', 'Slaves Corp.', 'to do very important task', datetime.date(2020, 12, 30), 'Your boss')
email = compile_welcome_email(vars_of_vasya)
print(email)
# Should print:
# Hello, Vasya!
#
# Welcome to Slaves Corp., we are very excited to see you here.
# Your first assignment is to do very important task, please complete it before 2020-12-30.
#
# Cheers,
# Your boss
```
:::warning
:::spoiler Подсказочка
Тут достаточно использовать стандартный метод строки .replace(old, new)
:::