2016-07-28 106 views
1

所以我真的很陌生(3天),我在代码学院,我为这些活动之一编写了代码,但是当我运行它时,它显示最大递归深度错误,我正在运行它在代码学院的python控制台中,同时在我自己的ipython控制台上。页面上的提示是没有用的,任何人都可以解释如何解决这个问题吗? 感谢最大递归深度错误?

def hotel_cost(nights): 
    return (nights * 140) 

def plane_ride_cost(city): 
    if plane_ride_cost("Charlotte"): 
     return (183) 
    if plane_ride_cost("Tampa"): 
     return (220) 
    if plane_ride_cost("Pittsburgh"): 
     return (222) 
    if plane_ride_cost("Loas Angeles"): 
     return (475) 

def rental_car_cost(days): 
    cost = days * 40 
    if days >= 7: 
     cost -= 50 
    elif days >= 3: 
     cost -= 20 
    return cost  

def trip_cost(city, days): 
    return hotel_cost(nights) + plane_ride_cost(city) + rental_car_cost(days) 
+0

*编辑*我知道的拼写错误的:') –

回答

1

可能:

def plane_ride_cost(city): 
    if city == "Charlotte": 
     return (183) 
    if city == "Tampa": 
     return (220) 
    if city == "Pittsburgh": 
     return (222) 
    if city == "Los Angeles": 
     return (475) 

错误是:

在每个递归步骤plane_ride_cost(city)称为plane_ride_cost("Charlotte")

不是最好的,但更好的方法:

def hotel_cost(nights): 
    return nights * 140 

plane_cost = { 
    'Charlotte' : 183, 
    'Tampa' : 220, 
    'Pittsburgh' : 222, 
    'Los Angeles' : 475, 
} 

def plane_ride_cost(city): 
    if city not in plane_cost: 
     raise Exception('City "%s" not registered.' % city) 
    else: 
     return plane_cost[city] 

def rental_car_cost(days): 
    cost = days * 40 
    if days >= 7: 
     cost -= 50 
    elif days >= 3: 
     cost -= 20 
    return cost  

def trip_cost(city, days): 
    return hotel_cost(nights) + plane_ride_cost(city) + rental_car_cost(days) 
+0

更好地使用'dict',如果'城市引发'Exception' '不要在字典中。 –