2017-02-22 108 views
0

我想使用公式的結果來計算下一個結果,然後在下一個結果等等,所以第四。如何使用結果計算下一個結果,然後計算下一個結果?

def waiting(element, start_waiting_time=0, service_time=1.2, interarrival=1, default=0): 
    if element == 1: 
     return max((start_waiting_time + service_time - interarrival, 0)) 
    elif element == 0: 
     return default 

def waiting_time(elements, start_time=0): 
    next_patient_waits = start_time 
    for i in elements: 
     next_patient_waits += waiting(i) 
     print("{:.1f}".format(next_patient_waits)) 

elements = [1, 1, 1] 
waiting_time(elements) 

此代碼返回輸出:

# 0.2, 0.4, 0.6 

我期待它返回的輸出:

#0, 0.2, 0.4 

我想第一waiting_time設置爲0,因爲start_waiting_time爲零。我是希望電腦會計算:

#For 1st item in elements: waiting_time = 0 
#For 2nd item in elements: waiting_time = (waiting time 1st element) + service_time - interarrival = 0 + 1.2 -1 = 0.2 
#For 3rd item in elements: waiting_time = (waiting time 2nd element) + service_time - interarrival = 0.2 + 1.2 -1 = 0.4 
+0

嚴格地說'waiting_time'不是一個(數學)公式。不是一個大問題,但是對於你的算法來說,一個結構化的方法可能會從把它改成一個真正的公式(它有一個'return')中獲益。你的'等待'就是我的意思,因爲它有一個'return'。 – Elmex80s

回答

2

您應該簡單地增加它之前打印next_patient_waits

def waiting_time(elements, start_time=0): 
    next_patient_waits = start_time 
    for i in elements: 
     print("{:.1f}".format(next_patient_waits)) 
     next_patient_waits += waiting(i)