Разбор задачи: Бейсбольный матч

Предложенный нами код решения:

def calPoints(operations):
    """
    :param operations: Список строк, представляющих операции.
    :return: Сумма всех очков, записанных в записи после выполнения всех операций.
    """
    record = []

    for op in operations:
        if op == '+':

            if len(record) >= 2:
                record.append(record[-1] + record[-2])
        elif op == 'D':

            if record:
                record.append(2 * record[-1])
        elif op == 'C':

            if record:
                record.pop()
        else:

            record.append(int(op))

    return sum(record)

Пошаговый разбор

  1. Инициализация записи:

    record = []
    

    Создаётся пустой список record, который будет содержать результаты всех операций.

  2. Перебор операций:

    for op in operations:
    

    Для каждой операции из списка operations выполняется одно из следующих действий в зависимости от значения op.

  3. Операция '+':

    if op == '+':
        if len(record) >= 2:
            record.append(record[-1] + record[-2])
    
    • Проверяется, что в списке record есть хотя бы два последних значения.
    • Если условие выполнено, добавляется сумма двух последних значений записи.
  4. Операция 'D':

    elif op == 'D':
        if record:
            record.append(2 * record[-1])
    
    • Проверяется, что в списке record есть хотя бы одно значение.
    • Если условие выполнено, добавляется удвоенное значение последнего элемента записи.
  5. Операция 'C':

    elif op == 'C':
        if record:
            record.pop()
    
    • Проверяется, что список record не пустой.
    • Если условие выполнено, удаляется последнее значение из записи.
  6. Обычное число:

    else:
        record.append(int(op))
    
    • Если операция не является '+', 'D', или 'C', то она интерпретируется как число.
    • Это число преобразуется в целое и добавляется в список record.
  7. Вычисление результата:

    return sum(record)
    
    • После выполнения всех операций возвращается сумма всех элементов в списке record.

Пример выполнения

Вход:

operations = ["5", "2", "C", "D", "+"]

Шаги выполнения:

  1. op = "5"
    • Число 5 добавляется в запись: record = [5].
  2. op = "2"
    • Число 2 добавляется в запись: record = [5, 2].
  3. op = "C"
    • Последнее значение удаляется: record = [5].
  4. op = "D"
    • Удвоенное значение последнего элемента (5 * 2 = 10) добавляется: record = [5, 10].
  5. op = "+"
    • Сумма двух последних элементов (5 + 10 = 15) добавляется: record = [5, 10, 15].

Итоговая запись: [5, 10, 15]
Результат: sum(record) = 5 + 10 + 15 = 30

 



Комментарии

xsnm_avatar
xsnm
,
5 месяцев, 26 дней назад

ops = ["5", "2", "k", "C", "D", "+"]
ValueError: invalid literal for int() with base 10: 'k'
 

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии