def hotel_cost(nights):
return nights * 140
bill = hotel_cost(5)
def add_monthly_interest(balance):
return balance * (1 + (0.15 / 12))
def make_payment(payment, balance):
new_balance2 = balance - payment
new_balance = add_monthly_interest(new_balance2)
print "You still owe: " + str(new_balance)
make_payment(100,bill)
为什么会返回
You still owe: 607.5
None
答案 0 :(得分:7)
它没有返回。它返回None
,因为如果你没有return语句,那就是任何函数返回的内容。
与此同时,它打印出“你还欠:607.5”,因为那是你的印刷声明中的内容。
(在这里,“它”,我假设你指的是函数调用make_payment(100, bill)
。)
我的猜测是你在IDE或其他交互式会话中运行,该会话打印出每个语句的返回值。所以,你的代码打印“你还欠:607.5”,然后你的交互式翻译打印“无”。
默认的python
互动式解释器(如ipython
和bpython
以及其他许多人)会吞下None
次,而不是将其打印出来。无论你使用哪一个,都可能不会这样做。
答案 1 :(得分:0)
在@ abarnert的帖子的评论中提到了这一点,但是我把它放在答案表中以便更加明显。
你想要的是你的函数返回字符串,然后解释器会向你吐出那个字符串:
def make_payment(payment, balance):
new_balance2 = balance - payment
new_balance = add_monthly_interest(new_balance2)
return "You still owe: " + str(new_balance) # <-- Note the return
# Now we change how we call this
print make_payment(100,bill)
# An alternative to the above
message = make_payment(100,bill)
print message
现在,命令行中唯一显示的内容就是消息。
注意强>
正如您之前编写的代码(省略return
语句)python假设您已将函数编写为:
def make_payment(payment, balance):
new_balance2 = balance - payment
new_balance = add_monthly_interest(new_balance2)
print "You still owe: " + str(new_balance)
return None # <-- Python added this for you
所有函数都必须返回一个值,因为你没有包含return
语句python为你添加了一个。由于您的交互式shell看起来正在打印到python函数返回的屏幕所有值,因此您在调用函数后看到了None
。