avelecter
@avelecter

Как можно ужать код Python (if)?

Всем привет
Есть такой код
Как можно уменьшить его без ущерба?
Не понимаю как применить while (если он тут применим), чтобы код ды значительно меньше?

def pay():  # количество лет выплаты дивов за 7 последних лет. Если выплата не равно 0, то прибавляем +1
    i = 0
    if year2019.value != 0:
        i += 1
    else:
        pass

    if year2018.value != 0:
        i += 1
    else:
        pass

    if year2017.value != 0:
        i += 1
    else:
        pass

    if year2016.value != 0:
        i += 1
    else:
        pass

    if year2015.value != 0:
        i += 1
    else:
        pass

    if year2014.value != 0:
        i += 1
    else:
        pass

    if year2013.value != 0:
        i += 1
    else:
        pass
    pay_index = i  # получаем pay_index
    return pay_index


pay()
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
kshnkvn
@kshnkvn Куратор тега Python
t.me/kshnkvn
years = [year2013, year2014, year2015]
for year in years:
    if year.value != 0:
        i += 1
    else:
        pass
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Guest007
@Guest007
Django, Python, Linux и всё такое...
Вроде бы так...
years = [year2013, year2014, year2015, year2016, year2017, year2018, year2019]
result = sum(y.value for y in years if y.value)

Хотя если проверка только на 0, то на результат суммирования это не влияет, тогда вторая строка даже проще:
result = sum(y.value for y in years)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Droice Labs Москва
от 120 000 до 220 000 ₽
от 80 000 до 80 000 ₽
EQWILE Казань
от 80 000 до 110 000 ₽