• Почему не работает решение для задачи с Codewars?

    @serhiops
    Python/JavaScript/C++
    Делюсь своими тремя примерами, скорость выполнения указана в коментариях к каждой функции
    def well(x):
        #  0.05ms
        a = [i for i in x if i == 'good']
        if 3 > len(a) > 0:
            return 'Publish!'
        elif len(a) > 2:
            return 'I smell a series!'
        return 'Fail!'
    
    from collections import Counter
    def well2(x):
        # 0.19ms
        c = Counter(x)
        if 3 > c['good'] > 0:
            return 'Publish!'
        elif c['good'] > 2:
            return 'I smell a series!'
        return 'Fail!'
    
    def well3(x):
        # 0.11 ms
        countOfGoodIdeas = 0
        for i in x:
            if i == 'good':
                countOfGoodIdeas+=1
        if 3 > countOfGoodIdeas > 0:
            return 'Publish!'
        elif countOfGoodIdeas > 2:
            return 'I smell a series!'
        return 'Fail!'
    Ответ написан
    Комментировать
  • Почему не работает решение для задачи с Codewars?

    githubVladimirT
    @githubVladimirT
    Кодер, немного сисадмин
    def well(x):
        good = x.count('good')
        
        if good == 0:
            return 'Fail!'
        
        elif good == 1 or good == 2:
            return 'Publish!'
        
        elif good > 2:
            return 'I smell a series!'


    У меня сработало такое решение
    Ответ написан
    2 комментария
  • Почему при подсчете количества строк в SQLite3 выводится не число, а 0x0000009E9DC70E30>?

    Vindicar
    @Vindicar
    RTFM!
    1. Ты получил объект-курсор. У него нет строкового представления, поэтому пр ивыводе он отображается по умолчанию - <Cursor object at адрес-объекта-в-памяти>
    Чтобы получить выбранные данные, нужно вызывать методы fetchone() или fetchall().
    2. Если ты делаешь запрос к БД, который возвращает данные (неважно какие), получить их придётся как описано выше. Что это за данные - сами строки, какая-то агрегатная функция, или еще что - не важно. Даже если выполнишь запрос вида SELECT 123;, всё равно результат придётся вытаскивать через fetchone()/fetchall().
    3. SUM(id) вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*).
    Ответ написан
    Комментировать
  • Ошибка sqlite3.IntegrityError: UNIQUE constraint failed: order_id.ID. Как исправить?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Если я не ошибаюсь, то ошибку можно исправить переписав код без использования F-строк, но давненько не работал с SQLite3 и не помню как это сделать.

    C помощью подстановочных значений. О том как это сделать - смотрите в документации там куча примеров.
    Что касательно ошибки - значение поля id не может повторяться, но вы пытаетесь добавить уже существующее значение. Чаще всего, и ваш случай не исключение, как я понял, уникальными делаю первичные ключи (они-же id`шники). В таких случаях их делают авто-иникрементируемыми и при добавлении данных данное поле пропускают, указывая только нужные поля (примеры тут в главе посвященной собственно insert).
    Ответ написан
    Комментировать