Цикл с условиями

Необходимо написать цикл, который выполняется до 241 включая, где окончание итерации проходит с увеличением переменной X на 3.

В цикле условие:

Если X кратно 5 и нечетное, то выводить на экран "дай пятюню с правой!"

если X кратно 5 и четное, то выводить на экран "дай пятюню с левой!"

Иначе, Если X не кратно 5 и нечетное, то выводить "до пятюни правой не хватает (разница чисел)

Если X не кратно 5 и четное, то выводить "до пятюню девой не хватает (разница чисел)

Иначе вывести "что-то пошло не так"

Этот код решает задачу, но останавливается не доходя до 241. Как можно его исправить?

num = range(1, 242, 3)
r = [x for x in num if x % 5 == 0 and x % 2 != 0]
l = [x for x in num if x % 5 == 0 and x % 2 == 0]
nr = [x for x in num if x % 5 != 0 and x % 2 != 0]
nl = [x for x in num if x % 5 != 0 and x % 2 == 0]

for x in range(1, 242, 3):
    if x in r:
        print('дай пятюню с правой!', x)
    elif x in l:
        print('дай пятюню с левой!', x)
        
    elif x in nr:
        dif_nr = [i - x for i in r]
        print('до пятюни правой не хватает', min(el for el in dif_nr if el > 0))
    elif x in nl:
        dif_nl = [i - x for i in l]
        print('до пятюни левой не хватает', min(el for el in dif_nl if el > 0))
    else:
        print('что-то пошлo не так')

Спасибо!


Ответы (1 шт):

Автор решения: GrAnd

Ну, например так:

        dif_nr = [i - x for i in r if i-x > 0]
        if dif_nr:
            print(x,'до пятюни правой не хватает', min(dif_nr))

И для "левой" по аналогии.
А то в конце он не может предсказать сколько остаётся до следующей "пятюни", т.к. список получается пустым. На что и выскакивает ошибка:

print('до пятюни левой не хватает', min(el for el in dif_nl if el > 0))
ValueError: min() arg is an empty sequence
→ Ссылка