styleru.py lecture 3

ilebedev

			styleru.py
		

Сегодня в программе

План рассказа

  1. Сложность алгоритмов
  2. Структуры данных питона
      1. Float
        Int
        List
        Dict
        Set

Краткость - сестра таланта

Но как?

Что считаем

  1. Арифметические операции +, -, *, /, //, %
  2. Операции сравнения >, <, ==, !=
  3. Проверка условий if
  4. Присваивание переменной

Память или время?

Big O notation

Big O notation

Пример

			array = [1, 2, 3, 4, ..., n]
			for element in array:
        print(element)
		

Пример

			array = [
    [1, 2, 3, 4, ..., n],
    [5, 6, 7, 8, ..., n],
    ....................,
  ]

  for row in array:
      for element in row:
          print(element)
		

Как это влияет на вычисления

Скучный график

float

			0.1 + 0.2 == 0.3
			False
		

float

			0.1 + 0.2
			0.30000000000000004
		

Почему так?

  • На самом деле числа хранятся так
  • 			0.125
    		
    			1/10 + 2/100 + 5/1000
    			

    Почему так?

  • Но на самом деле они хранятся вообще так
  • 			0.001
    		
    			0/2 + 0/4 + 1/8
    			

    Проблема

    Проблема

    Проблема

    Проблема

    Проблема

    Чем это грозит?

    			0.1 + 0.1 + 0.1 == 0.3
    			False
    		

    Чем это грозит?

    			0.1 + 0.1 + 0.1 == 0.3
    			0.300000000004 != 0.3
    		

    Как бороться?

    			round(1.99999, 2)
    			2
    		

    Как бороться?

    			round(1.99999, 2)
    			2
    		

    int

    list и tuple

    Полный список

    Словарь

    Стоп, что?!

    Коллизии

    Почему так?

    Чем грозит?

    Как бороться?

    Сложность

    set

    Сложность

    string

    Что в итоге?

    Комментарии

    Комментарии

    
    def get_user_name(user_id):
        """
            Получить имя пользователя по его id.
            Функция принимает на вход user_id и возвращает username.
        """
        user = db.users.get(user_id)
        return user.username  # вытаскиваем id статьи
            

    Комментарии

    
    def get_user_name(user_id):
        """
            Получить имя пользователя по его id.
            Функция принимает на вход user_id и возвращает username.
        """
        user = db.users.get(user_id)
        return user.username  # вытаскиваем id статьи
            

    Комментарии

    
    def get_user_name(user_id):
        """
            Получить имя пользователя по его id.
            Функция принимает на вход user_id и возвращает username.
        """
        user = db.users.get(user_id)
        return user.username  # вытаскиваем id статьи
            

    Комментарии

    Комментарии

    Комментарии

    Комментарии

    
    def user_act():
        """Состояние пользователя"""
        a = gui()  # get user id
        s = fun(a)  # статус пользователя
        return s == 14  # 14 - заблокирован
    

    Комментарии

    
    def is_current_user_blocked():
        user_id = get_current_user_id()
        return is_user_blocked(user_id)
    

    Комментарии

    18+

    Случай из жизни

    Тебе дали задание: воспользоваться методами АПИ внешнего сервиса, которых нет.
    Твои действия?

    Случай из жизни

    Вы с одногруппником вдвоём делаете учебный проект. Поделили задачи пополам, ты свою часть сделал, товарищ – нет.
    Твои действия?

    Случай из жизни

    В качестве курсовой ты сделал проект, который парсит аудио из Вконтакте и строит рекомендательную систему.
    За три дня до защиты Вконтакте закрывает доступ к аудио через АПИ.
    Твои действия?

    Случай из жизни

    Ты сдал работу, препод обещал её проверить, но уже неделю молчит.
    Твои действия?

     

    Позиция жертвы

    Позиция автора

    Позиция автора

    Позиция автора

    Позиция автора

    Позиция автора

    Позиция автора

    Позиция автора

    И чё

    Будь автором, не будь жертвой.