{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 逻辑值测试"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<font size=\"4\">Python中代表真值的布尔对象称为布尔(bool)类型,布尔类型只有两个常量实例:True和False。内置函数 bool() 可将任意值转换为布尔值。bool 是 int 的子类, 在许多数字场景下,True 和 Fasle 分别对应于整数“1”和“0”, 但是,一般建议使用 int() 显式地执行转换再进行运算。</font>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"True\n",
"True\n",
"6\n",
"5\n",
"5\n"
]
}
],
"source": [
"print(bool(100)) # bool() 可将任意值转换为布尔值,True\n",
"print(True == 1) # True 对应于整数“1”,比较运算结果为True\n",
"print(False == 0) # Fasle 对应于整数“0”,比较运算结果为True\n",
"print(5 + True) # 5 + 1,输出值为6\n",
"print(True * 5 + False * 2) # 1 * 5 + 0 * 2,输出值为5\n",
"print(int(True) * 5 + int(False) * 2) # 规范用法,等价于1 * 5 + 0 * 2,输出值为5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<font size=\"4\">python中<font color=Red>__任何对象都能直接进行逻辑(真假)值的测试__</font>,而不需要额外的类型转换,用于<font color=Red>__if__</font>或者<font color=Red>__while__</font>语句的条件判断,也可以做为<font color=Red>__布尔(逻辑)运算符__</font>的操作数。</font>\n",
"\n",
"<font size=\"4\">对象的逻辑(真假)值测试的结果为<font color=Red>__布尔类型__</font>(bool),所以对象是不管什么类型,其逻辑值检测的结果必然是<font color=Red>__True__</font>和<font color=Red>__False__</font>中的一个。</font>\n",
"\n",
"<font size=\"4\">在python中逻辑值的测试结果可以通过调用<font color=Red>__内置函数bool()__</font>来确认。</font>"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"True\n",
"True\n",
"True\n",
"False\n"
]
}
],
"source": [
"print(bool(3.14)) # True\n",
"print(bool(100)) # True\n",
"print(bool(3+4j)) # True\n",
"print(bool('123')) # True\n",
"print(bool(0)) # False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"利用if或while条件表达式或通过逻辑运算,任何对象都能被用于逻辑值检测。逻辑值检测的结果只有True和False。一个对象会被视为具有真值,除非其所属的类定义了在对象上调用时返回 False 的 __bool__() 方法或者返回零的 __len__() 方法。 以下基本完整地列出了具有假值的内置对象:\n",
"Python中,除以下几种情形以外,<font color=Red>__其他对象__</font>的真值测试结果均为<font color=Red>__True__</font>:\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"+ 常量 <font color=Red>__None__</font> 或者 <font color=Red>__False__</font>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"其中,None是一个特殊的常量,起到空的占位作用,它有自己的数据类型NoneType。None不是False、不是0、不是空字符串。None是一个特殊的常量,起到空的占位作用,他有自己的数据类型NoneType。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"+ 任何数值类型的<font color=Red>__0__</font>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python中一切值为0的数值类型的真值测试结果均为False。包括: 0、0.0、0j、Decimal(0)、 Fraction(0, 1))。等。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"+ <font color=Red>__空对象__</font>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python中一切都是对象,一切空对象如:''、 ()、[]、 range(0)、{}、set()的真值测试结果均为False。 \n",
"空对象包括: \n",
"空字符串 \n",
"空序列 \n",
"空字典 \n",
"空集合 \n",
"空对象等。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from decimal import Decimal # decimal模块中的小数函数Decimal\n",
"from fractions import Fraction # fractions模块中的分数函数Fraction\n",
"\n",
"\n",
"print(bool(0)) # 整数0,False\n",
"print(bool(0.0)) # 浮点数0.0与数字0等值,False\n",
"print(bool(0j)) # 复数0j,False\n",
"print(bool(Fraction(0, 1))) # Fraction(0,1)表示分子为0分数,0/1,False\n",
"print(bool(Decimal(0))) # Decimal(0) 表示0,False\n",
"\n",
"print(bool('hello')) # 非空字符串,True\n",
"print(bool(100)) # 非0数字,True\n",
"print(bool(' ')) # 空格是非空字符串,True\n",
"\n",
"print(bool('')) # 空字符串,False\n",
"print(bool(())) # 空元组,False\n",
"print(bool([])) # 空列表,False\n",
"print(bool({})) # 空字典,False\n",
"print(bool(set())) # 空集合,False\n",
"print(bool(range(0))) # 空 range,False\n",
"\n",
"print(bool(None)) # None类型,False\n",
"print(bool(False)) # False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<font face='楷体' color='red' size=5> 练一练 </font>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 完成下面的程序,判断输入的正整数是否为奇数。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"用户输入一个正整数,若该数为奇数,则输出True;若该数为偶数,则输出False。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**提示**: \n",
"奇数对2取模结果为1,真值测试为True; \n",
"偶数对2取模结果为0,真值测试为False。\n",
"所以只需要将整数对2取模(n % 2)做为bool()的参数进行输出即可"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"n = int(input())\n",
"# 补充代码,实现n为奇数时,输出True;否则输出False\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"内置函数all()用于判断给定的可迭代参数iterable中的所有元素是否都为 True。如果所有元素是否都为 True,函数返回 True,否则返回 False。"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(all([1, 2, 3])) # 输出: True\n",
"print(all([0, 1, 2])) # 输出: False,因为0是False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"内置函数any() 用于判断给定的可迭代参数 iterable 中的任一元素是否为真。如果有一个元素为 True,则返回 True,否则返回 False。"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(any([0, 0, 1])) # 输出: True\n",
"print(any([0, 0, None])) # 输出: False"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}