Интересует соотношение задач программы к её объёму. Возможно как-то оптимизировать код?
Явных ошибок не вижу, рабочий код. Разве что "except TypeError" лишено смысла.
По мелочам:while life > 0 and count == 0:
не следует сравнивать с нулём: все встроенные типы могут возвращать логическое значение, будучи об этом спрошены условным оператором :)
Например: if not []:
   print('[] вернул False')
if [1, 2, 3]:
   print('[1, 2, 3] вернул True')
Для чисел - 0 возвращает False
Ну и основной цикл я бы подужал :)......
            else:
                i = random.randint(1, 5)
                ch, y = random.choice((('+', x + i), ('-', x - i), ('*', x * i), ('/', x / i)))
                print('Случайная величина = ', i)
                print('Результат действия = ', y)
                if input('Что это было за действие?: ') == ch:
                    print(yes)
                    count += 1
                else:
                    print(no)
                    life -= 1
                    print('Прав на ошибку - ', life)
            if count == 10:
......
А что по-вашему оптимизация, позвольте осведомиться? Это не однозначный вопрос. Вы спрашиваете про код?
Да, это рабочий код, но он выглядит плохо. Нет, простите, он выглядит ужасно. Самое первое что необходимо уяснить - никогда ничего не писать (если вы точно не понимаете зачем) в основной области файла. Все должно быть разбито на функции. Этих немыслимых уезжающих вправо try - except - else - if, вложенных друг в друга через if'ы while True циклов и прочей, извините, лапши не случилось, если бы вы использовали функции для повторяющихся участков кода и вызывали бы их.
Вот пример без нагромождения if'ов. Он не идеален, в первую очередь потому что он может быть сложен для прочтения, но он таков для большей компактности и потому, что в нем использованы некоторые "альтернативные" методы, которые могли бы использовать вы и о которых вы вопрошали:# coding: utf-8

import random


def ask(message, known_answers=['нет', 'да'], yes_no=True):
    answer = '\n'
    while answer not in known_answers: 
        answer = input(message)
        if answer not in known_answers:
            print('Возможные варианты: ', ' '.join(known_answers))
    return known_answers.index(answer) if yes_no else answer

def game():
    # supporting function
    def _input_x():
        x = None
        while x is None:
            try:
                x = int(input('Введите x: '))
            except ValueError:
                print('Введите целое число')
        return x
    # messages
    answers = ['Ответ неверный', 'Верно']
    is_winner = ['К сожалению, вы проиграли', 'Вы - победитель']
    # actions
    actions = {'+': lambda x, i: x+i,
               '-': lambda x, i: x-i,
               '*': lambda x, i: x*i,
               '/': lambda x, i: x/i
              } 
    # initial values
    life = 4
    count = 10
    
    # main loop
    while life and count:
        # condition
        x = _input_x()
        i = random.randint(1, 5)
        print('Случайная величина = ', i)
        random_action = random.choice(list(actions.keys()))
        y = actions[random_action](x, i)
        print('Результат действия = ', y)
        
        # answer
        answer = ask('Что это было за действие?: ',
                     known_answers=list(actions.keys()), yes_no=False)
        # result
        result = actions[answer](x, i) == y
        print(answers[result])
        if result:
            count -= result
        else:
            life -= not result
            print('Прав на ошибку - ', life)
    
    # game result    
    print(is_winner[bool(life)])

def run():
    print('Суть этой игры такова: вы указываете любое целое число x, программа выбирает случайную'
      ' величину и выводит на экран результат одно из четырёх действий. Ваша задача - указать'
      ' арифметический знак действия (сложение (+), вычитание (-), умножение (*), деление (/)),'
      ' полагаясь на результат. 10 Правильных ответов приведут вас к победе.')
    while ask('Играем? да/нет: '):
        game()
    print('Всего хорошего')


if __name__ == '__main__':
    run()
Если разберетесь как он работает, вы научитесь новому.
Если я показался грубым или заносчивым - извините.
Если будут вопросы - пишите, постараюсь ответить.
Если..