Лучший способ использовать спина к спине, если операторы, которые полагаются на одну и ту же переменную

#python #python-3.x #if-statement

#python #python-3.x #if-statement

Вопрос:

Я работаю над скриптом, который передает данные в реальном времени и добавляет их в массивы numpy. Если массив имеет определенную длину, я буду использовать его в качестве триггера для выполнения другого действия. Однако я заметил, что иногда они отменяют одно и другое. Чтобы привести пример:

 if len(closeBidArray) > 20:
    execution_logic()   

if len(closeBidArray) > 1:  
    # spreadsheet_append 
    data = "%s" % (closeBidArray[-1])
    ayTools.spreadsheet_append(fileName, data)  

closeBidArray = np.append(closeBidArray, bidPrice)
 

Учитывая приведенный выше пример, пока closeBidArray меньше 20, он не запускает логику выполнения, но выполняет spreadsheet_append и добавляет к массиву numpy (как показано в последней строке выше). Однако, если длина closeBidArray больше 20, то, когда он отказывается выполнять spreadsheet_append , он не будет добавляться к массиву numpy, несмотря на то, что обе эти задачи должны выполняться после. Есть идеи о том, где я сбиваюсь с пути? Спасибо

Комментарии:

1. почему бы spreadsheet_append не запускаться, когда длина closeBidArray больше 20?

2. Я предполагаю, что у вас происходит что-то странное в execution_logic(), и ваша программа завершается перед оценкой вашего второго оператора if.

3. @BobHaffner, execution_logic() в основном выполняет некоторую математику, чтобы увидеть, соответствует ли среднее значение. меньше, чем какое-либо другое число, а затем печатается. Ничего слишком вредного.

4. Вы выполнили шаг через код с помощью отладчика, чтобы проверить, выполняется ли оценка 2-го if?

5. @BobHaffner, извините за поздний ответ (скрипт использует данные в реальном времени), но вы были правы, это была проблема с execution_logic() , по-видимому, был параметр, к которому он не мог получить доступ изнутри класса.