суббота, 11 февраля 2017 г.

Магия python.
Реальная задача из жизни. ManageEngine Servicedesk хранит аттачменты для coversations (ответов заявителей) в каталоге MESD homedir\fileAttachments\Conversations\
Но дальше внутри этого каталога он хранит их пачками по 5000 ConversationID.
Типа: 1_5000, 5001_10000, 10001_15000 и тд. Соотвественно ConversationID с номером 24990 попадет в каталог 20000_25000. Задача: напистать функцию определения имени директории наиболее коротким способом.

#ci - input ConversationID
#maxci - maximum of ConversationID (for example 1 million)
#returns dir name of ConversationID
def funcname(ci, maxci):
   a = [i for i in range(0,maxci,5000)]
   b = []
   b+=[str(a[i]+1)+'_'+str(a[i+1]) for i in range(0,len(a)-1)]
   return b[a.index(a[ci//5000 - 1 if ci%5000==0 else ci//5000])]

Результат: