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
式result.append(max(start_waiting_time + service_time - (count_zero + 1) * interarrival), 0)
からmax
を削除すると結果が得られますが、これらの結果は私が望んでいないものです。タイプエラーを修正する方法: 'float'オブジェクトはプログラム内で反復可能ではありませんか?
これはmax
は式から削除されたコードである。これらの結果は、結果は私が方程式に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]
、私は結果が否定的になった場合に0を計算するようプログラムに指示しようとしていました。そこで、私が期待される結果となった。
#[1.536003224186501, 1.536003224186501, 1.536003224186501, 0.5360032241865009, 0]
差が、結果の最後の出力は0ではなく-0.4639967758134991であるということです。あなたはタプルを渡しますのであれば
start_waiting_time + service_time - (count_zero + 1) * interarrival
:のpython3のドキュメントから
括弧を修正する必要があります。あなたのコードは 'list.append(max(...、0))の代わりに' list.append(max(...)、0) 'です。 –
はい、これは正しい、それは働いた。 –