这段代码不打印,因为我想要它 - python

时间:2013-07-03 07:44:40

标签: python function printing

使用此代码,我没有得到 我想要的那种显示器。

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(时间)函数与print打印在同一行。

那么,这里到底发生了什么?

编辑:我尝试使用return语句,但结果仍然相同。所以,我应该在哪里使用return语句。也许我是错误地使用它。 我试着这样做

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

但这会产生错误。

然后我尝试这样做 -

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

仍然得到相同的结果。

2 个答案:

答案 0 :(得分:4)

您正在打印printTime()功能的返回值

Python中的所有函数都有返回值,如果不使用return语句,则该值默认为None

不是在printTime()函数中打印,而是将该函数重命名为formatTime()并让它返回格式化字符串:

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

然后使用

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

上面的str.format() method使用format string syntax引用传入的第一个参数(0,python索引从0开始),并插入该参数的属性。第一个参数是您的time实例。

您可以对其进行扩展并添加更多格式,例如对数字进行零填充:

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

答案 1 :(得分:1)

printTime正在返回打印函数调用,然后您尝试打印。

printTime更改为:

return time.hours + ":" + time.minutes + ":" + time.seconds

或者,更有效率:

return "%s:%s:%s" % (time.hours, time.minutes, time.seconds)