2017-07-19 57 views
0

我能夠在excel中使用這個工作,但是我似乎無法找到Python 3.X的解決方案。我如何計算每小時處理的數量?每小時處理的Python數量

我需要創建一個公式來確定1小時內生產的單位數量。公式unitsPerHour = totalProcessed/(totalTime*24)適用於Excel,但不適用於Python。看起來好像totalTime*24總是產生0。例如:耗時4小時26分3秒(04:26:03),完成73個單位。每小時完成多少個單位?

# "%d:%d:%d" % (diff.hours, diff.minutes, diff.seconds) = 04:26:03 
totalTime = "%d:%d:%d" % (diff.hours, diff.minutes, diff.seconds) 
totalProcessed = 73 
denomCheck = totalTime*24 
if denomCheck != 0: 
    unitsPerHour = totalProcessed/(totalTime*24) 

當然,只要分母等於零,就會引發錯誤。這是denomCheck變量的用途。我確實有totalTime等於零的情況,所以我必須檢查它。

+1

你正在乘以一個字符串和一個數字('「4:26:3」* 24')。在Python中,重複字符串。然後你用這個長串分割一個數字。這應該會產生一個錯誤,說你不能用'str'(字符串)來分割'int'(數字)。 – smarx

回答

0

很簡單,你永遠不會將你的diff變量從三元值轉換成數值小時數。而是將其格式化爲可讀的字符串。將字符串乘以24,可以將24個副本連接成一個字符串...您在應該已經在發佈前用簡單的print聲明進行了驗證。例如:

# "%d:%d:%d" % (diff.hours, diff.minutes, diff.seconds) = 04:26:03 
totalTime = "%d:%d:%d" % (4, 26, 3) 
totalProcessed = 73 
denomCheck = totalTime*24 
print "totalTime", totalTime 
print "denomCheck", denomCheck 
if denomCheck != 0: 
    unitsPerHour = totalProcessed/(totalTime*24) 

輸出:

totalTime 4:26:3 
denomCheck 4:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:34:26:3 
Traceback (most recent call last): 
    File "so.py", line 8, in <module> 
    unitsPerHour = totalProcessed/(totalTime*24) 
TypeError: unsupported operand type(s) for /: 'int' and 'str' 

解決方法:如果你想學習操作,使這些東西一個數據類型

total_time = diff.hours + diff.minutes/60.0 + diff.seconds/3600.0 

你算算更容易,請嘗試Python的datetime包。

0

給出一個字符串像'04:26:03' ,你可以做以下的時速來計算單位:

time_string = '04:26:03' 

# extract hours, minutes, and seconds 
hours, minutes, seconds = [int(item.lstrip('0')) for item in time_string.split(':')] 

# calculate total time, assuming Python 3 
total_time_in_hours = hours + minutes/60 + seconds/3600 

# units per hour 
units_per_hour = totalProcessed/total_time_in_hours 

如果值可作爲整數, 簡單地做:

total_time_in_hours = diff.hours + diff.minutes/60 + diff.seconds/3600 
units_per_hour = totalProcessed/total_time_in_hours