Подсчет через if

#python

#python

Вопрос:

Я не знаю, почему количество нарушений не учитывается — если я сделаю это таким образом:

 def test(runs):
    runs = runs
    for i in range(0,runs):
        #some initialized parameter
        #initialize v[:,0]=v_0 
        for i in range(range(0, int(timeSteps)-1, 1)):
            #calculate v here using Runge Kutta method 
        v = v_0   v
        
        #check if a certain threshold has been reached
        if max(v[:]-v_0) > 50:
            print("breach")
test(10)
 

затем я получаю в 5 раз больше слова breach в качестве вывода

но если я сделаю это так

 def test(runs):
    runs=runs
    count = 0
    for i in range(0,runs):
        #some initialized parameter
        #initialize v[:,0]=v_0 
        for i in range(range(0, int(timeSteps)-1, 1)):
            #calculate v here using Runge Kutta method 
        v = v_0   v
        
        #check if a certain threshold has been reached
        if max(v[:]-v_0) > 50:
            count  = 1
    
    return count
test(10)
 

затем я получаю инициализированное значение count = 0, а не count = 5 в качестве возвращаемого значения. почему это не работает?

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

1. На что вы смотрите, чтобы получить возвращаемое count значение? Ваш пример кода отбрасывает возвращаемое значение test() функции.

2. я хочу вызвать функциональный тест и хочу подсчитать, сколько раз max(v[:]-v_0)> 50 и хочу получить это целое число обратно в качестве возвращаемого значения

3. пожалуйста, опубликуйте воспроизводимый пример.

Ответ №1:

Вы не сохраняете возвращаемое значение ни в одной переменной,

Изменить:

 test(10)
 

Для:

 returnedValue = test(10)
print(returnedValue)
 

Вы также можете сделать это:

 print(test(10))
 

Ответ №2:

во втором цикле вы используете переменную i , когда она уже объявлена в цикле чуть выше. Попробуйте изменить его, используя другую переменную, например j :

 def test(runs):
    runs = runs
    for i in range(0,runs):
        #some initialized parameter
        #initialize v[:,0]=v_0 
        for j in range(range(0, int(timeSteps)-1, 1)):
            #calculate v here using Runge Kutta method 
        v = v_0   v
        
        #check if a certain threshold has been reached
        if max(v[:]-v_0) > 50:
            print("breach")
test(10)