用于计算会员价格的Python函数

时间:2012-02-15 06:05:38

标签: python function math

我正在努力寻找如何将数学添加到此函数中:

问题:编写一个程序,首先使用签名calculateFathersDayPrice(price,isMember)定义一个函数。如果用户不是会员,则该函数应返回95%的价格,如果用户是会员,则该函数应返回85%的价格(即,如isMember所示)。然后,您的程序应该提示价格以及用户是否是成员(您可以假设用户输入“是”或“否”),调用calculateFathersDayPrice(),然后打印该函数返回的价格。 / p>

到目前为止我的代码:

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)

4 个答案:

答案 0 :(得分:1)

我不太明白你在问什么。

此外,你不应该再分为100。它应该是: <{1}}和print price * 0.85

答案 1 :(得分:1)

我倾向于鼓励函数没有副作用,所以你可以使用'return'而不​​是'print'。

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状态计算价格。最后,使用字符串格式化,您将获得具有适当小数位数的结果。

答案 2 :(得分: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
  3. 以下是这两项更改的功能的更改版本。

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

    最后,正如Andrey所说,您需要处理用户输入并使用它做一些有用的事情。您需要决定用户接受哪种值,以及如果他们输入虚假内容,您将要做什么。在行isMember = raw_input ("Are you a member?: ")之后,您需要添加一些代码以将用户的输入转换为Python中的True / False值。另外,如果他们回答“奶酪是令人讨厌的!”,你会怎么做?作为回答你的问题?这是对还是错,或者你再次问他们更合理的投入?

答案 3 :(得分:0)

如果您认为用户输入yesno被问及他/她是否是会员,那么您应该评估他/她对True或{{1}的回答}。您的程序现在可以打印False。是的,没有必要除以100。