Упростить условие if
нужно упростить условие if-else
def transport_hub(schedule, days):
goods = 0
hub_capacity = 0
updated_sch = [tuple(map(int, elem.split())) for elem in schedule]
updated_sch.sort(key=lambda elem: elem[1], reverse=True)
print(updated_sch)
for i in range(1, days + 1):
for elem_sch in updated_sch:
if i % elem_sch[0] == 0:
if goods + elem_sch[1] < 0:
goods = 0
print(goods)
else:
goods += elem_sch[1]
print(goods)
if hub_capacity < goods:
hub_capacity = goods
return hub_capacity
print(transport_hub(["2 -2", "3 3"], 7)
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Если я правильно понял, нужно упростить этот кусок:
if goods + elem_sch[1] < 0:
goods = 0
print(goods)
else:
goods += elem_sch[1]
print(goods)
Ну, наверное, можно так:
goods = max(goods + elem_sch[1], 0):
print(goods)
Ну и дальше:
if hub_capacity < goods:
hub_capacity = goods
Можно тоже использовать max, правда это скорее всего медленнее, хотя короче и понятнее:
hub_capacity = max(hub_capacity, goods)
Автор решения: A_Vaclav
→ Ссылка
def transport_hub(schedule, days):
goods = 0
hub_capacity = []# меням на список - накопитель
updated_sch = [tuple(map(int, elem.split())) for elem in schedule]
updated_sch.sort(key=lambda elem: elem[1], reverse=True)
print(updated_sch)
for i in range(1, days + 1):
for elem_sch in updated_sch:
if i % elem_sch[0] == 0:
# тут все как @CrazyElf расписал
goods = max(goods + elem_sch[1], 0)
print(goods)
# а вот тут скидываем в накопитель
hub_capacity.append(goods)
# берем из накопителя максимальное значение один раз, не в цикле
return max(hub_capacity)