困惑为什么我的函数只输出一个值

时间:2018-11-02 23:07:16

标签: python

正在处理一个具有4个值的函数,将其舍入为2,并显示它们的状态。

def show_status(altitude,speed,fuel,strength):

    '''  
    consumes altitude, speed, fuel, strength, prints lander's status  
    Parameters:  
        altitude (float)  
        speed (float)  
        fuel (int)  
        strength (int)  
    return:  
        statusalt (float)  
        statusspeed (float)  
        statusfuel (int)  
        statusstrength (int)  
    '''  
    statusalt=float(altitude)  
    statusspeed = float(speed)  
    statusfuel = int(fuel)  
    statusstrength = int(strength)  
    return statusalt  
    return statusspeed  
    return statusfuel  
    return statusstrength  
    print ("Alt = ",statusalt," Vel = ",statusspeed," Fuel = ",statusfuel," Str = ",statusstrength) 

show_status(12,34,56,78)

给予

12.0

我已经为此工作了几个小时。不知道我在做什么错。只是打印高度值。

3 个答案:

答案 0 :(得分:1)

这是因为在第一个return语句之后,该函数的其余部分将不会执行。如果要正确返回此值以在字符串中使用它,则应将其作为元组返回:

return (statusalt, statusspeed, statusfuel, statusstrength)

然后您可以编写:

print ("Alt = %d Vel = %d Fuel = %d Str = %d" %(show_status(12,34,56,78)))

答案 1 :(得分:0)

当函数到达返回命令时,它将返回值并退出该函数。 如果要返回一些值,则必须一行完成

return statusalt, statusspeed, statusfuel, statusstrength  

这将返回一个元组

答案 2 :(得分:0)

您应该使函数以元组的形式返回四种状态,并使调用者将元组解压缩为4个变量并打印出来:

def show_status(altitude,speed,fuel,strength):
    '''
    consumes altitude, speed, fuel, strength, prints lander's status
    Parameters:
        altitude (float)
        speed (float)
        fuel (int)
        strength (int)
    return:
        statusalt (float)
        statusspeed (float)
        statusfuel (int)
        statusstrength (int)
    '''
    statusalt=float(altitude)
    statusspeed = float(speed)
    statusfuel = int(fuel)
    statusstrength = int(strength)
    return statusalt, statusspeed, statusfuel, statusstrength
statusalt, statusspeed, statusfuel, statusstrength = show_status(12,34,56,78)
print ("Alt = ",statusalt," Vel = ",statusspeed," Fuel = ",statusfuel," Str = ",statusstrength)