• Как применять openapi в django проекте?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    сделал гуд, повторить несколько раз до полного удовлетворения

    если надо решить задачу - смотри картинку у меня в профиле и задавай первый вопрос
    Ответ написан
    8 комментариев
  • Как исправить ошибку substring not found?

    longclaps
    @longclaps
    for s in 'a aab abc abb'.split():
        print([s.find(c) for c in s])
    Ответ написан
    1 комментарий
  • Как сравнить между собой цифры вложенных списков?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Если нужно четко условие "И по длине И по ширине больше остальных":
    from functools import reduce
    
    a = [[1, 6], [3, 5], [3, 6], [7, 7]]
    result = reduce(lambda res,x: x if x[0]>res[0] and x[1]>res[1] else res, a)
    print(result)

    [7, 7]
    Ответ написан
    3 комментария
  • Как работает алгоритм кодирования длин серий?

    adugin
    @adugin Куратор тега Python
    Вообще можно всё сильно упростить:
    from itertools import groupby
    
    def rle(text):
        return [(key, len(tuple(group))) for key, group in groupby(text)]
    Ответ написан
    2 комментария
  • Как работает алгоритм кодирования длин серий?

    longclaps
    @longclaps
    Непонятную строку можно выкинуть:
    def rle(src):
        result = []
        # допишем букву, отличающуюся от последней в строке
        src += 'b' if src.endswith('a') else 'a'
        # теперь, заметь, она не пуста и проверка на пустоту не нужна
        current = src[0]
        counter = 0  # тут ошибочка, ты пытался дважды посчитать первую букву
        for e in src:
            if e == current:
                counter += 1
            else:
                result.append((current, counter))
                current = e
                counter = 1
        return result
    
    
    string = 'aaabbbtttggghhhavaaa'
    
    print(rle(string))
    Ответ написан
    Комментировать
  • Как работает алгоритм кодирования длин серий?

    @Andy_U
    Я уж не знаю, откуда вы взяли эту программу, но в указанной строке очевидно надо поменять порядок элементов на:
    result.append((current, counter))
    Также очевидно, что если вы эту строчку выкинете, последний элемент списка (последняя серия) в ответе исчезнет.

    Кстати и с длиной первой серии программа провирается. Сами найдете ошибку?
    Ответ написан
    Комментировать
  • Как реализовать такую конструкцию if, for в html файле?

    Wondermarin
    @Wondermarin
    models.py:
    class Book(models.Model):
        ...
        author = models.ForeignKey(Author, related_name="books", on_delete=models.SET_NULL, null=True)
        ...


    views.py:
    def index(request):
        context = {}
        authors = Author.objects.all()
        context['authors'] = authors
        return render(request, 'index.html', context)


    index.html:
    ...
        <div>
            {% for author in authors %}
                <h1>{{ author.first_name }}</h1>
                {% for book in author.books.all %}
                    <h4>{{ book.title }}</h4>
                    {% empty %}
                        <p>Похоже, у этого автора нет книг :(</p>
                {% endfor %}
            {% endfor %}
        </div>
    ...


    И модель автора у вас должна быть объявлена раньше модели книги.

    Также советую ознакомиться с этим: https://docs.djangoproject.com/en/3.0/topics/db/qu...
    Ответ написан
    2 комментария
  • Правильно ли я понимаю хеширование?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Хэш - это сюръекция, если он имеет коллизии, и обычно - это так, но не всегда.
    Хеш обратим в свою любую коллизию (набор данных, дающих тот же результат хеширования).
    Иначе - хэш биективен.

    Также, хеш может быть универсален.

    Частые (но не все, разумеется!) варианты использования:
    1. Проверка целостности файлов: обычно указывают контрольные суммы. Это и есть хеш содержимого файлов.
    2. Применение для валидации доступа или подписи запросов: применяют хеширование с коллизиями для определённого набора данных и затем сравнивают этот хеш с результатом расчёта для этого же набора данных на другом узле.
    В этот момент, данные формирующие хеш, передаются частично (либо не передаются вовсе, а передаётся только сам хеш). При получении одиночного хеша или хеша с неполным набором данных, происходит формирование (расчёт) своего (контрольного) хеша по известному выражению на основе исходных данных, и затем выносится вердикт: совпадают с принятый и контрольный хеши или нет.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю хеширование?

    DevMan
    @DevMan
    1) длина хэша определяется функцией. хоть для одного символа, хоть для терабайта, длина хэша будет одинаковой.
    2) хэш – необратимое преобразование.
    Ответ написан
    8 комментариев
  • Как решить эту задачу от яндекса?

    @Al6xand6r
    Просто еще один вариант "Жызни"))) Не благодарите)))

    import os
    import random
    import time
    
    class Colony:
      def __init__(self, width, height):
        self.width = width
        self.height = height
        self.field = [
          [random.randint(0,1) for i in range(width)] for j in range(height)
          ]
    
      def live(self):
        """
        Check cell's neighbors and modify cell's state.
        """
        for row in range(0,self.height):
          for col in range(0,self.width):
            live_neighbours = self.check_neighbours(row, col)
            if live_neighbours < 2:
              # die
              self.field[row][col] = 0
            # elif live_neighbours in (2,3):
              # remain as is
            elif live_neighbours == 3:
              # raise
              self.field[row][col] = 1
            elif live_neighbours > 3:
              # die
              self.field[row][col] = 0
    
      def check_neighbours(self, row, col):
        live_neighbours = 0
        for r in (row - 1, row, row + 1):
          for c in (col - 1, col, col + 1):
            if c >=0 and c < self.width and r >=0 and r < self.height:
              if self.field[r][c] and not (c == col and r == row):
                live_neighbours += 1
        return live_neighbours
    
    
      def redraw(self):
        """
        Clears screen and draws actual field state.
        """
        os.system('clear')
        for row in self.field:
          for cell in row:
            print(cell, end='')
          print('', end='\n')
    
    
    if __name__ == '__main__':
      # TODO: check for filename or field dimensions in comand line parameters
      # dimensions are hardcoded for now.
      start_time = time.time()
      first_loop = 1
      width = 20
      height = 20
      colony = Colony(width, height)
      while True:
        colony.live()
        if time.time() - start_time > 0.99 or first_loop:
          first_loop = 0
          start_time = time.time()
          colony.redraw()
          print('Ctrl + C to stop')


    Куда ходить в Яднекс за своей кучей денег?))))
    Ответ написан
    1 комментарий
  • Как решить эту задачу от яндекса?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Смотри что на г-кодил. Но чую где то напортачил, 100%
    from random import randint, randrange
    from pprint import pprint
    from os import system
    from copy import deepcopy
    
    
    class CellLife:
    
        def __init__(self, x = None, y = None):
            self.x, self.y = [randrange(10, 25) for _ in range(2) if x is None or y is None]
            self.field = [[randint(0, 1) for _ in range(self.x)] for _ in range(self.y)]
            self.field_state = None
    
        def environment(self, row, index):
            left_neighbors = row[:index][-8:]
            right_neighbors = row[index:][1:9:]
            while len(left_neighbors + right_neighbors) > 8:
                if left_neighbors < right_neighbors:
                    right_neighbors = right_neighbors[:-1]
                else:
                    left_neighbors = left_neighbors[1:]
            return left_neighbors + right_neighbors
    
        def dead_or_alive(self, env, cell):
            state = None
            if cell == 1:
                if env.count(1) < 2 or env.count(1) > 3:
                    state = False
                elif env.count(1) in (2, 3):
                    state = True
            else:
                if env.count(1) == 3:
                    state = True
            return state
    
        def start_survival(self):
            while self.field_state != self.field:
                self.field_state = deepcopy(self.field)
                for r_index, row in enumerate(self.field):
                    for c_index, cell in enumerate(row):
                        env = self.environment(row, c_index)
                        state = self.dead_or_alive(env, cell)
                        if state is not None:
                            if state is True:
                                self.field[r_index][c_index] = 1
                            else:
                                self.field[r_index][c_index] = 0
                            system('cls')
                            pprint(self.field)
            
    
    cell_field = CellLife()
    cell_field.start_survival()
    Ответ написан
    8 комментариев
  • Как решить эту задачу от яндекса?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сдаётся мне, что задача для реализации в несколько потоков: ограничение времени и произвольный размер поля - не спроста!
    Ответ написан
    2 комментария
  • Как решить эту задачу от яндекса?

    @kunjut19
    поищите игра "жизнь". В интернете куча решений.

    А вообще:
    1) берете клетку (в цикле обходите каждую клетку поля)
    2) циклом обозреваете клетки вокруг нее
    3) если соседняя клетка живая, увеличиваете счетчик живых соседей на 1
    4) после обхода всех соседних клеток (а их 8), смотрите - если клетка, которую вы рассматриваете живая, то
    а) оставляете живой, если счетчик живых соседей равен 2 или 3 - оставляете все как есть
    б) если другое значение - меняете ее значение на 0
    5) если клетка изначально мертвая, то при значении счетчика живых соседей, равного 3, оживляете

    Прошлись таким образом по всем клеткам доски, подождали секунду и заново запустили весь этот процесс

    Стартовое значение из файла (как я понимаю) - это изначалое расположение живых и мертвых клеток.

    У меня есть решение на javascript. Если понимаете этот язык, могу скинуть вам код, а вы переделаете под python
    Ответ написан
  • Как написать get запрос с несуществующего сайта?

    idegree
    @idegree
    Senior Workaround Developer
    Написать mock-сервер, который будет все это отдавать.
    Postman умеет делаеть mock-сервер просто из JSON-файла.
    Ответ написан
    1 комментарий
  • Как написать get запрос с несуществующего сайта?

    @sergeyfilippov4
    Веб-сервер:
    import json
    from flask import Flask
    
    test_dict = {"foo": "var"}
    json_ = json.dumps(test_dict, indent=4)
    
    app = Flask(__name__)
    @app.route('/')
    def index():
        return json_
    
    app.run()


    Парсер:
    import requests
    
    request = requests.get(IP)
    dict_ = request.json()
    Ответ написан
    1 комментарий
  • Как сайты распознают ботов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    работающее никто не засветит ))

    из популарярного - можешь на Мамбе потренироваться, там довольно легко обходится их детектор

    с Гуглом или Яндексом уже подороже
    Ответ написан
    Комментировать
  • Как сайты распознают ботов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Никак не избежать ибо за это отвечает ML и на лету ловит запросы и по готовой модели принимает решение. Модель тренируется постоянно и обновляется регулярно, поэтому проскочить слабо вероятно. Даже proxy не всегда спасают
    Ответ написан
    Комментировать
  • В чем смысл быть гуру тостера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Работа над личным брендом: Высокая репутация в профессиональных сообществах повышает привлекательность для нанимателей.
    2. Улучшение существующих знаний: Хочешь что-то понять, объясни другому.
    3. Приобретение новых знаний: Специализация замыкает в узком спектре задач и проблем, а Q&A-сервисы - это источник задач и проблем из самых разных областей и иногда под самыми неожиданными углами.
    4. Альтруизм: Большинству из нас кто-то помогал в начале пути, пришло время возвращать долг и делать свой скромный вклад в рост кадров.

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

    Для чего просиживаете на тостере по 5-6 часов в день?

    Я в среднем раз в полчаса-час заглядываю. Если находится интересный вопрос, могу потратить на него минут 10. Некоторые на перекуры больше времени тратят.
    Ответ написан
    7 комментариев
  • Почему вы отвечаете на вопросы?

    solotony
    @solotony
    покоряю пик Балмера
    "Procrastinate so hard that you start watching lectures about physics"
    Ответ написан
  • Почему вы отвечаете на вопросы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Отвечая - познаю.
    Ответ написан