私はこの関数を書きました。うまくいくと思いますが、100%確実ではありません。しかし、これは非常に複雑です。これを簡単にする方法はありますか?
3 つのパラメーターは「HH:MM」の形式の時間で、00 <= HH <= 23 および 00 <= MM <= 59 です。最初の 2 つの時間は推定時間で、3 番目は実際の時間です。実際の時間に最も近い、最初の 2 つのパラメーターの 1 つである時間の見積もりを返します。それらが等しく近い場合は、最初に戻ります。
(str, str, str) -> str
def closest_time(guess1, guess2, answer):
if abs((int(answer[:2])) - (int(guess1[:2])) > ((int(answer[:2])) - int(guess2[:2]))):
return guess2
if abs((int(answer[:2])) - (int(guess1[:2])) < ((int(answer[:2])) - int(guess2[:2]))):
return guess1
if abs((int(answer[:2])) - (int(guess1[:2])) == ((int(answer[:2])) - int(guess2[:2]))):
if abs((int(answer[3:])) - (int(guess1[3:])) > ((int(answer[3:])) - int(guess2[3:]))):
return guess2
if abs((int(answer[3:])) - (int(guess1[3:])) < ((int(answer[3:])) - int(guess2[3:]))):
return guess1
if abs((int(answer[3:])) - (int(guess1[3:])) == ((int(answer[3:])) - int(guess2[3:]))):
return guess1