2012-02-15 2 views
2

Я изо всех сил пытаются выяснить, как добавить математику в эту функцию:функция Python, которая вычисляет стоимость членства

Вопрос: Напишите программу, которая определяет первую функцию с подписью calculateFathersDayPrice (цена, IsMember). Функция должна возвращать 95% цены, если пользователь не является членом и 85% от цены, если пользователь является членом (то есть, как указано isMember). Затем ваша программа должна запрашивать цену и независимо от того, является ли пользователь членом (вы можете предположить, что пользователь вводит «да» или «нет»), вызовите функцию calculateFathersDayPrice(), а затем распечатайте цену, возвращаемую функцией.

Мой код до сих пор:

def calculateFathersDayPrice(price, isMember): 
"""Prints price*0.85/100 if isMember is True, prints price*0.95/100 if isMember is 
false 
""" 
if isMember: 
    print price * 0.85/100 
else: 
    print price * 0.95/100 

price = raw_input ("Please Enter Price of Item: ") 
isMember = raw_input ("Are you a member?: ") 
print 'price:', price, 'Member Status:', isMember 
print calculateFathersDayPrice(price, isMember) 
+0

Поскольку у меня нет прав на редактирование, посмотрите, как форматировать код в сообщении StackOverflow –

+0

«... затем распечатайте цену, возвращаемую функцией». Вы ничего не возвращаете из функции. – monkut

+0

@Corey любой может * предложить * редактировать. Хорошие рекомендуемые изменения, как правило, быстро принимаются. – AakashM

ответ

1

Я стараюсь не поощрять побочные эффекты в функциях, поэтому вы можете использовать «возврат», а не «печать».

def calculateFathersDayPrice(price, isMember): 
    if isMember: 
     return price * 0.85 
    return price * 0.95 

price = float(raw_input("Please Enter Price of Item: ")) 
isMember = raw_input("Are you a member?: ").lower() in ['true', '1', 't', 'y', 'yes'] 

print 'Member Status: %s' % isMember 
print 'Price: %.2f' % calculateFathersDayPrice(price, isMember) 

Это будет проверить, если ответ будет один из поставляемых истинных значений, а затем вычисляет цену, основываясь на состоянии IsMember. Наконец, используя форматирование строк, вы получаете результат с правильным количеством десятичных знаков.

+0

Спасибо, что так невероятно! Это именно то, что я искал. Я боролся с форматированием строк. – user1210588

1

Я не совсем понимаю, что вы просите.

Кроме того, вы не должны делиться на 100 снова. Это должно быть: print price * 0.85 и print price * 0.95 соответственно.

0

Если предположить, что пользователь вводит yes или no спрашивают, если он/она является членом, то вы должны оценить его/ее ответ на True или False. Ваша программа теперь печатает price*0.85/100 в любом случае. И да, нет необходимости в делении на 100.

1

Пара вопросов, чтобы указать здесь, и большинство из них уже отмечены другими ответами, но отсутствуют важные, поэтому я оберну их все в один ответ. Во-первых, функция ...

def calculateFathersDayPrice(price, isMember): 
    if isMember: 
     print price * 0.85/100 
    else: 
     print price * 0.95/100 
  1. Как отметил Aayush, вы не должны быть деления на 100. Возможно, вы думали price * 85/100? Несмотря на это, самый простой подход просто умножается на 0,85 и 0,95.
  2. Вместо того, чтобы печатать значение в функции, вас попросили вернуть значение. Хорошая конструкция отделяет логику «представления» от «бизнес-логики», и в этом случае бизнес-логика - это расчет. Ваша функция выполняет расчет и передает результаты обратно в основную часть вашей программы, которая обрабатывает фактический дисплей. Чтобы вернуть значение, это просто return some_value.

Это измененная версия вашей функции с этими двумя изменениями.

def calculateFathersDayPrice(price, isMember): 
    if isMember: 
     return price * 0.85 
    else: 
     return price * 0.95 

Наконец, как отметил Андрей, вам необходимо обработать пользовательский ввод и сделать с ним что-то полезное. Вам нужно решить, какие значения принимать от пользователя и что вы собираетесь делать, если они вводят что-то фиктивное. После вашей строки isMember = raw_input ("Are you a member?: ") вам нужно добавить небольшой код, чтобы включить ввод пользователя в значение True/False в Python. Кроме того, что вы будете делать, если они ответят, что «сыр Фета противен!» как ответ на ваш вопрос? Это правда или ложь, или вы спрашиваете их снова для более разумного ввода?

Смежные вопросы