2017-07-19 87 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