2017-01-31 12 views
1

(day,hour,minut,seconds)から2つの日付の秒に変換しようとしています。私がやったことは基本的にはうまくいくが、場合によっては間違った結果を返す。テストへ2つの日付間のモジュラーと時差

エントリデータ形式:それは時間の結果で常に間違った値を返します

13 
6 0 8 22 20 18 10 28 
2 5 32 20 7 1 21 51 
11 5 54 35 15 15 11 24 
6 2 3 49 16 10 49 9 
1 1 37 59 14 22 13 0 
3 15 15 10 28 18 37 21 
21 9 54 11 22 1 11 13 
12 3 37 24 20 12 42 50 
16 11 25 12 26 1 37 19 
7 4 59 31 12 8 54 23 
3 10 22 49 24 19 36 32 
1 1 21 2 29 10 51 13 
5 22 2 37 29 1 53 59 

は、(それが追加されます36)

コード:

count=lambda a,b,c,d:a+b+c+d 

def magic_date_to_numbers(a,b,c,d): 
    a*=60**3 
    b*=60**2 
    c*=60 
    return count(a,b,c,d) 

def reverse_magic(n): 
    a=n/(60**3) 
    b=(n%(60**3))/(60**2) 
    c=(((n%60**3)%60**2))/60 
    d=((n%(60**3))%(60**2))%60 

    print "(%s %s %s %s) "%(str(a),str(b),str(c),str(d)) 

for i in range(0,int(raw_input())): 
    d=map(long,raw_input().split(" ")) 
    n1=magic_date_to_numbers(d[0],d[1],d[2],d[3]) 
    n2=magic_date_to_numbers(d[4],d[5],d[6],d[7]) 
    reverse_magic(abs(n2-n1)) 

はありがとう:)

答えて

0

これらの種類の問題を処理するための組み込み関数とユーティリティは既にありますあなたが作っている間違いは非常にシンプルだと思う:1日で24時間あり、60ではない(60 - 24 = 36)。

from datetime import timedelta 

def magic_date_to_numbers(days, hours, minutes, seconds): 
    t = timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds) 
    return t.total_seconds() 
    # hours += days * 24 # 24 hours in a day 
    # minutes += hours * 60 # 60 minutes in an hour 
    # seconds += minutes * 60 # 60 seconds in a minute 
    # return seconds 

def reverse_magic(n): 
    t = timedelta(seconds=n) 
    n = t.seconds 
    seconds, minutes = n % 60, n // 60 
    minutes, hours = minutes % 60, minutes // 60 
    # hours, days = hours % 24, hours // 24  
    print "(%s %s %s %s) " % (t.days, hours, minutes, seconds) 

for i in range(0,int(raw_input())): 
    d=map(long,raw_input().split(" ")) 
    n1=magic_date_to_numbers(d[0],d[1],d[2],d[3]) 
    n2=magic_date_to_numbers(d[4],d[5],d[6],d[7]) 
    reverse_magic(abs(n2-n1)) 
+0

あなたの努力に感謝します:) –