如何在定义的函数中包含布尔逻辑?

时间:2017-05-19 20:11:23

标签: boolean-logic

我有这个工作,但我试图直观地理解if(见下面的...... has_botton_and_top)语句如何在这个实例中工作..即布尔逻辑如何工作:

def cylinder_surface_area(radius, height,has_top_and_bottom ):          
side_area = height * 6.28 * radius    
if has_top_and_bottom:          
  top_area = 2*3.14 * radius ** 2        
  return (side_area + top_area)     
else:return side_area 

print(cylinder_surface_area(10,5,False))

1 个答案:

答案 0 :(得分:0)

我没有太多使用Python,但是当我这样做时,我真的很喜欢使用Python IDLE编辑器。它为您的代码提供了一个非常简单的编辑器,您可以非常轻松地执行它。就编辑而言,这完全是一个偏好问题。只要您使用的编辑器满足您的所有需求并且您可以使用它,它就是最适合您的编辑器。

现在,提到你的问题:我完全可以理解你的困惑来自哪里。 Python处理变量的方式(因此不需要严格输入变量)也让我感到困惑。从Python文档中,

  

可以测试任何对象的真值,以便在if或while中使用   条件或下面的布尔运算的操作数。下列   值被视为错误:

     

无任何数字类型的假零,例如,0,0L,0.0,0j。任何   空序列,例如,'',(),[]。任何空映射,用于   例如,{}。用户定义的类的实例,如果类定义了   __nonzero __()或__len __()方法,当该方法返回整数零或bool值False时。所有其他值都被认为是真实的    - 所以很多类型的对象总是如此。具有布尔结果的操作和内置函数始终返回0或False   除非另有说明,否则为false,1或True为true。 (重要   异常:布尔运算"或"和"和"总是返回一个   他们的操作数。)

因此,您的函数期望您输入布尔输入,但即使您输入String,Integer,Double或其他任何内容,它仍然可以使用明确定义的行为来评估所有这些。我假设您的混淆来自于您可以将任何变量评估为True或False,而不是布尔逻辑如何在其核心工作。如果您还需要我解释布尔逻辑,请随意发表评论,我也会添加。