master
/ 2.6.1 逻辑值测试.ipynb

2.6.1 逻辑值测试.ipynb @master

d487d71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
{
 "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
}