目录
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 / 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-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/微信: