SaveText.Ru

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

Share with your friends:

Print