class FormatList: _list = [] offset: int = 0 def __init__(self, input_list: list, offset: int = 0): self._list = input_list.copy() self.offset = offset def __str__(self): s = str("") if len(self._list) <= 0: return s if len(self._list) == 1: return self._list[0] if len(self._list) == 2: return " and ".join(self._list) if len(self._list) > 2: return ", ".join(self._list[:-1]) + " and " + self._list[-1] def Format(self): s = str("") if len(self._list) <= 0: return s if len(self._list) == 1: return TransToFrontFormat(0 + self.offset) if len(self._list) == 2: return " and ".join( [ TransToFrontFormat(i + self.offset) for i in range(len(self._list)) ] ) if len(self._list) > 2: return ( ", ".join( [ TransToFrontFormat(i + self.offset) for i in range(len(self._list) - 1) ] ) + " and " + TransToFrontFormat(len(self._list) - 1 + self.offset) ) def TransToFrontFormat(index: int): return "!<" + str(index) + ">!"