如何修复程序中的“类型错误:”float“object is not iterable”?

2024-09-25 00:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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)中去掉,我就得到了结果,但这些结果并不是我所希望的。在

这是从等式中删除max时的代码:

^{pr2}$

{我想告诉我的是,如果结果是负的,那么这个结果永远不会是负的。因此,我预期的结果是:

^{3}$

不同的是,结果中的最后一个输出是0,而不是-0.4639967758134991。在


Tags: timedefcountservicerandomresultstartmax
1条回答
网友
1楼 · 发布于 2024-09-25 00:34:41

来自python3文档:

Help on built-in function max in module builtins:

max(...) max(iterable[, key=func]) -> value max(a, b, c, ...[, key=func]) -> value

With a single iterable argument, return its largest item.
With two or more arguments, return the largest argument. (END)

在代码中,您在单个浮点值上使用了max,这是一个表达式的结果:

start_waiting_time + service_time - (count_zero + 1) * interarrival

因此,如果将tuple与表达式和0一起传递给max函数,如下所示:

^{pr2}$

它应该像你所期望的那样工作。在

相关问题 更多 >