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

相关文章

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环