SaveText.Ru

Без имени
  1.  
  2. class Products:
  3.     def __init__(self, nameFile):
  4.         nameFile += '.txt'
  5.         print(nameFile)
  6.         with open(nameFile, encoding='utf-8') as f:
  7.             s = f.read().split('n')
  8.         for i in range(len(s)):
  9.             params=s[i].split(':')
  10.             s[i]={'Название': params[0],
  11.                   '2017': params[1],
  12.                   '2018': params[2],
  13.                   '2019': params[3]}
  14.         self.products = s
  15.  
  16.     def __str__(self):
  17.         return str(self.products)
  18.  
  19.     def __iadd__(self, str):
  20.         params = str.split(':')
  21.         temp = {'Название': params[0],
  22.                 '2017': params[1],
  23.                 '2018': params[2],
  24.                 '2019': params[3]}
  25.         self.products.append(temp)
  26.         return self
  27.  
  28.     def __iter__(self):
  29.         self.cur_iter=0
  30.         return self
  31.  
  32.     def __next__(self):
  33.         try:
  34.             temp=self.products[self.cur_iter]
  35.             self.cur_iter+=1
  36.             return temp
  37.         except IndexError:
  38.             raise StopIteration()
  39.  
  40.     def getTop(self,year):
  41.         if type(year)==int:
  42.             year=str(year)
  43.         i=0
  44.         max=0
  45.         maxitem=''
  46.         for item in self.products:
  47.             if int(item[year])>int(max):
  48.                 max=int(item[year])
  49.                 maxitem=item['Название']
  50.             i+=1
  51.         return maxitem
  52.  
  53.     def getLow(self,year):
  54.         if type(year)==int:
  55.             year=str(year)
  56.         i=0
  57.         min=0
  58.         minitem=''
  59.         for item in self.products:
  60.             if int(item[year])<int(min) or min == 0:
  61.                 min=int(item[year])
  62.                 minitem=item['Название']
  63.             i+=1
  64.         return minitem
  65.  
  66.     def output(self,nameFile):
  67.         table_data = []
  68.         table_data.append(list(self.products[0].keys()))
  69.         for item in self.products:
  70.             table_data.append(list(item.values()))
  71.         nameFile += '.txt'
  72.         with open(nameFile, 'w', encoding='utf-8') as f:
  73.             rows = len(table_data)
  74.             cols = len(table_data[0])
  75.             col_width = []
  76.             print(table_data)
  77.             for col in range(cols):
  78.                 columns = [table_data[row][col] for row in range(rows)]
  79.                 col_width.append(len(max(columns, key=len)))
  80.             separator = "-+-".join('-' * n for n in col_width)
  81.             for i, row in enumerate(range(rows)):
  82.                 if i == 1:
  83.                     print(separator, file=f)
  84.                 result = []
  85.                 for col in range(cols):
  86.                     item = table_data[row][col].rjust(col_width[col])
  87.                     result.append(item)
  88.                 print(' | '.join(result), file=f)
  89.  
  90. products = Products('Сафронова_данные')
  91. products.output('Сафронова_пример')
  92. products += 'ТВИКС:10:8:13'
  93. print(products)
  94. print(products.getTop(2018))
  95. print(products.getLow(2017))
  96. print(products.getLow(2018))
  97. iterator=iter(products)
  98. print(next(iterator))
  99. print(next(iterator))
  100. print(next(iterator))
  101. print(next(iterator))
  102. print(next(iterator))

Share with your friends:

Print