Python-VBA函数之旅-bool函数

news2024/11/27 14:34:20

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulhub之ActiveMQ篇

ActiveMQ的web控制台分三个应用&#xff0c;admin、api和fileserver&#xff0c;其中admin是管理员页面&#xff0c;api是接口&#xff0c;fileserver是储存文件的接口&#xff1b;admin和api都需要登录后才能使用&#xff0c;fileserver无需登录。fileserver是一个RESTful API…

冻干可以天天给成年猫吃吗?5大好口碑不翻车专家直入!

近年来&#xff0c;冻干猫粮因其高品质而备受喜爱&#xff0c;吸引了无数猫主人的目光&#xff0c;像我这样的资深养猫人早已开始选择冻干喂养。新手养猫就弄不明白了&#xff0c;什么是冻干猫粮呢&#xff1f;冻干可以天天给成年猫吃吗&#xff1f; 一、什么是冻干 简单来说&…

【微服务】------微服务架构技术栈

目前微服务早已火遍大江南北&#xff0c;对于开发来说&#xff0c;我们时刻关注着技术的迭代更新&#xff0c;而项目采用什么技术栈选型落地是开发、产品都需要关注的事情&#xff0c;该篇博客主要分享一些目前普遍公司都在用的技术栈&#xff0c;快来分享一下你当前所在用的技…

2024 Flutter iOS 隐私清单上线,5 月 1 号最后期限,你收到 「ITMS-91053」 了吗?

2023 年底的时候&#xff0c;我就发过了 《Flutter 上了 Apple 第三方重大列表&#xff0c;2024 春季 iOS 的隐私清单究竟是什么&#xff1f;》 相关内容&#xff0c;如果你还对隐私清单等相关要求不了解&#xff0c;建议先看看前文。 如果你已经有相关了解&#xff0c;并且近…

【LAMMPS学习】七、加速性能(4)加速器包

7. 加速性能 7.1.基准测试 7.2.测试性能 7.3.通用技巧 7.4.加速器包 LAMMPS 中添加了各种pair_style、fixes、compute 和其他命令的加速版本&#xff0c;其运行速度通常比标准非加速版本更快。有些需要您的系统上存在适当的硬件&#xff0c;例如GPU 或 Intel Xeon Phi 协处…

数据库的负载均衡,高可用实验

一 高可用负载均衡集群数据库实验 1.实验拓扑图 2.实验准备(同一LAN区段)&#xff08;ntp DNS&#xff09; 客户端&#xff1a;IP&#xff1a;192.168.1.5 下载&#xff1a;MariaDB 负载均衡器&#xff1a;IP&#xff1a;192.168.1.1 下载&#xff1a;keepalived ipvsadm I…

适用于 PC-3000 Portable III 的新型 SAS 适配器, 让数据恢复踏足更广!

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复同行&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

开源代码分享(19)-配电网孤岛优化划分方法

参考文献&#xff1a; DING Tao, LIN Yanling, LI Gengfeng, et al. A new model for resilient distribution systems by microgrids formation[J]. IEEE Transactions on Power Systems, 2017, 32(5): 4145-4147. 1.基本原理 通过分布式电源&#xff08;DGs&#xff09;形…

车载平板丨车载数据终端丨车载平板电脑丨农机使用

车载加固终端通常是为了在车辆行驶过程中保证通讯信号稳定和数据传输安全而设计的设备。在农机上使用车载加固终端&#xff0c;可以提高农机在野外作业时的通讯和数据传输质量&#xff0c;增强对农机的控制能力和运行安全性。以下是使用车载加固终端在农机上实现通讯加固的步骤…

Thingsboard PE智慧运维仪表板实例(二)【智慧排口截污实例】

ThingsBoard 的仪表板是一个用于可视化和监控物联网数据的重要组件。 它具有以下特点: 1. 可定制性:用户可以根据自己的需求创建各种类型的图表、表格和指标。 2. 数据可视化:以直观的方式展示设备数据,帮助用户快速了解系统状态。 3. 实时更新:实时反映设备的最新数据…

二叉树的前序遍历、中序遍历、后序遍历

二叉树的前序遍历、中序遍历、后序遍历 一、递归算法的三个要素二、144. 二叉树的前序遍历三、94. 二叉树的中序遍历四、145. 二叉树的后序遍历 一、递归算法的三个要素 1、确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在…

报错:AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘

报错内容&#xff1a;AttributeError: module PIL.Image has no attribute ANTIALIAS 问题所在&#xff1a; 使用PIL读取图像后对其进行Resize时由于PIL 版本问题出现AttributeError: module PIL.Image has no attribute ANTIALIAS 具体的代码如下 resized_img img.resize(ta…

交换机与队列的介绍

1.流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系&#xff08;后面会详细讲&…

【python】python的选择语句的三个题目

1.乘坐飞机时&#xff0c;有些航班没有行李额度&#xff0c;当乘客的行李小于等于20公斤时&#xff0c;按每公斤1.68元收费&#xff1b;大于20公斤时&#xff0c;按每公斤1.98元收费&#xff0c;编写程序计算收费情况&#xff08;保留两位小数&#xff09; air_bagfloat(input…

制药领域的技术革命:Profinet转CanOpen网关大放异彩

在科技飞速发展的今天&#xff0c;制药行业正采用更先进的配置方式&#xff0c;以提升生产效率。对于制药行业来说&#xff0c;生产环节中涉及到的各种设备、系统和流程需要高效协同&#xff0c;而这正是Profinet转CanOpen网关所能提供的价值所在。Profinet转CanOpen网关作为一…

X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY

X服务器远程连接问题 报错1 ImportError: this platform is not supported: (failed to acquire X connection: Bad displayname "", DisplayNameError()) Try one of the following resolutions: * Please make surethat you have an X server running, and that …

反射(Reflection) --Java学习笔记

反射 反射就是:加载类&#xff0c;并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 反射学什么? 学习获取类的信息、操作它们 反射第一步:加载类&#xff0c;获取类的字节码:Class对象获取类的构造器:Constructor对象获取类的成员变量:Field对象获取类的成…

利用vivid包,点亮机器学习模型图:惊艳的可视化新体验

一、引言 随着大数据时代的到来&#xff0c;机器学习技术在各个领域得到了广泛的应用。然而&#xff0c;由于机器学习模型的复杂性和抽象性&#xff0c;理解和解释这些模型往往是一项挑战。因此&#xff0c;机器学习可视化成为了连接数据和模型理解之间的桥梁&#xff0c;具有至…

DP:子数组模型

一、最大子数组和 . - 力扣&#xff08;LeetCode&#xff09; 二、环形子数组的最大和 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxSubarraySumCircular(vector<int>& nums) {//动态规划思想解决 //环形数组问题&#xff0c;尝试转…

AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

AIGC实战——StyleGAN 0. 前言1. StyleGAN1.1 映射网络1.2 合成网络1.3 自适应实例归一化层1.4 风格混合1.5 随机变化 2. StyleGAN 生成样本3. StyleGAN23.1 权重调制与解调3.2 路径长度正则化3.3 非渐进式增长 4. StyleGAN2 生成样本小结系列链接 0. 前言 StyleGAN (Style-Ba…