[英]Why does the return statement not return any text, whilst print does?
当我跑
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时实现这一点?
这是您认为代码应该做的事情:
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笔记本)而感到困惑。 在那些交互式shell中,如果你这样做:
profitable_gamble(0.2, 50, 9)
>> "true"
确实它确实在屏幕上显示了价值。 但是,这只是因为你正在使用一个shell (大概)可以为你输出调用结果。 基本上那个shell(无论是终端还是一些交互式笔记本)都为你做了额外的print()声明......
作为一个注释 - 一般来说没有理由做类似的事情
return "true"
在python中。 通常你只想使用布尔值:
return True
(注意资本T)。
特别是因为你无论如何都可以做print(some_boolean_variable)或str(some_boolean_variable)....增加的好处是测试一个布尔值比每次比较字符串“true”要容易得多......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.