本文主要是介绍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函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!