首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA函数之旅-bool函数

  • 25-03-03 04:24
  • 2502
  • 12168
blog.csdn.net

目录

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. # 1.函数:bool
  2. # 2.功能:将其参数转换为一个布尔值,即True或False
  3. # 3.语法:bool(x)
  4. # 4.参数:x表示要转换的参数,可以是数值、字符串、列表、元组、字典、集合等
  5. # 5.返回值:
  6. # 5-1、True:当参数不是“假值”时,bool函数返回True。这些“真值”包括所有非零数字、非空字符串、非空列表、非空字典、非空元组、非空集合
  7. # 以及所有自定义对象的实例(除非它们实现了__bool__方法并显式返回False)
  8. # 5-2、False:当参数是“假值”之一时,bool函数返回False。这些“假值”包括:
  9. # 数字0
  10. # 浮点数0.0
  11. # 空字符串''
  12. # 空列表[]
  13. # 空元组()
  14. # 空字典{}
  15. # 空集合set()
  16. # None
  17. # False本身
  18. # 6.说明:
  19. # 6-1、即使某些对象在逻辑上可能被视为“假”(比如空容器),但如果它们没有实现__bool__或__len__方法(且返回适当的值),那么bool函数可能仍然会返回True
  20. # 6-2、bool是int的子类
  21. # 6-3、除了''、""、()、0、[]、{}、None转换后返回值为False,其他转换后返回值都为True
  22. # 7.示例:
  23. # 应用1:条件判断
  24. value = 1024
  25. if bool(value):
  26. print("Value is truthy")
  27. else:
  28. print("Value is falsy")
  29. # Value is truthy
  30. # 应用2:循环控制
  31. def should_continue(counter):
  32. """
  33. 根据计数器的值决定循环是否应该继续。
  34. 如果计数器小于5,返回True,否则返回False。
  35. """
  36. return counter < 5
  37. # 主函数
  38. if __name__ == '__main__':
  39. # 初始化计数器
  40. counter = 0
  41. # 使用while循环和should_continue函数控制循环
  42. while should_continue(counter):
  43. print(f"当前计数: {counter}")
  44. counter += 1 # 每次循环增加计数器的值
  45. print("循环结束")
  46. # 当前计数: 0
  47. # 当前计数: 1
  48. # 当前计数: 2
  49. # 当前计数: 3
  50. # 当前计数: 4
  51. # 循环结束
  52. # 应用3:数据过滤
  53. data = [1, 0, '', None, 'myelsa']
  54. filtered_data = [item for item in data if bool(item)] # 过滤掉假值
  55. print(filtered_data)
  56. # [1, 'myelsa']
  57. # 应用4:错误处理
  58. def divide_numbers(a, b):
  59. """
  60. 尝试将两个数字相除,如果除数为0,则返回False表示错误,否则返回True和结果。
  61. """
  62. try:
  63. result = a / b
  64. return True, result
  65. except ZeroDivisionError:
  66. # 如果除数为0,返回False表示错误
  67. return False, None
  68. # 主函数
  69. if __name__ == '__main__':
  70. success, result = divide_numbers(10, 2)
  71. if success:
  72. print(f"除法成功,结果是:{result}")
  73. else:
  74. print("除法失败,因为除数为0")
  75. # 尝试一个会失败的除法
  76. success, result = divide_numbers(10, 0)
  77. if success:
  78. print(f"除法成功,结果是:{result}")
  79. else:
  80. print("除法失败,因为除数为0")
  81. # 除法成功,结果是:5.0
  82. # 除法失败,因为除数为0
  83. # 应用5:状态判断
  84. def is_positive_number(num):
  85. """
  86. 检查给定的数字是否为正数。
  87. 如果是正数,返回True;否则返回False。
  88. """
  89. return num > 0
  90. # 主函数
  91. if __name__ == '__main__':
  92. number = 5
  93. if is_positive_number(number):
  94. print(f"{number} 是正数")
  95. else:
  96. print(f"{number} 不是正数")
  97. number = -3
  98. if is_positive_number(number):
  99. print(f"{number} 是正数")
  100. else:
  101. print(f"{number} 不是正数")
  102. # 5 是正数
  103. # -3 不是正数
  104. # 应用6:输入验证
  105. def validate_input(input_string, min_length=1, max_length=10):
  106. """
  107. 验证输入的字符串是否只包含字母和数字,并且长度在指定范围内。
  108. 如果输入有效,返回True;否则返回False。
  109. """
  110. # 检查字符串长度是否在指定范围内
  111. if not (min_length <= len(input_string) <= max_length):
  112. return False
  113. # 使用isalpha和isdigit检查字符串是否只包含字母或数字
  114. # 但由于我们允许字母和数字的混合,所以我们不能使用这些函数
  115. # 相反,我们使用正则表达式来检查是否只包含字母和数字
  116. import re
  117. if not re.match("^[a-zA-Z0-9]+$", input_string):
  118. return False
  119. # 如果所有检查都通过,返回True
  120. return True
  121. # 主函数
  122. if __name__ == '__main__':
  123. input1 = "myelsa1024"
  124. if validate_input(input1):
  125. print(f"{input1} 是有效的输入!")
  126. else:
  127. print(f"{input1} 不是有效的输入!")
  128. input2 = "jimmy^108"
  129. if validate_input(input2):
  130. print(f"{input2} 是有效的输入!")
  131. else:
  132. print(f"{input2} 不是有效的输入!")
  133. input3 = "bruce"
  134. if validate_input(input3, min_length=3):
  135. print(f"{input3} 是有效的输入!")
  136. else:
  137. print(f"{input3} 不是有效的输入!")
  138. # myelsa1024 是有效的输入!
  139. # jimmy^108 不是有效的输入!
  140. # bruce 是有效的输入!
  141. # 应用7:模板渲染
  142. from jinja2 import Template
  143. template = Template("Hello {{ name }}! You are {{ bool(is_active) }}.")
  144. print(template.render(name='Myelsa', is_active=True))
  145. # Hello Myelsa! You are Active.
1-2、VBA:
  1. Rem 模拟Python中bool函数应用1:条件判断
  2. Sub CheckTruthyFalsy()
  3. ' 定义一个变量value,类型为Variant,可以存储任何类型的数据
  4. Dim value As Variant
  5. ' 将1024赋值给变量value
  6. value = 1024
  7. ' 判断value的值是否为真(在VBA中,非零和非空通常被认为是真)
  8. If value Then
  9. ' 如果value为真,则弹出一个消息框显示"Value is truthy"
  10. MsgBox "Value is truthy"
  11. Else
  12. ' 如果value为假(在VBA中,零或空通常被认为是假),则弹出一个消息框显示"Value is falsy"
  13. MsgBox "Value is falsy"
  14. End If
  15. End Sub
  16. Rem 模拟Python中bool函数应用2:循环控制
  17. Rem 检查计数器是否小于5,如果是则返回True,否则返回False
  18. Function ShouldContinue(counter As Integer) As Boolean
  19. ' 如果计数器小于5,返回True
  20. If counter < 5 Then
  21. ShouldContinue = True
  22. Else
  23. ' 如果计数器大于或等于5,返回False
  24. ShouldContinue = False
  25. End If
  26. End Function
  27. Rem 执行过程,功能:调用自定义函数,在立即窗口输出结果
  28. Sub TestRun_1()
  29. ' 定义计数器变量
  30. Dim counter As Integer
  31. ' 初始化计数器为0
  32. counter = 0
  33. ' 使用While循环,当ShouldContinue返回True时循环继续
  34. While ShouldContinue(counter)
  35. ' 在立即窗口中打印当前计数
  36. Debug.Print "当前计数: " & counter
  37. ' 增加计数器的值
  38. counter = counter + 1
  39. Wend
  40. ' 打印循环结束信息
  41. Debug.Print "循环结束"
  42. End Sub
  43. '当前计数: 0
  44. '当前计数: 1
  45. '当前计数: 2
  46. '当前计数: 3
  47. '当前计数: 4
  48. '循环结束
  49. Rem 模拟Python中bool函数应用3:数据过滤
  50. Function FilterTrueValues(data As Variant) As Variant
  51. Dim filteredData() As Variant
  52. Dim i As Long
  53. Dim j As Long
  54. Dim item As Variant
  55. ' 初始化过滤后的数组大小
  56. ReDim filteredData(LBound(data) To UBound(data))
  57. ' 遍历原始数据数组
  58. j = 0 ' 计数器,用于过滤后的数组
  59. For i = LBound(data) To UBound(data)
  60. item = data(i)
  61. ' 判断当前元素是否为真值
  62. If IsTrueValue(item) Then
  63. ' 如果是真值,则添加到过滤后的数组中
  64. filteredData(j) = item
  65. j = j + 1
  66. End If
  67. Next i
  68. ' 调整过滤后数组的大小以匹配实际元素数量
  69. ReDim Preserve filteredData(LBound(filteredData) To j - 1)
  70. ' 返回过滤后的数组
  71. FilterTrueValues = filteredData
  72. End Function
  73. Rem 自定义函数,功能:用于判断Variant是否为真值
  74. Function IsTrueValue(value As Variant) As Boolean
  75. IsTrueValue = Not IsEmpty(value) And value <> 0 And Len(Trim(CStr(value))) > 0
  76. End Function
  77. Rem 执行过程,功能:调用自定义函数并打印结果
  78. Sub TestRun_2()
  79. Dim data As Variant
  80. Dim filteredData As Variant
  81. Dim i As Long
  82. ' 初始化原始数据数组
  83. data = Array(1, 0, "", Empty, "myelsa")
  84. ' 调用函数获取过滤后的数据
  85. filteredData = FilterTrueValues(data)
  86. ' 打印过滤后的数据到Immediate窗口
  87. For i = LBound(filteredData) To UBound(filteredData)
  88. Debug.Print filteredData(i)
  89. Next i
  90. End Sub
  91. '1
  92. 'myelsa
  93. Rem 模拟Python中bool函数应用4:错误处理
  94. Function divide_numbers(a As Double, b As Double) As Variant
  95. Dim result As Variant
  96. Dim success As Boolean
  97. ' 尝试进行除法运算
  98. On Error Resume Next ' 忽略错误,以便可以捕获除数为0的情况
  99. result = a / b
  100. ' 检查是否有错误发生
  101. If Err.number <> 0 Then
  102. ' 如果有错误(比如除数为0),则设置success为False,并清除错误
  103. success = False
  104. Err.Clear
  105. Else
  106. ' 如果没有错误,则设置success为True
  107. success = True
  108. End If
  109. ' 返回一个包含success和result的数组
  110. divide_numbers = Array(success, result)
  111. End Function
  112. Rem 执行程序,功能:调用自定义函数,实现错误处理,在立即窗口中输出结果
  113. Sub TestRun_3()
  114. Dim success As Boolean
  115. Dim result As Variant
  116. Dim resultArray As Variant
  117. ' 尝试一个会成功的除法
  118. resultArray = divide_numbers(10, 2)
  119. success = resultArray(0)
  120. result = resultArray(1)
  121. If success Then
  122. Debug.Print "除法成功,结果是:" & result
  123. Else
  124. Debug.Print "除法失败,因为除数为0"
  125. End If
  126. ' 尝试一个会失败的除法
  127. resultArray = divide_numbers(10, 0)
  128. success = resultArray(0)
  129. result = resultArray(1)
  130. If success Then
  131. Debug.Print "除法成功,结果是:" & result
  132. Else
  133. Debug.Print "除法失败,因为除数为0"
  134. End If
  135. End Sub
  136. '除法成功,结果是:5
  137. '除法失败,因为除数为0
  138. Rem 模拟Python中bool函数应用5:状态判断
  139. Function IsPositiveNumber(num As Double) As Boolean
  140. ' 检查给定的数字是否为正数
  141. ' 如果是正数,返回True;否则返回False
  142. IsPositiveNumber = num > 0
  143. End Function
  144. Rem 执行程序,功能:调用自定义函数,实现相关数字的状态类型判断,在立即窗口中输出结果
  145. Sub TestRun_4()
  146. Dim number As Double
  147. Dim result As Boolean
  148. ' 第一个数字
  149. number = 5
  150. result = IsPositiveNumber(number)
  151. If result Then
  152. Debug.Print number & " 是正数"
  153. Else
  154. Debug.Print number & " 不是正数"
  155. End If
  156. ' 第二个数字
  157. number = -3
  158. result = IsPositiveNumber(number)
  159. If result Then
  160. Debug.Print number & " 是正数"
  161. Else
  162. Debug.Print number & " 不是正数"
  163. End If
  164. End Sub
  165. '5 是正数
  166. '-3 不是正数
  167. Rem 模拟Python中bool函数应用6:输入验证
  168. Function ValidateInput(inputString As String, Optional minLength As Integer = 1, Optional maxLength As Integer = 10) As Boolean
  169. ' 创建一个正则表达式对象以验证字符串是否只包含字母和数字
  170. Dim regex As Object
  171. Set regex = CreateObject("VBScript.RegExp")
  172. ' 设置正则表达式的模式,只匹配一个或多个字母或数字,且从字符串开始到结束
  173. regex.Pattern = "^[a-zA-Z0-9]+$"
  174. regex.IgnoreCase = True ' 忽略大小写,因为[a-zA-Z]已经包含了大小写字母
  175. regex.Global = False ' 不需要全局匹配,因为我们只检查整个字符串是否匹配
  176. ' 检查字符串长度是否在指定范围内
  177. If Not (minLength <= Len(inputString) <= maxLength) Then
  178. ' 如果不在范围内,直接返回False
  179. ValidateInput = False
  180. Exit Function
  181. End If
  182. ' 使用正则表达式的Test方法检查字符串是否只包含字母和数字
  183. ' 如果Test方法返回False,说明字符串不符合正则表达式的模式
  184. ValidateInput = regex.Test(inputString)
  185. End Function
  186. Rem 执行程序,功能:调用自定义函数,实现输入信息验证断,在立即窗口中输出结果
  187. Sub TestRun_5()
  188. Dim input1 As String, input2 As String, input3 As String
  189. ' 测试字符串1
  190. input1 = "myelsa1024"
  191. If ValidateInput(input1) Then
  192. Debug.Print input1 & " 是有效的输入!"
  193. Else
  194. Debug.Print input1 & " 不是有效的输入!"
  195. End If
  196. ' 测试字符串2
  197. input2 = "jimmy^108"
  198. If ValidateInput(input2) Then
  199. Debug.Print input2 & " 是有效的输入!"
  200. Else
  201. Debug.Print input2 & " 不是有效的输入!"
  202. End If
  203. ' 测试字符串3,并指定最小长度为3
  204. input3 = "bruce"
  205. If ValidateInput(input3, minLength:=3) Then
  206. Debug.Print input3 & " 是有效的输入!"
  207. Else
  208. Debug.Print input3 & " 不是有效的输入!"
  209. End If
  210. End Sub
  211. 'myelsa1024 是有效的输入!
  212. 'jimmy^108 不是有效的输入!
  213. 'bruce 是有效的输入!

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行对应的Sub程序即可输出结果。 

2、相关文章:

2-1、Python-VBA函数之旅-ascii()函数 

2-2、Python-VBA函数之旅-bin()函数

2-3、Python-VBA函数之旅-bytearray()函数 

2-4、Python-VBA函数之旅-bytes()函数​​​​​​​ 

Python算法之旅:Algorithm

Python函数之旅:Function

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/137579050"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top