Python-VBA函数之旅-bool函数

2024-04-10 13:28
文章标签 python 函数 vba 之旅 bool

本文主要是介绍Python-VBA函数之旅-bool函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、bool函数

1-1、Python:

1-2、VBA:

2、相关文章:

个人主页:非风V非雨-CSDN博客


        bool函数(Boolean Function)用于将给定的值转换为布尔值(True或False)。常见的应用场景有:

1、条件判断:bool()函数通常用于条件判断,例如在if语句中。根据条件的真假,可以执行不同的代码块。

2、循环控制:bool()函数可以用于控制循环的终止条件。当条件为False时,循环将停止执行。

3、数据过滤:bool()函数可以用于过滤数据。通过将数据转换为布尔值,可以筛选出满足特定条件的数据。

4、错误处理:bool()函数可以用于检查错误或异常。当某个变量或表达式的值为False时,可能表示出现了错误或异常情况。

5、状态判断:bool()函数可以用于判断对象的状态。例如,判断列表是否为空、文件是否存在等。

6、输入验证:bool()函数可以用于验证用户的输入。通过将用户输入转换为布尔值,可以检查输入是否符合预期。

7、模板渲染:在一些模板引擎中(如 Jinja2),可以使用 bool()函数来控制模板的渲染。

        总之,bool()函数在 Python 中的应用场景非常广泛,尤其是在涉及条件判断和布尔运算的地方。

1、bool函数
1-1、Python:
# 1.函数:bool
# 2.功能:将其参数转换为一个布尔值,即True或False
# 3.语法:bool(x)
# 4.参数:x表示要转换的参数,可以是数值、字符串、列表、元组、字典、集合等
# 5.返回值:
# 5-1、True:当参数不是“假值”时,bool函数返回True。这些“真值”包括所有非零数字、非空字符串、非空列表、非空字典、非空元组、非空集合
#           以及所有自定义对象的实例(除非它们实现了__bool__方法并显式返回False)
# 5-2、False:当参数是“假值”之一时,bool函数返回False。这些“假值”包括:# 数字0# 浮点数0.0# 空字符串''# 空列表[]# 空元组()# 空字典{}# 空集合set()# None# False本身
# 6.说明:
# 6-1、即使某些对象在逻辑上可能被视为“假”(比如空容器),但如果它们没有实现__bool__或__len__方法(且返回适当的值),那么bool函数可能仍然会返回True
# 6-2、bool是int的子类
# 6-3、除了''、""、()、0、[]、{}、None转换后返回值为False,其他转换后返回值都为True
# 7.示例:
# 应用1:条件判断
value = 1024
if bool(value):print("Value is truthy")
else:print("Value is falsy")
# Value is truthy# 应用2:循环控制
def should_continue(counter):"""根据计数器的值决定循环是否应该继续。如果计数器小于5,返回True,否则返回False。"""return counter < 5
# 主函数
if __name__ == '__main__':# 初始化计数器counter = 0# 使用while循环和should_continue函数控制循环while should_continue(counter):print(f"当前计数: {counter}")counter += 1  # 每次循环增加计数器的值print("循环结束")
# 当前计数: 0
# 当前计数: 1
# 当前计数: 2
# 当前计数: 3
# 当前计数: 4
# 循环结束# 应用3:数据过滤
data = [1, 0, '', None, 'myelsa']
filtered_data = [item for item in data if bool(item)]  # 过滤掉假值
print(filtered_data)
# [1, 'myelsa']# 应用4:错误处理
def divide_numbers(a, b):"""尝试将两个数字相除,如果除数为0,则返回False表示错误,否则返回True和结果。"""try:result = a / breturn True, resultexcept ZeroDivisionError:# 如果除数为0,返回False表示错误return False, None
# 主函数
if __name__ == '__main__':success, result = divide_numbers(10, 2)if success:print(f"除法成功,结果是:{result}")else:print("除法失败,因为除数为0")# 尝试一个会失败的除法success, result = divide_numbers(10, 0)if success:print(f"除法成功,结果是:{result}")else:print("除法失败,因为除数为0")
# 除法成功,结果是:5.0
# 除法失败,因为除数为0# 应用5:状态判断
def is_positive_number(num):"""检查给定的数字是否为正数。如果是正数,返回True;否则返回False。"""return num > 0
# 主函数
if __name__ == '__main__':number = 5if is_positive_number(number):print(f"{number} 是正数")else:print(f"{number} 不是正数")number = -3if is_positive_number(number):print(f"{number} 是正数")else:print(f"{number} 不是正数")
# 5 是正数
# -3 不是正数# 应用6:输入验证
def validate_input(input_string, min_length=1, max_length=10):"""验证输入的字符串是否只包含字母和数字,并且长度在指定范围内。如果输入有效,返回True;否则返回False。"""# 检查字符串长度是否在指定范围内if not (min_length <= len(input_string) <= max_length):return False# 使用isalpha和isdigit检查字符串是否只包含字母或数字# 但由于我们允许字母和数字的混合,所以我们不能使用这些函数# 相反,我们使用正则表达式来检查是否只包含字母和数字import reif not re.match("^[a-zA-Z0-9]+$", input_string):return False# 如果所有检查都通过,返回Truereturn True
# 主函数
if __name__ == '__main__':input1 = "myelsa1024"if validate_input(input1):print(f"{input1} 是有效的输入!")else:print(f"{input1} 不是有效的输入!")input2 = "jimmy^108"if validate_input(input2):print(f"{input2} 是有效的输入!")else:print(f"{input2} 不是有效的输入!")input3 = "bruce"if validate_input(input3, min_length=3):print(f"{input3} 是有效的输入!")else:print(f"{input3} 不是有效的输入!")
# myelsa1024 是有效的输入!
# jimmy^108 不是有效的输入!
# bruce 是有效的输入!# 应用7:模板渲染
from jinja2 import Template
template = Template("Hello {{ name }}! You are {{ bool(is_active) }}.")
print(template.render(name='Myelsa', is_active=True))
# Hello Myelsa! You are Active.
1-2、VBA:
Rem 模拟Python中bool函数应用1:条件判断
Sub CheckTruthyFalsy()' 定义一个变量value,类型为Variant,可以存储任何类型的数据Dim value As Variant' 将1024赋值给变量valuevalue = 1024' 判断value的值是否为真(在VBA中,非零和非空通常被认为是真)If value Then' 如果value为真,则弹出一个消息框显示"Value is truthy"MsgBox "Value is truthy"Else' 如果value为假(在VBA中,零或空通常被认为是假),则弹出一个消息框显示"Value is falsy"MsgBox "Value is falsy"End If
End SubRem 模拟Python中bool函数应用2:循环控制
Rem 检查计数器是否小于5,如果是则返回True,否则返回False
Function ShouldContinue(counter As Integer) As Boolean' 如果计数器小于5,返回TrueIf counter < 5 ThenShouldContinue = TrueElse' 如果计数器大于或等于5,返回FalseShouldContinue = FalseEnd If
End Function
Rem 执行过程,功能:调用自定义函数,在立即窗口输出结果
Sub TestRun_1()' 定义计数器变量Dim counter As Integer' 初始化计数器为0counter = 0' 使用While循环,当ShouldContinue返回True时循环继续While ShouldContinue(counter)' 在立即窗口中打印当前计数Debug.Print "当前计数: " & counter' 增加计数器的值counter = counter + 1Wend' 打印循环结束信息Debug.Print "循环结束"
End Sub
'当前计数: 0
'当前计数: 1
'当前计数: 2
'当前计数: 3
'当前计数: 4
'循环结束Rem 模拟Python中bool函数应用3:数据过滤
Function FilterTrueValues(data As Variant) As VariantDim filteredData() As VariantDim i As LongDim j As LongDim item As Variant' 初始化过滤后的数组大小ReDim filteredData(LBound(data) To UBound(data))' 遍历原始数据数组j = 0 ' 计数器,用于过滤后的数组For i = LBound(data) To UBound(data)item = data(i)' 判断当前元素是否为真值If IsTrueValue(item) Then' 如果是真值,则添加到过滤后的数组中filteredData(j) = itemj = j + 1End IfNext i' 调整过滤后数组的大小以匹配实际元素数量ReDim Preserve filteredData(LBound(filteredData) To j - 1)' 返回过滤后的数组FilterTrueValues = filteredData
End Function
Rem 自定义函数,功能:用于判断Variant是否为真值
Function IsTrueValue(value As Variant) As BooleanIsTrueValue = Not IsEmpty(value) And value <> 0 And Len(Trim(CStr(value))) > 0
End Function
Rem 执行过程,功能:调用自定义函数并打印结果
Sub TestRun_2()Dim data As VariantDim filteredData As VariantDim i As Long' 初始化原始数据数组data = Array(1, 0, "", Empty, "myelsa")' 调用函数获取过滤后的数据filteredData = FilterTrueValues(data)' 打印过滤后的数据到Immediate窗口For i = LBound(filteredData) To UBound(filteredData)Debug.Print filteredData(i)Next i
End Sub
'1
'myelsaRem 模拟Python中bool函数应用4:错误处理
Function divide_numbers(a As Double, b As Double) As VariantDim result As VariantDim success As Boolean' 尝试进行除法运算On Error Resume Next ' 忽略错误,以便可以捕获除数为0的情况result = a / b' 检查是否有错误发生If Err.number <> 0 Then' 如果有错误(比如除数为0),则设置success为False,并清除错误success = FalseErr.ClearElse' 如果没有错误,则设置success为Truesuccess = TrueEnd If' 返回一个包含success和result的数组divide_numbers = Array(success, result)
End Function
Rem 执行程序,功能:调用自定义函数,实现错误处理,在立即窗口中输出结果
Sub TestRun_3()Dim success As BooleanDim result As VariantDim resultArray As Variant' 尝试一个会成功的除法resultArray = divide_numbers(10, 2)success = resultArray(0)result = resultArray(1)If success ThenDebug.Print "除法成功,结果是:" & resultElseDebug.Print "除法失败,因为除数为0"End If' 尝试一个会失败的除法resultArray = divide_numbers(10, 0)success = resultArray(0)result = resultArray(1)If success ThenDebug.Print "除法成功,结果是:" & resultElseDebug.Print "除法失败,因为除数为0"End If
End Sub
'除法成功,结果是:5
'除法失败,因为除数为0Rem 模拟Python中bool函数应用5:状态判断
Function IsPositiveNumber(num As Double) As Boolean' 检查给定的数字是否为正数' 如果是正数,返回True;否则返回FalseIsPositiveNumber = num > 0
End Function
Rem 执行程序,功能:调用自定义函数,实现相关数字的状态类型判断,在立即窗口中输出结果
Sub TestRun_4()Dim number As DoubleDim result As Boolean' 第一个数字number = 5result = IsPositiveNumber(number)If result ThenDebug.Print number & " 是正数"ElseDebug.Print number & " 不是正数"End If' 第二个数字number = -3result = IsPositiveNumber(number)If result ThenDebug.Print number & " 是正数"ElseDebug.Print number & " 不是正数"End If
End Sub
'5 是正数
'-3 不是正数Rem 模拟Python中bool函数应用6:输入验证
Function ValidateInput(inputString As String, Optional minLength As Integer = 1, Optional maxLength As Integer = 10) As Boolean' 创建一个正则表达式对象以验证字符串是否只包含字母和数字Dim regex As ObjectSet regex = CreateObject("VBScript.RegExp")' 设置正则表达式的模式,只匹配一个或多个字母或数字,且从字符串开始到结束regex.Pattern = "^[a-zA-Z0-9]+$"regex.IgnoreCase = True ' 忽略大小写,因为[a-zA-Z]已经包含了大小写字母regex.Global = False ' 不需要全局匹配,因为我们只检查整个字符串是否匹配' 检查字符串长度是否在指定范围内If Not (minLength <= Len(inputString) <= maxLength) Then' 如果不在范围内,直接返回FalseValidateInput = FalseExit FunctionEnd If' 使用正则表达式的Test方法检查字符串是否只包含字母和数字' 如果Test方法返回False,说明字符串不符合正则表达式的模式ValidateInput = regex.Test(inputString)
End Function
Rem 执行程序,功能:调用自定义函数,实现输入信息验证断,在立即窗口中输出结果
Sub TestRun_5()Dim input1 As String, input2 As String, input3 As String' 测试字符串1input1 = "myelsa1024"If ValidateInput(input1) ThenDebug.Print input1 & " 是有效的输入!"ElseDebug.Print input1 & " 不是有效的输入!"End If' 测试字符串2input2 = "jimmy^108"If ValidateInput(input2) ThenDebug.Print input2 & " 是有效的输入!"ElseDebug.Print input2 & " 不是有效的输入!"End If' 测试字符串3,并指定最小长度为3input3 = "bruce"If ValidateInput(input3, minLength:=3) ThenDebug.Print input3 & " 是有效的输入!"ElseDebug.Print input3 & " 不是有效的输入!"End If
End Sub
'myelsa1024 是有效的输入!
'jimmy^108 不是有效的输入!
'bruce 是有效的输入!

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行对应的Sub程序即可输出结果。 

2、相关文章:

2-1、Python-VBA函数之旅-all()函数 

2-2、Python-VBA函数之旅-any()函数 

2-3、Python-VBA函数之旅-ascii()函数 

2-4、 Python-VBA函数之旅-bin()函数

Python算法之旅:Algorithm

Python函数之旅:Function

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

这篇关于Python-VBA函数之旅-bool函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/891185

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提