import typing from typing import List from typing import AnyStr from typing import Tuple from typing import Callable from typing import Any class FactPackLoader: def __init__(self, TrueCode: str = '1', FalseCode: str = '0', encoding: AnyStr = 'utf-8',): self._encoding = encoding self._trueAnswCode = TrueCode self._falseAnswCode = FalseCode def LoadPack(self, FactPackPath: AnyStr, AnswSplitter: AnyStr = ':: ') -> Tuple[AnyStr, int]: with open(FactPackPath, 'r', encoding=self._encoding) as data: RawData = data.read().split('\n') for FactPair in RawData: FactPair = tuple(FactPair.split(AnswSplitter)) yield (FactPair[0], self._ToBool(FactPair[1])) def _ToBool(self, replyCode): if replyCode == self._trueAnswCode: return True return False def main(): f = FactPackLoader() print('"Правда-Ложь"\nАвтор: KnowsUser1\nVersion: 0.0.1 Ya-Sdelyal') IsGameRunning = 'y' while IsGameRunning == 'y': lives = 3 fp = input('Укажите имя файла, содержащего пак фактов:\n') facts = f.LoadPack(fp) for i, Q in enumerate(facts): print(f'Вопрос {i+1}:\n{Q[0]}') reply = True if input().lower() == 'да' else False if reply != Q[1]: lives -= 1 print(f'Вы не поверите, но тот факт, что {Q[0]}, действительно является правдой!\nЖизней осталось: {lives}') else: print(f'Вы совершенно правы!') if lives <= 0: print('Вы проиграли') IsGameRunning = input('Попробуем ещё раз? Y/N\n').lower() break else: print('Поздравляем, вы успешно выполнили все задания из файла!') IsGameRunning = input('Сыграем ещё раз? Y/N\n').lower() if __name__ == "__main__": main()