目录
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 / b
- return True, result
- except 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 = 5
- if is_positive_number(number):
- print(f"{number} 是正数")
- else:
- print(f"{number} 不是正数")
-
- number = -3
- if 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 re
- if not re.match("^[a-zA-Z0-9]+$", input_string):
- return False
- # 如果所有检查都通过,返回True
- return 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赋值给变量value
- value = 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 Sub
-
- Rem 模拟Python中bool函数应用2:循环控制
- Rem 检查计数器是否小于5,如果是则返回True,否则返回False
- Function ShouldContinue(counter As Integer) As Boolean
- ' 如果计数器小于5,返回True
- If counter < 5 Then
- ShouldContinue = True
- Else
- ' 如果计数器大于或等于5,返回False
- ShouldContinue = False
- End If
- End Function
- Rem 执行过程,功能:调用自定义函数,在立即窗口输出结果
- Sub TestRun_1()
- ' 定义计数器变量
- Dim counter As Integer
-
- ' 初始化计数器为0
- counter = 0
- ' 使用While循环,当ShouldContinue返回True时循环继续
- While ShouldContinue(counter)
- ' 在立即窗口中打印当前计数
- Debug.Print "当前计数: " & counter
-
- ' 增加计数器的值
- counter = counter + 1
- Wend
- ' 打印循环结束信息
- Debug.Print "循环结束"
- End Sub
- '当前计数: 0
- '当前计数: 1
- '当前计数: 2
- '当前计数: 3
- '当前计数: 4
- '循环结束
-
- Rem 模拟Python中bool函数应用3:数据过滤
- Function FilterTrueValues(data As Variant) As Variant
- Dim filteredData() As Variant
- Dim i As Long
- Dim j As Long
- Dim 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) = item
- j = j + 1
- End If
- Next i
- ' 调整过滤后数组的大小以匹配实际元素数量
- ReDim Preserve filteredData(LBound(filteredData) To j - 1)
- ' 返回过滤后的数组
- FilterTrueValues = filteredData
- End Function
- Rem 自定义函数,功能:用于判断Variant是否为真值
- Function IsTrueValue(value As Variant) As Boolean
- IsTrueValue = Not IsEmpty(value) And value <> 0 And Len(Trim(CStr(value))) > 0
- End Function
- Rem 执行过程,功能:调用自定义函数并打印结果
- Sub TestRun_2()
- Dim data As Variant
- Dim filteredData As Variant
- Dim 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
- 'myelsa
-
- Rem 模拟Python中bool函数应用4:错误处理
- Function divide_numbers(a As Double, b As Double) As Variant
- Dim result As Variant
- Dim success As Boolean
-
- ' 尝试进行除法运算
- On Error Resume Next ' 忽略错误,以便可以捕获除数为0的情况
- result = a / b
-
- ' 检查是否有错误发生
- If Err.number <> 0 Then
- ' 如果有错误(比如除数为0),则设置success为False,并清除错误
- success = False
- Err.Clear
- Else
- ' 如果没有错误,则设置success为True
- success = True
- End If
- ' 返回一个包含success和result的数组
- divide_numbers = Array(success, result)
- End Function
- Rem 执行程序,功能:调用自定义函数,实现错误处理,在立即窗口中输出结果
- Sub TestRun_3()
- Dim success As Boolean
- Dim result As Variant
- Dim resultArray As Variant
-
- ' 尝试一个会成功的除法
- resultArray = divide_numbers(10, 2)
- success = resultArray(0)
- result = resultArray(1)
- If success Then
- Debug.Print "除法成功,结果是:" & result
- Else
- Debug.Print "除法失败,因为除数为0"
- End If
- ' 尝试一个会失败的除法
- resultArray = divide_numbers(10, 0)
- success = resultArray(0)
- result = resultArray(1)
- If success Then
- Debug.Print "除法成功,结果是:" & result
- Else
- Debug.Print "除法失败,因为除数为0"
- End If
- End Sub
- '除法成功,结果是:5
- '除法失败,因为除数为0
-
- Rem 模拟Python中bool函数应用5:状态判断
- Function IsPositiveNumber(num As Double) As Boolean
- ' 检查给定的数字是否为正数
- ' 如果是正数,返回True;否则返回False
- IsPositiveNumber = num > 0
- End Function
- Rem 执行程序,功能:调用自定义函数,实现相关数字的状态类型判断,在立即窗口中输出结果
- Sub TestRun_4()
- Dim number As Double
- Dim result As Boolean
-
- ' 第一个数字
- number = 5
- result = IsPositiveNumber(number)
- If result Then
- Debug.Print number & " 是正数"
- Else
- Debug.Print number & " 不是正数"
- End If
- ' 第二个数字
- number = -3
- result = IsPositiveNumber(number)
- If result Then
- Debug.Print number & " 是正数"
- Else
- Debug.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 Object
- Set 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
- ' 如果不在范围内,直接返回False
- ValidateInput = False
- Exit Function
- End If
-
- ' 使用正则表达式的Test方法检查字符串是否只包含字母和数字
- ' 如果Test方法返回False,说明字符串不符合正则表达式的模式
- ValidateInput = regex.Test(inputString)
- End Function
- Rem 执行程序,功能:调用自定义函数,实现输入信息验证断,在立即窗口中输出结果
- Sub TestRun_5()
- Dim input1 As String, input2 As String, input3 As String
-
- ' 测试字符串1
- input1 = "myelsa1024"
- If ValidateInput(input1) Then
- Debug.Print input1 & " 是有效的输入!"
- Else
- Debug.Print input1 & " 不是有效的输入!"
- End If
- ' 测试字符串2
- input2 = "jimmy^108"
- If ValidateInput(input2) Then
- Debug.Print input2 & " 是有效的输入!"
- Else
- Debug.Print input2 & " 不是有效的输入!"
- End If
- ' 测试字符串3,并指定最小长度为3
- input3 = "bruce"
- If ValidateInput(input3, minLength:=3) Then
- Debug.Print input3 & " 是有效的输入!"
- Else
- Debug.Print input3 & " 不是有效的输入!"
- End If
- End Sub
- 'myelsa1024 是有效的输入!
- 'jimmy^108 不是有效的输入!
- 'bruce 是有效的输入!
注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行对应的Sub程序即可输出结果。
2、相关文章:
2-3、Python-VBA函数之旅-bytearray()函数
2-4、Python-VBA函数之旅-bytes()函数
Python算法之旅:Algorithm
Python函数之旅:Function
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

遨游码海,我心飞扬
微信名片


评论记录:
回复评论: