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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题 — 无重复字符的最长子串

解法一&#xff1a;暴力枚举 先固定一个left&#xff0c;让right向右遍历遇到重复的字符&#xff0c;让left加一然后right返回&#xff0c;重新遍历 解法二&#xff1a; 滑动窗口(在解法一的基础上进行优化) 还是先固定一个left在起始位置&#xff0c;让right从起始位置开始向…

使用docker制作Android镜像(实操可用)

一、安装包准备 1、准备jdk 下载地址&#xff1a;Java Downloads | Oracle 注意版本&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我下载的jdk17&#xff0c;不然后面构建镜像报错&#xff0c;就是版本不对 2、准备安装的工具包 ttps://dev…

Java多线程实战-从零手搓一个简易线程池(四)线程池生命周期状态流转实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

Playwright安装和基本使用(ui/web自动化)

1.简介 Playwright是2021年微软开源的一个项目「playwright-python」。针对 Python 语言的纯自动化工具&#xff0c;它可以通过单个API自动执行 Chromium&#xff0c;Firefox 和 WebKit 浏览器&#xff0c;同时支持以无头模式、有头模式运行。 Playwright&#xff08;Git&…

【Machine Learning系列】带你快速学习十大机器学习算法

前言 机器学习算法是一类用于从数据中学习模式和规律的算法。这些算法可以通过训练样本的输入和输出来推断出模型的参数&#xff0c;然后用于预测新的未知数据。 文章目录 前言机器学习算法1. 线性回归算法 Linear Regression2. 支持向量机算法(Support Vector Machine,SVM)3. …

Centos7.9部署Harbor详细教程

1、前置准备 系统需要已经安装docker、docker-compose… 2、下载Harbor wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-online-installer-v2.10.1.tgztar xvf harbor-offline-installer-v2.10.1.tgzcd harbor3、修改配置文件 cp harbor.yml.t…

CSS滚动条样式修改

前言 目前我们可以通过 CSS伪类 来实现滚动条的样式修改&#xff0c;以下为修改滚动条样式用到的CSS伪类&#xff1a; ::-webkit-scrollbar — 整个滚动条 ::-webkit-scrollbar-button — 滚动条上的按钮 (上下箭头) ::-webkit-scrollbar-thumb — 滚动条上的滚动滑块 ::-web…

CUDA 12.4文档2 内核线程架构

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍&#xff0c;在本人专栏中含有所有内容&#xff1a; https://bl…

网络学习学习笔记

NETEBASE学习笔记 一.VRP系统1.四种视图模式2.基础命令 二.TCP/IP1.五层模型 一.VRP系统 1.四种视图模式 (1)< Huawei > 用户视图 【查看运行状态】 (2)[Huawei] 系统视图 【配置设备的系统参数】 system-view /sys 进入系统视图 CtrlZ/return 直接返回用户视图 (3)[Hua…

AR远程空间标注Vuforia+WebRTC音视频通话和空间标注功能

AR远程空间标注VuforiaWebRTC音视频通话和空间标注功能 视频学习地址&#xff1a;https://www.bilibili.com/video/BV1ZT4y187mG/?vd_sourcefc4b6cdd80b58c93a280fd74c37aadbf

李沐23_LeNet——自学笔记

手写的数字识别 知名度最高的数据集&#xff1a;MNIST 1.训练数据&#xff1a;50000 2.测试数据&#xff1a;50000 3.图像大小&#xff1a;28✖28 4.10类 总结 1.LeNet是早期成功的神经网络 2.先使用卷积层来学习图片空间信息 3.使用全连接层来转换到类别空间 代码实现…

学习记录:bazel和cmake运行终端指令

Bazel和CMake都是用于构建软件项目的工具&#xff0c;但它们之间有一些重要的区别和特点&#xff1a; Bazel&#xff1a; Bazel是由Google开发的构建和测试工具&#xff0c;用于构建大规模的软件项目。它采用一种称为“基于规则”的构建系统&#xff0c;它利用构建规则和依赖关…

Android 属性动画及自定义3D旋转动画

Android 动画框架 其中包括&#xff0c;帧动画、视图动画&#xff08;补间动画&#xff09;、属性动画。 在Android3.0之前&#xff0c;视图动画一家独大&#xff0c;之后属性动画框架被推出。属性动画框架&#xff0c;基本可以实现所有的视图动画效果。 视图动画的效率较高…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组-RSA解密

先把p&#xff0c;q求出来 #include<iostream> #include<cmath> using namespace std; typedef long long ll; int main(){ll n 1001733993063167141LL, sqr sqrt(n);for(ll i 2; i < sqr; i){if(n % i 0){printf("%lld ", i);if(i * i ! n) pri…

关于VMware安装win系统的磁盘扩容与缩减

使用VMware虚拟机安装虚拟windows系统时&#xff0c;如果创建虚拟磁盘的空间预留不足&#xff08;特别是C判空间&#xff09;&#xff0c;安装win系统后&#xff0c;由于默认win系统在安装时分配的healthy健康盘位于系统C盘临近区域&#xff0c;此时如果需要增加C盘虚拟空间&am…

张驰咨询:深圳六西格玛绿带培训5天专业能力提升课程

张驰咨询即将在深圳开设的六西格玛绿带5天培训班&#xff0c;是针对希望在质量管理、项目管理等领域提升自己能力的专业人士的一次重要机会。六西格玛作为一种旨在减少缺陷、提高效率和质量的方法论&#xff0c;已经被全球众多企业采用。绿带认证作为进入这一领域的门槛之一&am…

【产品】ADW300 无线计量仪表 用于计量低压网络的三相有功电能

1 概述 ADW300 无线计量仪表主要用于计量低压网络的三相有功电能&#xff0c;具有体积小、精度高、功能丰富等优点&#xff0c;并且可选通讯方式多&#xff0c;可支持 RS485 通讯和 Lora、2G、NB、4G 等无线通讯方式&#xff0c;增加了外置互感器的电流采样模式&#xff0c;从…

利用AI开源引擎平台:构建文本、图片及视频内容审核系统|可本地部署

网络空间的信息量呈现出爆炸式增长。在这个信息多元化的时代&#xff0c;内容审核系统成为了维护网络秩序、保护用户免受有害信息侵害的重要工具。本文将探讨内容审核系统的核心优势、技术实现以及在不同场景下的应用。 开源项目介绍(可本地部署&#xff0c;支持国产化) 思通数…

法拉电容Farad capacitor与锂电池的区别和对比!

法拉电容也称为超级电容。超级电容器是介于传统电容器和充电电池之间的一种新型环保储能装置&#xff0c;其容量可达0.1F至>10000F法拉&#xff0c;与传统电容器相比&#xff1a;它具有较大的容量、较高的能量、较宽的工作温度范围和极长的使用寿命&#xff1b;而与蓄电池相…

linux网络知识

七层模型 应用层 为操作系统或者网络应用程序提供网络服务的接口 表示层 解决不同系统之间的通信问题&#xff0c;负责数据格式的转换 会话层 自动收发包&#xff0c;自动寻址&#xff0c;负责建立和断开连接 传输层 将上层数据分段并提供端到端的…