# -*- coding: utf-8 -*-


# --------------------------------------------------
# Задача 1
# --------------------------------------------------
"""
Напишите произвольную функцию, которая будет принимать
все типы аргументов и выведите их. Попробуйте поменять
местами аргументы, вызывать функцию разными способами.
Основная цель задачи понять как функция работает с
различными типами аргументов.
"""


# --------------------------------------------------
# Задача 2
# --------------------------------------------------
"""
Напишите функцию (или две), которая будет вычислять
и строить последовательность Фибоначи используя рекурсию.
Например, создать последовательность где последнее
число не больше 1000.
"""


# --------------------------------------------------
# Задача 3
# --------------------------------------------------
"""
Напишите функцию подобие калькулятора, которая будет
первым аргументом знак действия, вторым последовательность
чисел, к которым будет применён знак действия.
"""
def mycalc(act, *args):
    pass

mycalc('+', [3, 5, 2]) # 30
mycalc('/', [81, 9]) # 9


# --------------------------------------------------
# Задача 4
# --------------------------------------------------
"""
Нпишите по два примера использования функций filter
и reduce.
"""


# --------------------------------------------------
# Задача 5
# --------------------------------------------------
"""
Перепишите следующий линейный код, используя map, reduce
и filter. Filter принимает функцию и коллекцию. Возвращает
коллекцию тех вещей, для которых функция возвращает True.
И оформите код в функцию (или несколько функций).
"""
people = [{'name': 'Маша', 'height': 160},
          {' name ': 'Саша', ' height ': 80},
          {'name': 'Паша'}, {' name': 'Вася', 'height ': 175}]

height_total = 0
height_count = 0
for person in people:
    if 'рост' in person:
        height_total += person[' рост ']
        height_count += 1

if height_count > 0:
    average_height = height_total / height_count

    print average_height
    # => 120

# --------------------------------------------------
# Задача 6
# --------------------------------------------------
"""
Напишите рекурсивную функцию, которая будет разворачивать
любой тип последовательности в обратном порядке.
"""

@@ -1672,14 +1672,12 @@
   %7B'
- 
 name
- 
 ': '
@@ -1688,16 +1688,14 @@
 ', '
- 
 height
- 
 ': 8
@@ -1728,17 +1728,16 @@
 %D1%88%D0%B0'%7D, %7B'
- 
 name': '
@@ -1754,15 +1754,14 @@
 ight
- 
 ': 17
-5
+4
 %7D%5D%0A%0A
@@ -1827,24 +1827,28 @@
  if 
-'%D1%80%D0%BE%D1%81%D1%82' in person
+person.get('height')
 :%0A  
@@ -1881,14 +1881,14 @@
 on%5B'
- %D1%80%D0%BE%D1%81%D1%82 
+height
 '%5D%0A 
@@ -2023,10 +2023,10 @@
 =%3E 1
-20
+38
 %0A%0A# 

Fix in exam11.py