Привет, предлагаю вот такой вариант решения задачи:
import datetime
import sys
from colorama import Fore, Back, Style, init
init()
def main():
try:
_, login, password = sys.argv
except ValueError:
login = password = ""
if password != "abrakadabra" or login != "root":
print(Fore.RED)
print("Неверный логин или пароль!")
exit()
print(Fore.GREEN)
print("Добро пожаловать!")
print(Fore.WHITE)
try:
name = input("Как тебя зовут?: ")
print("Приятно познакомиться, {}! Я - Джессика! Твой ассистент.".format(name))
while True:
question = input("Введите запрос: ")
if question == "Сколько сейчас времени?":
cur_time = datetime.datetime.today().strftime("%H.%M")
print("Сейчас: " + str(cur_time))
elif question == "Какая сегодня дата?":
date = datetime.datetime.today().strftime("%d.%m.%Y")
print("Сегодня у нас: " + str(date))
else:
print("Извините, я не могу понять ваш вопрос...")
except KeyboardInterrupt:
exit()
if __name__ == "__main__":
main()
Немного по тому, что изменил: убрал часть с объявлением кодировки, так как в новых версиях Python utf-8 ставится по умолчанию, убрал из импорта модуль time, так как он не используется. Чтобы из модуля какого-то импортировать функции, не обязательно сначала сам модуль импортировать "colorama", можно сразу, как у меня. Переменную "time" переименовал в "cur_time", так как она могла конфликтовать в будущем с модулем "time" и занёс "date" и "cur_date" в цикл, так как в теории, если оставить на определённое время, то информация станет не актуальной. Убрал функцию "qstn", так как она нам дальше не понадобится, у нас будет цикл. Там будет есть моя "отсебятина", которая, как я считаю, прикольнее и улучшит взаимодействие с программой. Там есть строчка sys.argv. Ты, наверное, сталкивался, что в некоторых консольных утилитах ты можешь различные параметры передавать, так вот, они в python будут в этом списке храниться, в коде мы их и берём. Там можно сразу много строк кода убрать и сделать логин удобнее и быстрее для пользователя. Дальше проще, мы будем в цикле прогонять вопросы по мере их поступления, ловить комбинацию "ctr+c", которая ошибку будет выкидывать "KeyboardInterrupt" и просто выходить из программы, когда она попадётся. И ещё хотел одну ремарочку сделать, у тебя там в коде ошибки выбрасывались "SystemExit", так вот, на сколько я знаю, системные ошибки по типу этой или "KeyboardInterrupt" лучше самому не выкидывать.