1

このコードでは、必要な表示が得られません。

def printTime(time):
    print time.hours,":",time.minutes,":",time.seconds,

def makeTime(seconds):
    time = Time()
    print "have started converting seconds into hours and minutes"
    time.hours = seconds/3600
    print "converted into hours and no.of hours is :",time.hours
    seconds = seconds - time.hours *3600
    print "number of seconds left now:",seconds
    time.minutes = seconds/60
    print "number of minutes now is :",time.minutes
    seconds = seconds - time.minutes*60
    print "number of seconds left now is :",seconds
    time.seconds = seconds
    print "total time now is:",printTime(time)

最後の行は、次の問題を引き起こしています。

print "total time now is:",printTime(time)

結果を以下の形式にしたい-現在の合計時間: 12:42:25

しかし、私が得るのは今の合計時間です:12:42:25 なし

しかし、その行を次のように書くと:

print "total time now is:"
printTime(time)

次に、結果を取得します-現在の合計時間は12:42:25です

printTime(time)関数をprintと同じ行に書かないとNoneが表示されません。

では、ここで実際に何が起こっているのでしょうか。

編集: return ステートメントを使用してみましたが、結果は同じでした。そのため、正確に return ステートメントをどこで使用する必要がありますか。多分私はそれを間違って使用していました。私はそれをやってみました

print "total time now is:",return printTime(time)

しかし、これはエラーになります。

それから私はこのようにしてみました -

print "total time now is:",printTime(time)
return printTime(time)

それでも同じ結果が得られます。

4

2 に答える 2

4

関数の戻り値を出力していprintTime()ます。

returnPython のすべての関数には戻り値があり、ステートメントを使用しない場合、その値はデフォルトで になりNoneます。

関数で出力する代わりに、そのprintTime()関数の名前を に変更しformatTime()、書式設定された文字列を返すようにします。

def formatTime(time):
    return '{0.hours}:{0.minutes}:{0.seconds}'.format(time)

次に使用します

print "total time now is:",formatTime(time)

上記のstr.format()メソッドは、渡された最初のパラメーターを参照するフォーマット文字列構文を使用し ( 0、python インデックスは 0 ベースです)、そのパラメーターから属性を補間します。最初のパラメーターはtimeインスタンスです。

それを拡張して、数字のゼロパディングなどのフォーマットを追加できます。

def formatTime(time):
    return '{0.hours:02d}:{0.minutes:02d}:{0.seconds:02d}'.format(time)
于 2013-07-03T07:46:14.443 に答える