0

我正在尝试在 python 中创建一个旅行计划器,但是在我定义了所有函数之后,我无法在最后一个函数中调用和计算它们tripCost()

在tripCost 中,我想输入日期和旅行目的地(城市),程序运行这些函数并为我提供先前定义的所有3 个函数的确切结果。

代码:

def hotelCost(): 
    days = raw_input ("How many nights will you stay at the hotel?")
    total = 140 * int(days) print "The total cost is",total,"dollars"


def planeRideCost(): 
    city = raw_input ("Wich city will you travel to\n")
    if city == 'Charlotte':
        return "The cost is 183$"
    elif city == 'Tampa':
        return "The cost is 220$"
    elif city == 'Pittsburgh':
        return "The cost is 222$"
    elif city == 'Los Angeles':
        return "The cost is 475$"
    else:
        return "That's not a valid destination"

def rentalCarCost(): 
    rental_days = raw_input ("How many days will you rent the car\n")   
    discount_3 = 40 * int(rental_days) * 0.2 
    discount_7 = 40 * int(rental_days) * 0.5 
    total_rent3 = 40 * int(rental_days) - discount_3
    total_rent7 = 40 * int(rental_days) - discount_7
    cost_day = 40 * int(rental_days) 

    if int(rental_days) >= 3: 
        print "The total cost is", total_rent3, "dollars"
    elif int(rental_days) >= 7: 
        print "The total cost is", total_rent7, "dollars"
    else: 
        print "The total cost is", cost_day, "dollars"

def tripCost():
    travel_city = raw_input ("What's our destination\n")
    days_travel = raw_input ("\nHow many days will you stay\n")
    total_trip_cost = hotelCost(int(day_travel)) + planeRideCost (str(travel_city)) + rentalCost (int(days_travel))
    return "The total cost with the trip is", total_trip_cost

tripCost()
4

2 回答 2

0
  1. def rentalCarCost():什么都没回来..
  2. rentalCost (int(days_travel))我看不到这样的功能。

更新:

def hotelCost(): 
    days = raw_input ("How many nights will you stay at the hotel?")
    total = 140 * int(days) print "The total cost is",total,"dollars"
    return total


def planeRideCost(): 
    city = raw_input ("Wich city will you travel to\n")
    if city == 'Charlotte':
        return 183
    elif city == 'Tampa':
        return 220
    elif city == 'Pittsburgh':
        return 222
    elif city == 'Los Angeles':
        return 475
    else:
        print "That's not a valid destination"

def rentalCarCost(): 
    rental_days = raw_input ("How many days will you rent the car\n")   
    discount_3 = 40 * int(rental_days) * 0.2 
    discount_7 = 40 * int(rental_days) * 0.5 
    total_rent3 = 40 * int(rental_days) - discount_3
    total_rent7 = 40 * int(rental_days) - discount_7
    cost_day = 40 * int(rental_days) 

    if int(rental_days) >= 3: 
        print "The total cost is", total_rent3, "dollars"
        return total_rent3
    elif int(rental_days) >= 7: 
        print "The total cost is", total_rent7, "dollars"
        return total_rent7
    else: 
        print "The total cost is", cost_day, "dollars"
        return cost_day

def tripCost():
    travel_city = raw_input ("What's our destination\n")
    days_travel = raw_input ("\nHow many days will you stay\n")
    total_trip_cost = hotelCost(int(day_travel)) + planeRideCost () + rentalCarCost(int(days_travel))
    return "The total cost with the trip is", total_trip_cost

tripCost()
于 2012-09-04T14:29:34.837 回答
0

我建议您将用户交互与计算分开。我做了一些更改,并将其粘贴为示例,我并不是说这段代码对您的问题做了正确的事情,只是为了说明这种分离。您还可以将 cost_table 用作字典:

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

def hotel_cost(nights): 
    cost = 140 * int(nights)
    return cost

def plane_ride_cost(city):
    return cost_table[city]

def rental_car_cost(days): 
    discount_3 = 40 * days * 0.2 
    discount_7 = 40 * days * 0.5 
    total_rent3 = 40 * days - discount_3
    total_rent7 = 40 * days - discount_7
    cost_day = 40 * days 

    if days >= 3:
        return total_rent3
    elif days >= 7:
        return total_rent7
    else: 
        return cost_day

def trip_cost(city, nights, car_days):
    total = hotel_cost(nights) + plane_ride_cost(city) +\
            rental_car_cost(car_days)
    return total

city = None
while True:
    city = raw_input ("What's our destination?\n")
    if city not in cost_table:
        print "That's not a valid destination."
    else:
        break

hotel_nights = raw_input ("\nHow many nights will you stay?\n")
car_days = raw_input ("How many days will you rent the car?\n")   

total_trip_cost = hotel_cost(int(hotel_nights)) +\
                  plane_ride_cost(city) +\
                  rental_car_cost(int(car_days))

print "The total cost with the trip is", total_trip_cost, "dollars."
于 2018-12-22T13:04:07.920 回答