我跑步时
profitable_gamble(0.2, 50, 9)
使用此功能没有输出
def profitable_gamble(prob, prize, pay):
if prob * prize > pay:
return "true"
else:
return "false"
但是当我将函数更改为使用print()
def profitable_gamble(prob, prize, pay):
if prob * prize > pay:
print("true")
else:
print("false")
我得到了预期的“真实”。如何在使用return而不是print时发生这种情况?
答案 0 :(得分:2)
这是您认为您的代码应该做的:
def profitable_gamble(prob, prize, pay):
if prob * prize > pay:
return "true"
else:
return "false"
returned_value = profitable_gamble(0.2, 50, 9)
print(returned_value)
但是您永远不会告诉它打印任何内容,所以它不会打印任何内容。如果您仅拨打电话:
profitable_gamble(0.2, 50, 9)
然后您的函数仍然返回“ true”或“ false”。...您永远不会对其执行任何操作,因此它只会在调用堆栈中消失。
编辑:您也可能因为使用命令行(或类似Ipython笔记本之类的东西)而感到困惑。在这些交互式外壳中,如果您这样做:
profitable_gamble(0.2, 50, 9)
>> "true"
然后确实会在屏幕上显示该值。但是,这仅仅是因为您使用的是 shell (大概)将为您输出调用结果到控制台。因此,从本质上讲,该外壳(无论是终端还是一些交互式笔记本)都可以为您完成附加的print()语句。...
请注意-通常没有理由做类似的事情
return "true"
在python中。通常,您只想使用布尔值:
return True
(注意大写字母T)。
特别是因为无论如何您都可以执行print(some_boolean_variable)或str(some_boolean_variable)。...额外的好处是,测试布尔值比每次比较字符串“ true”要容易得多。