Задать вопрос
@g_Innaro

Как сделать, чтобы числа в списке при вычитании уходили за 0?

Это все написано на MicroPython.

def bright(brightness=0):
    if brightness == '+':
        maxs = max(colors)
        if maxs + step <= 255:
            for i in list(range(3)):
                buf[i] += step
                if buf[i] > 0:
                    colors[i] = buf[i]
                else:
                    colors[i] = 0
                sleep(0.1)
        print(buf)
        return colors
    if brightness == '-':
        maxs = max(colors)
        if maxs - step >= 0:
            for i in list(range(3)):
                buf[i] -= step
                if buf[i] > 0:
                    colors[i] = buf[i]
                else:
                    colors[i] = 0
                sleep(0.1)
        print(buf)
        return colors

Есть такая часть кода, и мне нужно чтобы в buf числа уходили в минус, но они становятся в 0.
Примером можно взять buf = (33, 176, 5), и вот при вычитании, становится (15, 158, 0).
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@g_Innaro Автор вопроса
решилось все оказывается проще, чем стоило потратить силы
я просто проглядел тот момент, что нужно выводить значение из функции после выполнения кода и добавил в return список buf
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
fenrir1121
@fenrir1121
Начни с документации
Вы вообще сами алгоритм писали? Вот интересующая вас часть и для числел <= 0 colors становится равен 0
if buf[i] > 0:
    colors[i] = buf[i]
else:
    colors[i] = 0
Ответ написан
LaRN
@LaRN
Senior Developer
Вас похоже вот это условие не пускает:
if maxs - step >= 0:
maxs начитывается из colors, а colors содержит buf (colors[i] = buf[i]) или 0.
Т.е. значения в colors не дают увести в минус значения в buf.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы