1

10 分の 1 秒 (t) を受け取り、処理された文字列 (デジタル時計のようなもの) を返す関数を作成しています。

それを行うためのより良い/より簡単な/最適な方法はありますか?

出力形式: A:BC.D (分: 秒. 10 分の 1)

def format(t):
    A = 0
    B = 0
    C = 0
    D = t

    if t >= 10:
        C = t // 10
        D = t % 10

        if C >= 10:
            B = C // 10
            C = C % 10

            if B >= 6:
                A = B // 6
                B = B % 6

    return str(A) + ":" + str(B) + str(C) + "." + str(D)
4

2 に答える 2

3

これらifsはすべて完全に不要であり、他のいくつかのことは単純化できます。

def fmt(t):
    tenths = t % 10
    t //= 10
    sec = t % 60
    t //= 60
    min = t
    return '%d:%02d.%d' % (min, sec, tenths)

print(fmt(1234))
于 2012-12-10T18:23:38.777 に答える
1
def format(t):
    seconds, fractions = divmod(t, 10)
    minutes, seconds = divmod(seconds, 60)
    return "%d:%02d.%d" % (minutes, seconds, fractions)

出力例:

>>> format(10)
'0:01.0'
>>> format(100)
'0:10.0'
>>> format(1000)
'1:40.0'
于 2012-12-10T18:24:07.153 に答える