目录

1. 数字类型

1.1 整数类型

1.1.1 概述

1.1.2 四种进制

1.2 浮点数类型

1.2.1 概述

1.2.2 浮点数表示法

1.2.3 浮点数精度

1.3 复数类型

2. 数字类型操作

2.1 内置数值运算操作符

2.2 内置数值运算函数

2.3 内置的数字类型转换函数

3. math库的使用

3.1 概述

3.2 分类简介

3.2.1 数学常数

3.2.2 数值表示函数

3.2.3 幂对数函数

3.2.4 三角运算函数

3.2.5 高等特殊函数

4. 字符串类型

4.1 字符串的表示

4.1.1 单引号字符串

4.1.2 双引号字符串

4.1.3. 三引号字符串

4.2 字符串的使用

4.2.1 字符串序号

4.2.2 字符串索引

4.2.3 字符串切片

4.3 字符串操作符

4.4 内置字符串处理函数

4.5 内置字符串处理方法

4.5.1 什么是方法

4.5.2 字符串处理方法简介

4.6 字符串类型的格式化

4.6.1 概述

4.6.2 槽与format方法

4.6.3 format方法的格式控制

5. time库的使用

5.1 概述

5.2 获取时间

5.3 时间格式化

5.3.1 time_struct --> 时间字符串

5.3.2 时间字符串 --> time_struct

5.4 程序计时函数

5.4.1 perf_counter函数

5.4.2. sleep函数

6. 文本进度条实例

6.1 简单实现

6.2 单行动态刷新

6.3 带刷新的文本进度条


1. 数字类型

1.1 整数类型

1.1.1 概述

① Python整数类型与数学中的整数概念一致

② 整数类型可正可负

③ 整数类型理论上的取值范围是(-∞, +∞),实际上的取指范围受限于运行Python程序的计算机内存大小

④ 除极大数的运算外,一般认为整数类型没有取值范围限制

1.1.2 四种进制

进制类型

引导符号

描述

十进制

默认情况

二进制

0b 或 0B

由数字0和1组成

八进制

0o 或 0O

由数字0到7组成

十六进制

0x 或 0X

由数字0到9、a到f、A到F组成

说明:各种进制的整数均可以有负数,e.g. -0x8

1.2 浮点数类型

1.2.1 概述

① Python浮点数类型与数学中的实数概念一致

② Python要求所有浮点数必须有小数部分,小数部分可以为0,这种设计可以区分浮点数和整数类型

③ 因为浮点数和整数由计算机的不同硬件单元执行,存储和处理方法不同,所以0和0.0也是不同的

1.2.2 浮点数表示法

① 十进制表示

e.g. 0.0,3.1415

② 数学计数法

使用字母e或E作为幂的符号,以10为基数,格式如下,

<a>e<b> # 表示a * 10^b
# e.g.
4.3e-3 # 0.0043
9.6E5  # 960000.0

1.2.3 浮点数精度

Python浮点数的数值范围和小数精度受不同计算机系统的限制,可以通过sys.float_info查看,代码如下,

import sys
sys.float_info

当前计算机显式信息如下,

相关属性分组概述如下,

属性

说明

max

max_exp

max_10_exp

最大可表示有限浮点数

基数(radix)为2时最大值的幂

科学计数法最大值的幂

min

min_exp

min_10_exp

最小标准化浮点数

基数(radix)为2时最小值的幂

科学计数法最小值的幂

dig

mant_dig

浮点数基数为10时有效精度(本机为16)

浮点数基数为2时有效精度(本机为53)

epsilon

能分辨的两个相邻浮点数的最小差值

说明1:浮点数间运算存在不确定尾数

原因在于计算机内部使用二进制表示小数,可以无限接近但不完全相同

说明2:高精度浮点计算

如上文所述,由于计算机内部使用二进制表示浮点数,所以使用浮点数无法进行极高精度的数学运算(基数为10时精度为16位)

由于Python能够支持无限制且准确的整数计算,因此,如果希望获得精度更高的计算结果,往往采用整数而不是直接采用浮点数

Python提供的decimal标准库提供了一种更精确的数字类型Decimal,该类型利用了上文介绍的整数运算方法提供高精度浮点数运算

1.3 复数类型

① Python复数类型与数学中复数的概念一致

② a + bj 或 a + bJ被称为复数,其中a是实部,b是虚部

③ 对于复数z,可以通过z.real获得实部,z.imag获得虚部

说明:复数的实部和虚部均为浮点数

2. 数字类型操作

2.1 内置数值运算操作符

① 操作符是完成运算的一种符号体系

② 内置操作符由Python解释器直接提供,不需要引入标准或第三方库

说明1:操作运算符的结果可能改变数字类型,3种数字类型之间存在一种逐渐扩展的关系,具体如下,

整数 --> 浮点数 --> 复数

基本规则如下,

a. 整数之间运算,如果数学意义上的结果是小数,结果是浮点数(e.g. 10 / 3)

b. 整数之间运算,如果数学意义上的结果是整数,结果是整数

c. 整数和浮点数混合运算,输出结果是浮点数

d. 整数或浮点数与复数运算,输出结果是复数

说明2:所有二元数值运算操作符都有与之对应的赋值操作符

2.2 内置数值运算函数

说明1:复数的绝对值

使用abs函数计算复数的绝对值,得到二维坐标系中复数位置到坐标原点的长度

说明2:pow函数的同步求模运算

当指定pow函数的参数z时,模运算与幂运算同时进行,速度很快;虽然可以先进行幂运算再进行模运算,但是速度要慢得多,尤其是幂运算结果巨大时

pow函数参数z的特点在运算加解密算法和科学计算中十分重要

2.3 内置的数字类型转换函数

说明1:数值运算符可以隐式地转换输出结果的数字类型,而内置的数字类型转换函数可以实现显式的类型转换

说明2:三种转换概述

int(x):可以将浮点数或字符串转换为整数

float(x):可以将整数或字符串转换为浮点数

注意,复数不能直接转换为其他类型,只能实部和虚部分别转换

complex(re[, im]):re可以是整数、浮点数或字符串;im可以是整数或浮点数但不能是字符串

tips:可以用int(x)替换温度转换实例中的eval函数

3. math库的使用

3.1 概述

① math库是Python内置的数学类函数库,因为复数类型常用于科学计算,一般计算并不常用,所以math库不支持复数类型

② math库供提供4个数学常数和44个函数

3.2 分类简介

3.2.1 数学常数

3.2.2 数值表示函数

说明1:math.fsum用于浮点数精确求和,但是从结果上看,并非总是如此

说明2:在涉及浮点数运算及结果比较时,建议采用math库提供的函数,而不直接使用Python提供的运算符

3.2.3 幂对数函数

说明:math库没有提供计算开方的函数,可以采用math.pow函数实现,只要幂小于1即可,比如math.pow(10, 1/3)

3.2.4 三角运算函数

3.2.5 高等特殊函数

4. 字符串类型

4.1 字符串的表示

字符串是由0个或多个字符组成的有序字符序列,Python中可以由一对单引号(') / 双引号(")/ 三引号(''')构成,辨析如下,

4.1.1 单引号字符串

① 表示单行字符串

② 可以使用双引号作为字符串的一部分

'单引号表示,可以使用"双引号"作为字符串的一部分'

4.1.2 双引号字符串

① 表示单行字符串

② 可以使用单引号作为字符串的一部分

"双引号表示,可以使用'单引号'作为字符串的一部分"

4.1.3. 三引号字符串

① 表示单行或者多行字符串

② 可以使用单引号或双引号作为字符串的一部分

说明1:Python字符串表示的冗余设计,简化了字符串中包含单双引号的处理

说明2:字符串中包含单双引号也可以使用转义字符实现

说明3:三引号字符串可以作为多行注释使用,本质上是未传递给任何函数处理的字符串

4.2 字符串的使用

4.2.1 字符串序号

Python字符串中有正向递增和返向递减2种索引方式,

如果字符串长度为L,

正向递增序号,从左至右为0到(L - 1)

反向递减需要,从右至左为-1到-L

说明1:从左向右看,两种序号其实都是递增的

说明2:两种序号可以在一个表示中使用

e.g. 温度转换实例中使用TempStr[0:-1]表示除最后一个字符外的字符串

4.2.2 字符串索引

含义:返回字符串中的单个字符

语法:<字符串>[M]

说明:字符串索引返回的其实是字符串子串,只不过包含且只包含一个字符

4.2.3 字符串切片

含义:返回字符串中一段字符子串

基础语法:<字符串>[M:N]

表示从M到N(不包括N)的子字符串,如果缺省M表示从字符0开始;如果缺省N表示到字符结尾

进阶语法:<字符串>[M:N:K]

表示从M到N(不包括N)按步长K切片的子字符串

说明:K为-1时的影响

当K为-1时,表示步长为-1,即从M开始递减切片

上述示例说明了2点,

① 切片操作中,M并不是一定要小于N

② 对从M到N但不包括N的理解,是指从切片方向上看最接近而不包括的那个字符(示例中就是不包括字符0)

同时需要注意的是,如果K为负数而缺省M,那么默认M为-1,因此可以使用下面的方法实现字符串逆序

4.3 字符串操作符

说明:in实际上是一个保留字并非操作符

4.4 内置字符串处理函数

内置字符串处理函数由Python解释器提供,共有6个,具体如下,

说明1:Unicode编码与字符串长度

Python字符串以Unicode编码存储,因此字符串中的英文字符和中文字符都算作1个字符

早期计算机系统中采用ASCII编码,但是ASCII编码针对英语字符设计,所以没有覆盖其他语言的字符,而Unicode编码几乎覆盖所有字符的编码方式

Unicode编码取指范围为0到0x10FFFF,每个编码对应一个字符

说明2:len函数除了可以返回字符串长度,也可以返回其他组合数据类型元(e.g. 列表 / 元组)素个数

说明3:str函数的功能与之前介绍的eval函数相对应

tips:十二星座Unicode编码与字符

4.5 内置字符串处理方法

4.5.1 什么是方法

① 方法是面向对象编程的专有名词,是指类提供的功能

② 方法的调用方式为<a>.<b>(),其中,

<a>是类的对象,<b>是对象提供的功能(即方法)

③ 在Python解释器内部,所有数据类型都采用面向对象方式实现,封装为一个类。字符串也是一个类,所以也具有字符串处理方法

4.5.2 字符串处理方法简介

字符串处理方法供43个,此处仅介绍常用方法

说明1:返回字符串副本

上述方法对字符串的操作均是返回副本,并不会修改原字符串内容

说明2:split方法类似C语言中的strtok函数的功能

说明3:split方法的默认分隔符为空格

说明4:当center方法的width参数小于字符串长度时,返回字符串本身,即并不会做截断

4.6 字符串类型的格式化

4.6.1 概述

① 字符串格式化是对字符串进行格式表达的方式,即格式化的对象是字符串

② 字符串格式化用于解决字符串和变量同时输出时的格式安排

说明:Python中的字符串格式化类似C语言中printf函数的功能

tips:Python中也支持类似C语言中printf函数的格式化方法,但是目前已不推荐使用

4.6.2 槽与format方法

字符串格式化使用format方法实现,用法如下,

<模板字符串>.format(<逗号分隔的参数>)

其中,模板字符串由一系列槽组成,用来控制字符串中嵌入值出现的位置与格式,其基本思想是将format方法中逗号分隔的参数按照序号关系替换到模板字符串的槽中

说明:如果槽中指定了使用参数的序号,则按照序号进行替换

4.6.3 format方法的格式控制

format方法的模板字符串中,槽内部对格式化的配置方式如下,

上述格式控制标记可以分为2组进行说明,

① 宽度 / 对齐 / 填充

在逻辑上首先是设置输出宽度,当实际输出的字符串长度小于宽度时,就存在对齐问题,而对齐之后剩余的空间就需要进行填充

但是在设置时为什么是与逻辑相反的呢 ? 这是因为填充和对齐都有默认方式,因此可以省略(默认左对齐、以空格填充),如果将宽度放在最前面,那么就可能出现填充字符与类型字符无法分辨的情况

具体示例如下,

② 数字千位分隔 / 精度 / 类型

说明:此处的类型c是输出整数对应的Unicode字符

补充:由于模板字符串中使用一对大括号{}表示槽,当需要输出大括号时,就使用{{表示{,使用}}表示}

补充:字节串类型

相较于字符串类型,Python中还提供了字节串类型,字符串类型的组成元素是Unicode编码的字符;而字节串的元素就是字节

字节串类型说明如下,

5. time库的使用

5.1 概述

① time库是Python中处理时间的标准库

② time库提供三类函数,

a. 时间获取函数

time / ctime / gmtime

b. 时间格式化函数

strftime / strptime

c. 程序计时函数

perf_counter / sleep

5.2 获取时间

说明1:从本质上说,计算机内部的时间就是time函数获取的以秒为单位的浮点数,ctime & gmtime函数获得的时间形式都是对该浮点数解析而来

其中ctime函数用于获取人类易读的字符串格式,gmtime获取计算机内部易于处理的结构化形式,即struct_time结构(e.g. 后续时间格式化函数可使用)

说明2:struct_time结构字段

年 / 月 / 日 / 小时 / 分钟 / 秒 / 一周中第几日 / 一年中第几日 / 是否夏令时

5.3 时间格式化

5.3.1 time_struct --> 时间字符串

说明1:字符串格式化就是将time_struct类型表示的计算机内部时间根据格式化模板字符串的形式输出

说明2:格式化控制符

5.3.2 时间字符串 --> time_struct

上面介绍的是将时间变量"转换"为格式字符串,Python还支持其逆操作,即将格式字符串表示的时间"转换"为时间变量,此处需要使用strptime函数

说明:常用场景还是将系统时间转换为易于理解与处理的形式,逆向的转换只有在特定场景下才使用

格式化:time(浮点数) --> gmtime(struct_time) --> 格式化时间字符串

# 特定情况下才会使用

反格式化:格式化时间字符串 --> gmtime(struct time) --> time(浮点数)

5.4 程序计时函数

5.4.1 perf_counter函数

说明:由于perf_counter函数可以提供系统级精确时间计数值,所以可以用于程序性能分析

注意:perf_counter函数返回值单位为秒,并不是说精确值为秒,所以是可以有小数的;实际上精确值到微秒

5.4.2. sleep函数

6. 文本进度条实例

6.1 简单实现

import time
scale = 10
print("- - - - - -执行开始- - - - - -")
for i in range(scale + 1):a = "*" * ib = "." * (scale - i)c = (i / scale) * 100 # 完成百分比print("{:^3.0f}%[{}->{}]".format(c, a, b))time.sleep(0.1)
print("- - - - - -执行结束- - - - - -")

程序运行效果如下,

该程序要点如下,

① 变量scale用于控制输出进度条的进度

② 循环次数为(scale + 1)是因为要输出[0, scale]共(scale + 1)次状态

③ 变量a表示已完成部分(对应字符"*")

④ 变量b表示未完成部分(对应字符".")

⑤ 变量c表示已完成的百分比,是一个浮点数

6.2 单行动态刷新

单行刷新的本质就是用之后打印的字符覆盖之前的字符,这就要求做到2点,

① 打印不能换行

② 每次打印前需要回退到上次开始打印的位置

具体代码如下,

import time
for i in range(101):print("\r{:3}%".format(i), end="")time.sleep(0.1)

单行动态刷新的要点有2个,

① end=""

print函数在输出结尾处会自动产生一个'\n',即换行符,从而让光标自动移动到下一行行首

通过end=""修改了print函数end的默认值,即每次使用print函数输出时不换行。此时,系统输出指针就停留在上一次输出的行尾

② '\r'转义字符

'\r'转义字符表示回车,即每次输出时将输出指针移动到行首

二者结合就实现了单行动态刷新

说明:注意'\r'转义字符的刷新范围

6.3 带刷新的文本进度条

结合上述2个实例,便可实现带刷新的文本进度条,代码如下,

import time
scale = 50
print("执行开始".center(scale // 2, "-"))
start = time.perf_counter()
for i in range(scale + 1):a = "*" * ib = "." * (scale - i)c = (i / scale) * 100dur = time.perf_counter() - startprint("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end="")time.sleep(0.1)
print("\n" + "执行结束".center(scale // 2, "-"))

说明:该实例除了增加单行动态刷新功能,还增加了变量dur统计程序运行时间

Python程序设计语言基础03:基本数据类型相关推荐

  1. Python程序设计语言基础06(完):组合数据类型

    目录 1. 组合数据类型概述 2. 集合类型及操作 2.1 集合类型定义 2.1.1 集合类型概念 2.1.2 集合类型定义 2.2 集合操作符 2.3 集合处理方法 2.4 集合类型应用场景 2. ...

  2. Python程序设计语言基础01:Python基本语法元素

    目录 1. 编译和解释 1.1 编译 1.2 解释 2. 程序的基本编写方法IPO 2.1 含义 2.2 输入 2.3 输出 2.4 处理 3. 使用编程解决问题 3.1 问题的计算部分 3.2 编程 ...

  3. Python程序设计语言基础05:函数和代码复用

    目录 1. 函数的定义与使用 1.1 函数的理解和定义 1.1.1 函数的理解 1.1.2 函数的定义 1.2 函数的使用及调用过程 1.3 函数的参数传递 1.3.1 无参数传递 1.3.2 可选参 ...

  4. Python程序设计语言基础04:程序的控制结构

    目录 1. 程序的分支结构 1.1 单分支结构 1.2 二分支结构 1.3 多分支结构 1.4 条件判断及组合 1.4.1 条件判断 1.4.2 条件组合 2. BMI计算实例 3. 程序的循环结构 ...

  5. Python程序设计语言基础02:Python基本图形绘制

    目录 1. 不同编程语言的适用对象 2. 蟒蛇绘制实例 3. 库或类的引用 3.1 Python计算生态 3.2 库引入与import语法 3.2.1 引入库整体 3.2.2 引入库函数 4. tur ...

  6. Java程序设计语言基础03:Java中的程序执行流程

    目录 1. 简记部分 1.1 条件与循环 1.2 switch语句 1.3 continue与break 2. 变量的作用域 3. 从标准输入读取数据 4. 生成随机数 1. 简记部分 1.1 条件与 ...

  7. python程序设计与基础教程第六章上机实验_《Python程序设计与算法基础教程》教学大纲.doc...

    PAGE 1/ NUMPAGES 2 作者:江红.余青松 定价:59元 ISBN:9787302466833 <算法与程序设计>课程教学大纲 Programming and algorit ...

  8. 程序设计语言基础-知识点

    程序设计语言基础-知识点 程序设计语言就是人类跟计算机沟通的语言 分类 1.高级低级之分 高级 c/c++,java 等 低级 机器语言 汇编等 2.工作方式之分 编译程序:编译成目标程序后再执行.c ...

  9. Python入门——语言基础

    Python入门--语言基础 文章目录 Python入门--语言基础 一.标准输入和输出 二.变量和常量 三.运算符 四.选择结构 六.注释 七.逻辑行 一.标准输入和输出 1.标准输入(注意:inp ...

最新文章

  1. 面部识别技术走到十字路口?
  2. 产品经理必备知识之如何用CREATE模型对用户进行行为分析
  3. win8.1出现 called runscript when not marked in progress
  4. Linux运维实战之DNS的高级配置(转发器、视图等)
  5. 工作296:el-table使用
  6. Java:线程并发工具类
  7. 《深入理解Java虚拟机》第6章 类文件结构
  8. DXperience重编译汉化的方法
  9. 《关键对话:如何高效能沟通》读书笔记
  10. 日常随笔——m1 macbook安装和配置qt
  11. 航测新旗舰|大疆M300+赛尔102S
  12. 电脑蓝屏了,错误代码:0x000000CE: DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
  13. 走近Harvest Moon:Moonbeam DeFi狂欢会
  14. STM32开发笔记112:ADS1258驱动设计——读寄存器
  15. 媒体观察:08年度十大硬件新闻
  16. 与计算机硬件关系最密切的软件是A,计算机应用基础试卷A1112_2.doc
  17. 业务埋点实现用户画像分析,助力精准推送
  18. Codeforces 891E Lust 生成函数
  19. html怎么做qq空间主页,QQ空间首页布局
  20. 【工业级3D视觉技术圈-欢迎加入】

热门文章

  1. Spring 源码解析 -- SpringWeb请求映射解析
  2. linux 认证 转发,一种基于Linux系统实现路由器的portal认证报文转发方法和装置
  3. 山师计算机二级考试科目,山师计算机应用技术考试试题与答案.doc
  4. php 魔术函数,PHP魔术函数、魔术常量、预定义常量
  5. java迷宫实训报告_Java综合实训报告-迷宫.doc
  6. php 连接socket服务器_PHP-Socket服务端客户端发送接收通信实例详解
  7. matlab中怎么画五维图,使用MatLab绘制散点图的方法
  8. 谷歌浏览器怎么网页截图
  9. 凯歌Java百家号_centos7下静默安装oracle11G图解配置 1
  10. python全屏模式 spider_我可以使用PIL以全屏模式显示图像吗?