def formula(listA, count_zero=0, start_waiting_time = 0, result=[], service_time=random.expovariate(1.2), interarrival=1):
for i in listA:
if i == 1:
result.append(max(start_waiting_time + service_time - (count_zero + 1) * interarrival), 0)
count_zero = 0
elif i == 0:
count_zero += 1
return result
# Test case
print(formula([1, 1, 1, 0, 1, 0, 0, 1]))
#This returns result: TypeError 'float' object is not iterable
Как только я удаляю max
из уравнения result.append(max(start_waiting_time + service_time - (count_zero + 1) * interarrival), 0)
, тогда я получаю результаты, но эти результаты не то, на что я надеялся.Как исправить ошибку типа: объект «float» не является итерируемым »в моей программе?
Это код, когда max
удаляется из уравнения:
def formula(listA, count_zero=0, start_waiting_time = 0, result=[], service_time=random.expovariate(1.2), interarrival=1):
for i in listA:
if i == 1:
result.append(start_waiting_time + service_time - (count_zero + 1) * interarrival)
count_zero = 0
elif i == 0:
count_zero += 1
return result
#[1.536003224186501, 1.536003224186501, 1.536003224186501, 0.5360032241865009, -0.4639967758134991]
Эти результаты являются правильными за исключением того, что результат никогда не должен быть отрицательным, который был причиной для меня добавления max
к уравнению, Я пытался сказать программе, чтобы вычислить 0, если результат становится отрицательным. Таким образом, результат я ожидал был:
#[1.536003224186501, 1.536003224186501, 1.536003224186501, 0.5360032241865009, 0]
Разница заключается в том, что последний выход в результате является 0, а не -0,4639967758134991.
Вам необходимо исправить ваши круглые скобки. Ваш код - 'list.append (max (...), 0)' вместо 'list.append (max (..., 0))'. –
Да, это правильно, это сработало. –