在Python中将函数名称添加到字符串中

时间:2017-06-08 01:19:16

标签: python python-2.7 function

我刚开始自学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):(预热)"。有没有办法做到这一点?

注意:虽然这在技术上可能是重复的,但我已经检查过类似的问题,但我认为问题和提供的答案都是在非特定方面,因此无论如何都决定提出我的问题。

2 个答案:

答案 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

答案 1 :(得分: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)

现在你可以在函数调用中使用字符串参数调用函数,并且它会根据不同的需求推广函数。

最好以更易读的格式(如元组)在函数之间移动时间。您可以制作更多功能,例如: - 输入测试有效时间 - 将元组转换为秒进行计算 - 将秒转换回元组格式 等。

如果我误解了你,请告诉我。