Праздничное приложение на Python 2.7 - PullRequest
0 голосов
/ 23 мая 2018

Я пытался решить эти задачи для домашней работы, но застрял:

Вам нужно будет создать четыре функции:

  1. Стоимость отеля - эта функция будет принимать числоночей в качестве аргумента и возвращает общую стоимость (Вы можете выбрать цену за ночь)
  2. Стоимость самолета - эта функция будет принимать город, в который вы летите, в качестве аргумента и возвращать стоимость полета (Подсказка: используйте операторы if / else if для получения цены, основанной на выбранном городе)
  3. Прокат автомобилей - эта функция будет принимать количество дней в качестве аргумента и возвращать общую стоимость.
  4. Стоимость отпуска - эта функция будет принимать три аргумента, количество ночей, город и дни.

Используя эти три аргумента, вы можете вызвать все три из вышеуказанных функций с соответствующими аргументами и, наконец,вернуть итоговую стоимость вашего отпуска.

Распечатайте значение вашей функции Отпуск, чтобы увидеть результат!

Попробуйте использовать свое приложение с другимиt комбинаций, чтобы показать его совместимость с различными вариантами

Это то, что я до сих пор имею:

def hotel_cost(nights):
    return nights * 875

def plane_cost(city):
    ticket = 0
    while city != 4:
        if city == '1':
            ticket = 750
            break

        elif city == '2':
            ticket = 850
            break

        elif city == '3':
            ticket = 600
            break

        elif city == '4':
            print 'You have selected an invalid option'
        else:
            print 'You have selected an invalid option'

def car_rental(days):
    return days * 275

def holiday_cost(nights, city, days):
    nights = hotel_cost(nights)
    city = plane_cost(city)
    days = car_rental(days)
    return nights + city + days

hotel_cost(int(raw_input('How many nights will you be staying? ')))
plane_cost(raw_input('\n1. O.R. Tambo International\n2. Capetown International\n3. King Shaka International\nWhere you flying to? '))
car_rental(int(raw_input('How many days will you need a car for?: ')))
total = holiday_cost(nights, city, days)
print total

Я получаю следующую ошибку:

Traceback (most recent call last): File "C:\Users\user\Dropbox\Mengezi Dlomo-9897\intro to programming\Task 24\holiday.py", line 37, in <module> total = holiday_cost(nights, city, days) NameError: name 'nights' is not defined

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вы писали:

total = holiday_cost(nights, city, days)

но nights, city, days не определены.Вы использовали эти имена для определения входных параметров, но они не определяют эти переменные вне функций, в которых они используются.

Другими словами

def someFunction(inputP):
    #here inputP is defined
    ...
#her inputP is not defined

Чтобы вернуться к вашему вопросу, вы должны назначитьвозвращаемое значение для этих переменных:

nights = hotel_cost(int(raw_input('How many nights will you be staying? ')))
city = plane_cost(raw_input('\n1. O.R. Tambo International\n2. Capetown  International\n3. King Shaka International\nWhere you flying to? '))
days = car_rental(int(raw_input('How many days will you need a car for?: ')))

Поскольку в Python легко потеряться, я предлагаю использовать разные имена для переменных в разных областях: не используйте nights, например, в hotel_cost, затем дваждыв holiday_cost, а затем в другой раз в глобальном масштабе.

Приветствия!

0 голосов
/ 23 мая 2018

Вы должны сохранить запрошенные значения в переменных:

nights=hotel_cost(int(raw_input('How many nights will you be staying? ')))
city=plane_cost(raw_input('\n1. O.R. Tambo International\n2. Capetown 
    International\n3. King Shaka International\nWhere you flying to? '))
days=car_rental(int(raw_input('How many days will you need a car for?: ')))
total = holiday_cost(nights, city, days)

С уважением!

0 голосов
/ 23 мая 2018

Вы уже вызываете 3 другие функции внутри holiday_cost.Вам не нужно вызывать их несколько раз.

Также я сделал несколько других полезных изменений, таких как while city > 3: вместо while city != 4: в plane_cost (), и я добавил строку return ticket в концеof plane_cost ()

Также строка: elif city == '4': print 'Вы выбрали неверную опцию', в которой нет необходимости, поскольку city == '4' попадает в условие else.

Вот окончательный код:

def hotel_cost(nights):
    return nights * 875

def plane_cost(city):
    ticket = 0
    while city > 3:
        if city == '1':
            ticket = 750
            break

        elif city == '2':
            ticket = 850
            break

        elif city == '3':
            ticket = 600
            break

        else:
            print 'You have selected an invalid option'

    return ticket

def car_rental(days):
    return days * 275

def holiday_cost(nights, city, days):
    nights = hotel_cost(nights)
    city = plane_cost(city)
    days = car_rental(days)
    return nights + city + days

nights = int(raw_input('How many nights will you be staying? '))
city = raw_input('\n1. O.R. Tambo International\n2. Capetown International\n3. King Shaka International\nWhere you flying to? ')
days = int(raw_input('How many days will you need a car for?: '))
total = holiday_cost(nights, city, days)
print total
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...