2012-02-15 47 views
2

我竭力试图找出如何将数学加入到这一功能:Python函数计算会员价

问题:编写一个程序,它首先定义了签名calculateFathersDayPrice(价格,isMember)的功能。如果用户不是会员,则功能应该返回95%的价格,如果用户是会员(即isMember表示),则返回85%的价格。然后你的程序应该提示价格以及用户是否是会员(你可以假设用户输入“yes”或“no”),调用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后 – 2012-02-15 06:16:53

+0

“...然后打印由函数返回的价格。”你不从函数返回任何东西。 – monkut 2012-02-15 06:29:49

+0

@Corey任何人都可以*建议*编辑。良好的建议编辑通常很快获得批准。 – AakashM 2012-02-15 09:23:34

回答

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 2012-02-15 06:36:36

1

我不太明白你的要求。

另外,你不应该再被100除。它应该是: print price * 0.85print price * 0.95

0

如果假设用户输入yesno被要求,如果他/她是一个成员,那么你应该评估他/她的回答TrueFalse。无论如何你的程序现在打印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 

最后,正如Andrey所指出的,您需要处理用户输入并做一些有用的操作。你需要决定从用户接受什么样的价值观,以及如果他们输入了一些虚假的东西,你会怎么做。在你的行isMember = raw_input ("Are you a member?: ")之后,你需要添加一些代码来将用户的输入变成Python中的True/False值。另外,如果他们回答“羊奶酪很难吃!”,你会怎么做?作为对你的问题的回应?这是真是假,还是你再问他们更合理的投入?