2017-07-19 5 views
0

これはExcelで動作するようになりましたが、Python 3.Xの解決策が見つからないようです。 1時間あたりの処理数はどのように計算されますか?1時間に処理されるPythonの数

1時間で生産される単位の数を決定する式を作成する必要があります。式unitsPerHour = totalProcessed/(totalTime*24)はExcelで動作しますが、Pythonでは動作しません。 totalTime*24は常に0を生成しているようです。

例:4時間26分3秒(04:26:03)を費やして73ユニットを完了しました。 1時間に何台のユニットが完成しましたか?

# "%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では、この文字列が繰り返されます。次に、その長い文字列で数値を分割しています。これは 'int'(数値)を' str'(文字列)で除算できないというエラーを生成します。 – smarx

答えて

0

非常に単純に、値の倍数からdiff変数を数値時間に変換したことはありません。代わりに、人間が読める文字列として書式設定しました。文字列に24を掛けると、24個の文字列が1つの文字列に連結されます。の場合は単純な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' 

SOLUTION:あなたはこれらの事を行い、データ型を操作するために学びたいのであれば

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 
関連する問題