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) 函数时,不会出现 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()

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()方法使用格式字符串语法,该语法引用传入的第一个参数 ( 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 回答
1

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

更改printTime为:

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

或者,更有效地:

return "%s:%s:%s" % (time.hours, time.minutes, time.seconds)
于 2013-07-03T07:47:15.663 回答