从函数返回(不在教程代码上工作)

时间:2017-02-10 14:33:57

标签: python function return

继续阅读“如何像计算机科学家一样思考”一书。有一段代码不起作用 - 函数内部的变量不会出现(NameError:name' suma'未定义)。我认为问题可以在return语句中,另一方面,它似乎与手册一致。

它是:

class Time:
    pass

time1=Time()    
time1.hours=11
time1.minutes=58
time1.seconds=30

time2=Time()    
time2.hours=11
time2.minutes=59
time2.seconds=30

def TimePrint(p):
    print(          int(p.hours), ":" , int(p.minutes) , ":" , int(p.seconds)               )
print()

# add these two times. Taken from the book, doesnt work though
def addTime(t1, t2):
    suma = Time()
    suma.hours = t1.hours + t2.hours
    suma.minutes = t1.minutes + t2.minutes
    suma.seconds = t1.seconds + t2.seconds

    if suma.seconds >= 60:
        suma.seconds = suma.seconds - 60
        suma.minutes = suma.minutes + 1
    if suma.minutes >= 60:
        suma.minutes = suma.minutes - 60
        suma.hours = suma.hours + 1
    return suma

TimePrint(suma)
我可以请求帮忙吗?我100%肯定是缩进到位。

1 个答案:

答案 0 :(得分:0)

所以人们在评论中说的是正确的。我会解释一下。

sumaaddTime()的局部变量,无法在函数外部访问。

现在,您希望将Time类实例传递给TimePrint()函数返回的addTime()函数。正如评论中所提到的,TimePrint(addTime(time1, time2))可以解决问题。

进一步简化,

result = addTime(time1, time2)
TimePrint(result)