【问题标题】:Python Number Processed Per Hour每小时处理的 Python 数量
【发布时间】:2017-07-20 06:46:48
【问题描述】:

我能够在 excel 中使用它,但是我似乎找不到 Python 3.X 的解决方案。如何计算每小时处理的数量?

我需要创建一个公式来确定 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)

当然,只要分母等于 0,就会抛出错误。这是 denomCheck 变量的目的。我确实有 totalTime 等于 0 的情况,所以我必须检查一下。

【问题讨论】:

  • 您将一个字符串和一个数字相乘 ("4:26:3" * 24)。在 Python 中,它会重复字符串。然后你将一个数字除以那个长字符串。这应该会产生一个错误,指出您不能将 int(数字)除以 str(字符串)。

标签: python python-3.x


【解决方案1】:

非常简单,您从未将您的 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 包。

【讨论】:

    【解决方案2】:

    给定一个像 '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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2021-12-17
      • 2019-12-11
      • 2020-05-25
      • 2019-07-25
      相关资源
      最近更新 更多