#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)