2017-06-08 8 views
0

私は自分でPythonを学び始めています。ジョグの終了時間を計算するコードを書こうとしています。Pythonの文字列に関数名を追加する

次のように私のコードは、これまでになります。

このコードで
def elapsed(t): 
    t = raw_input('Enter time (hh:mm:ss): ') 
    th, tm, ts = t.split(':') 
    return int(ts) + int(tm) * 60 + int(th) * 3600 

def mile(m): 
    m = raw_input('How many miles? ') 
    return int(m) 

start = elapsed('start') 
warmup = elapsed('warmup') 
wmile = mile('wmile') 
tempo = elapsed('tempo') 
tmile = mile('tmile') 
cooloff = elapsed('cooloff') 
cmile = mile('cmile') 

hour = (start + warmup * wmile + tempo * tmile + cooloff * cmile) // 3600 
minute = (start + warmup * wmile + tempo * tmile + cooloff * cmile - hour * 3600) // 60 
second = (start + warmup * wmile + tempo * tmile + cooloff * cmile - hour * 3600) % 60 

print('Your run ended at %02d:%02d:%02d' % (hour, minute, second)) 

、時間のプロンプトはすべて同じである:「時間を入力します(hh:mm:ss):」私はを参照する各プロンプトたいです(例えば、「開始時間を入力してください(hh:mm:ss)」または「入力時間(hh:mm:ss):(ウォームアップ)」など)。これを行う方法はありますか?

注:これは技術的に重複している可能性がありますが、私は同様の質問を検討しましたが、提供された質問と回答はどちらも非特異的なものであると判断したため、

+1

プロンプトに表示することを意味しますか? – zwer

+0

[PythonはRubyの "string#{var}"のような類似の変数補間をしていますか?] (https://stackoverflow.com/questions/11788472/does-python-has-a-similar-variable-interpolation-like-string-var-in-ruby) –

+0

これは文字列補間と呼ばれます。あなたが入力関数を呼び出すことは本当に重要ではありません –

答えて

1

はい、関数elapsed(t)の入力を使用してください。
は、今のところ今、あなたは関数呼び出しの文字列引数で関数を呼び出すことができ、そしてそれは機能を一般化しますraw_input()

def elapsed(t): 
    t1 = raw_input('Enter time (hh:mm:ss): ({0})'.format(t)) 
    th, tm, ts = t1.split(':') 
    return int(ts) + int(tm) * 60 + int(th) * 3600 

または

def elapsed(t): 
    t1 = raw_input('Enter time (hh:mm:ss): (%s)' % t)) 
    th, tm, ts = t1.split(':') 
    return int(ts) + int(tm) * 60 + int(th) * 3600 
0
def enter_time(specify_string): 
    print("Please enter the", specify_string, 'time in format hh:mm:ss > ', end='') 
    hh, mm, ss = input().split(':') 
    return (hh, mm, ss) 

start_time = enter_time('start') 
finish_time = enter_time('finish') 


>>>Please enter the start time in format hh:mm:ss >13:32:34 
>>>Please enter the finish time in format hh:mm:ss >12:21:21 
>>>start_time 
(13, 32, 34) 

からの戻りで上書きされています異なる要件のために。

タプルなどの読みやすい形式で関数間の時間を移動する方がよいです。 - 有効な時刻を入力してください。 - 計算のためにタプルを秒に変換します。 - 秒をタプルの形式に戻します。 ect。

私があなたに誤解しているかどうか教えてください。

関連する問題