第二章_Python语言基本语法元素 - 图1

第二章_Python语言基本语法元素

字符串(序列类型)

字符串也称字符序列

使用单引号或双引号均可

分类

单行字符串

  • 单行字符串可以嵌套使用单引号和双引号,但是不能嵌套使用单引号或双引号

    • print(‘这是一个’单行’字符串’)这是错误语法

      多行字符串

  • print(‘’’这是多行字符串第一行第二行第三行’’’)

    字符串索引

    字符串某个字符的检索为索引,即字符位置

    语法

  • 字符串或字符串变量[序号]

    • 正向序号
      • 0至N-1
    • 反向序号
      • -1至-N

        字符串切片

        a[start:stop:step]

  • 获取a字串的字串索引为start至stop-1的元素,start、stop和step为整数,step控制切片移动步幅

  • 切片结果单引号显示
    • 注意:交互式Python环境中仍然无单引号
    • print()省略单引号
  • 例子

    • 左闭右开,即不会取到stop的值

      • s[2:]
        • ‘中国人!’
      • s[1:5:2]
        • ‘是国’
          • 没有取到’!’
    • 取全部元素

      • list[:]

        format()方法基本使用

        字符串格式化方法

  • 用于解决字符串和变量同时输出时的格式安排问题

    语法

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

    • 模板字符串组成
      • 字符串
      • 槽位{}
        • 对应format()方法中逗号分隔的参数
        • 默认0排序对应后面参数0
        • 注意:有多少个参数,前槽位只能写存在的参数序号。就算2个槽位,如果参数只有一个,则前面槽位填序号的话只能填0

          例子

  • ‘{}曰:学而时习之,不亦{}’.format(‘孔子’,’说乎’)

  • ‘{1}曰:学而时习之,不亦{0}’.format(‘说乎’,’孔子’)

    format 方法的格式控制

    语法格式

  • {参数序号:格式控制标记}

    六格式控制标记(要按顺序输入参数)

  • 填充

    • 用于填充的单个字符空格为默认填充符
      • ‘{0:*^25}’.format(‘等级考试’)
        • 25个宽度内等级考试居中,其余空位由*填充
  • 对齐
    • 左对齐(默认)
      • <
    • 右对齐
      • >
    • 居中对齐
      • ^
        • ‘{0:^25}’.format(‘等级考试’)
  • 宽度
    • 槽位设定输出宽度
      • 注意:宽度<实际宽度,显示实际宽度
  • ,
    • 数字的千位分隔符,适用于整数和浮点数
  • .精度
    • 对于浮点数
      • 显示小数部分的精度
        • ‘{0:->24.3f}’.format(123.456789)
          • 参数0的值123.456789在24的宽度右对齐显示其余空格由-填充,至于小数点保留精度3位,其余舍弃
    • 对于字符串
      • 显示字符串的最大输出长度
        • ‘{0:.3}’.format(等级考试)
          • 参数0的值-等级考试只输出3位——等级考
  • 类型

    • 控制整数类型输出格式
      • b
        • 整数二进制方式(binary)
      • c
        • 整数的Unicode字符
      • d
        • 整数的十进制方式(decimal)
      • o
        • 整数的八进制方式(ordtal/ortonary)
      • x
        • 整数的小写十六进制方式(hexadecimal)
      • X
        • 整数的大写十六进制方式
    • 控制浮点数类型输出格式
      • e
        • 输出浮点数对于的小写字母e的指数形式
      • E
        • 输出浮点数对应的大写字符E的指数形式
      • f
        • 输出浮点数的标准浮点形式
      • %
        • 输出浮点数的百分比形式
    • 例子
      • ‘{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}’.format(425)

        字符串类型的操作

        字符串操作符

  • x+y

    • 连接两个字符串x与y
  • xn或nx
    • 复制n次字符串x
  • x in s

    • 若x是s的子串,返回True,否则返回False

      字符串处理函数

  • len(x)

    • 返回字符串x的长度,(以Unicode字符为计数单位,中英文字符及标点符号等都是1个长度单位)
  • str(x)
    • 返回任意类型x所对应的字符串形式
  • chr(x)
    • 返回Unicode编码x对应的单字符
  • ord(x)
    • 返回单字符x表示的Unicode编码
  • bin(x)
    • 返回整数x对应的二进制数
  • hex(x)
    • 返回整数x对应的十六进制数的小写形式字符串
  • oct(x)

    • 返回整数x对应的八进制数的小写形式字符串

      字符串处理方法

  • str.lower()

    • 返回字符串str的副本,全部字符小写
  • str.upper()
    • 返回字符串str的副本,全部字符大写
  • str.split(sep=None)
    • 返回一个列表,由str根据sep被分割的部分构成,省略sep默认以空格分隔
      • sep为分隔符
  • str.count(sub)
    • 返回sub子串出现的次数
  • str.replace(old,new)
    • 返回字符串str的副本,所有old子串替换为new
  • str.center(width,fillchar)
    • 字符串居中函数,fillchar参数可选
      • width宽度
      • fillchar填充字符
  • str.strip(chars)
    • 用于移除字符串头尾指定的字符(默认为空格或换行符)或chars中列出的字符序列。
  • str.join(item)

    • 将item变量的每一个元素后增加一个str字符串
    • ‘*’.join(‘你好啊’)
      • 在’你好’两个字符后增加*字符,最后一个字符不会增加

        字符串之间进行比较通过Unicode码

  • (‘3’,’2’)<)(‘a’,’b’)

    • 3的unicode为51,小于a的码97

      练习

  • 凯撒密码实例

    • 凯撒大帝对军事情报进行加密的算法,以替换方法将信息中的每一个英文字符循环替换为字母表序列中该字符的后面第三个字符,即循环右移3位
    • 加密
      • C密文=(P+3)mod26
    • 解密
      • P明文= (C-3)mod26
    • 代码实现
      • 法一
      • 法二
      • 法三

        类型判断和类型间转换

        判断变量类型

        type(x)

  • 判断变量x的类型

    两种类型转换

    隐式类型转换

  • 10/3

    • 转换成浮点数结果

      显式类型转换

  • int(x)

    • 转换成整数,x可是浮点数或字符串
    • 注意字符串是浮点数会报错
      • 可先float()转换再int()
  • float(x)
    • 转换成浮点数,x可是整数或浮点数
  • str(x)

    • 转换成字符串,x可是整数或浮点数

      列表(List)

      定义

      列表(序列)为Python最基本的数据结构,序列中每个元素都有一个数字-即位置,称为索引

      列表名 = [元素0,[元素1.1,元素1.2],元素2,元素3…..]

      列表元素不需类型相同

      列表查看

      查看列表元素

  • (指定索引)

    • 列表名[索引号]
    • 列表名[1][2]
      • 二维索引
  • (查看某个元素在列表中的个数,不存在则0)
    • list.count(元素)
  • (找到这个元素的索引,返回第一个,不存在则报错)

    • list.index(元素)

      查看列表

  • 查看列表元素个数

    • len(列表名)
  • 返回列表元素最大值

    • max(列表名)
    • min(列表名)

      列表添加元素

      (单个元素,末尾处)

  • 列表名.append(添加元素)

    (将两个列表连起来形成新列表)

  • 列表名1.extend(列表名2)

    (插入元素,单个元素,指定位置)

  • 列表名.insert(索引号,元素)

    列表删除元素

    (删除列表指定位置元素,默认为最后一个元素,并将删除的元素显示)

  • 列表名.pop()

    • 不输入参数默认删除列表最后一个元素,删除后显示删除的元素
  • 列表名.pop(列表索引位置)

    (删除一个索引片段,也可彻底删除整个列表)

  • del 列表名[索引号]

    • 删除单个元素
  • del 列表名[start:stop]
    • 删除列表片段
  • del 列表名

    • 删除整个列表

      (删除指定元素,从列表中搜索第一个,如果需要删除所有,则用for遍历remove)

  • 列表名.remove(元素)

    列表修改元素

    (直接赋值)

  • 列表名[索引位置] = 赋的值

    列表互相复制

    等号直接赋值

  • list1 = list2

    • 两个列表等价,修改一个影响另一个

      浅复制

  • copy()

    • 复制地址,两个list在内存中指向同一个地址

      深复制

  • deepcopy()

    • 新列表与原列表无关

      列表排序和反转

      #反转列表(逆序输出元素)

  • 列表名.reverse()

  • 列表名[::-1]

    • 逆序输出所有元素

      #列表排序,默认升序

  • 列表名.sort()

  • 列表名.sort(key = 可迭代对象,reverse = True)

    • 可选参数
      • key
        • 指定可迭代对象中的一个元素进行排序
      • reverse
        • True表示进行倒序排序
    • 例子
      • 列表名.sort(key = lambda x:x[1],reverse = True)
        • 以列表中第二个元素进行排序,倒序排序

          #sorted对列表排序

  • sorted(list)

    • sorted可以对所有可迭代的对象进行排序
    • sort只是应用在list上的方法

      注意:list中有字符串,数字时不能排序,排序针对同类型;sort 是应用在list上的方法,sorted 可以对所有可迭代的对象进行

      操作列表

      #打印元素对应的下标for i,v in enumerate(列表名)….print(‘index=%s:value=%s’%(i,v))

      #元组转换为列表

  • list(元组名)

    数据类型

    数值类型

    三种

  • 整数类型(int)

    • 4种表示方式
      • 二进制(Binary)
        • 引号符号
          • 0b或0B
          • 通过十进制数除2求的余数为二进制
      • 八进制(Octonary)
        • 引号符号
          • 0o或0O
      • 十进制(Decimal)
        • 无引号符号
      • 十六进制(Hexadecimal)
        • 引号符号
          • 0x或0X
    • 无取值范围限制
    • 计算机以二进制格式存储数值,进制之间的运算结果默认以十进制方式显示
  • 浮点数类型(float)
    • 小数点形式
    • 科学计数法
      • 十进制
      • 使用e或E作为幂的符号,以10为基数
    • 取值收到计算机系统限制
    • “不确定尾数”问题
      • round()函数可五舍六入去掉
  • 复数类型(complex)

    • a+bj形式表示
      • a表示实部
      • b表示虚部,虚部通过后缀j或J表示
        • b=1时1j的1不能省略,省略后表示变量j
    • 实部和虚部都是浮点数
    • 代码操作
      • 获取实部
        • (数值).real
      • 获取虚部
        • (数值).imag
    • 复数之间不能比较
      • 5+4j>2-3j无法进行比较
    • 如何判断复数
      • == complex

        字符串类型

        单引号和双引号作用相同

        字符串也称字符序列

  • 两种序号体系

    • 正向递增
      • [0,N-1]
        • 最左侧字符序号为0,依次向右递增,最右侧字符序号为N-1
    • 反向递减
      • [-1,-N]
        • 最右侧字符序为-1,依次向左递减,最左侧字符序号-N

          切片操作

  • 通过[N:M]格式获取的字符串子串

    • 正反序号体系可混合使用
    • 切片取值左闭右开,即右边数不取

      len()

  • 获取字符串长度

    其他注意:

  • char不是Python内置数据类型,是java

    输入、格式化输出

    输入、输出、格式化

    input()函数

  • 变量 = input(‘提示性文字’)

  • input()函数统一按照字符串类型输出

    eval()函数

  • 用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符内容

  • 常配合input赋值给一个变量,方便数字的输出(数值类型),因为input输出的都是字符串类型,通过eval可去掉引号,输入数字则为数值类型

    print()函数

  • print(待输出字符串或变量)

  • print()输出的字符串,统一表示为单引号
  • 可输出多个不同类型变量,用逗号分隔,结果里分隔显示为空格
    • +号可连接起来,不空格分隔
  • 格式化输出
    • print(‘整数{}和整数{}的差是:{}’,format(a,b,a-b))
  • print()输出结果默认换行,不希望换行可以通过end

    • print(a,end=’%’)
      • 以百分号结尾

        %格式化

  • print(‘广州华商学院的英文是%s’%华商学院)

    • %格式化,这里的华商学院是变量

      .format()格式化

  • print(‘广州华商学院的英文是{0}’.format(华商学院))

    f格式化

  • print(f’广州华商学院的英文是{华商学院}’)

    常见转义符

    \

  • 反斜杠符号

    \

  • 在行尾时,作为续行符

    \’

  • 单引号

    \”

  • 双引号

    \a

  • 响铃

    \b

  • 退格

    \e

  • 转义

    \000

  • \n

  • 换行

    \v

  • 纵向制表符

    \t

  • 横向制表符

    \r

  • 回车

    \f

  • 换页

    \oyy

  • 八进制yy表示的字符

    \xyy

  • 十六进制yy表示的字符

    填充和对齐

    print(‘1.{:^14}’.format(‘陈某某’))

  • ^表示居中对齐,14为宽度

    print(‘2.{:>14}’.format(‘陈某某’))

  • 表示右对齐,14为宽度

    print(‘1.{:<14}’.format(‘陈某某’))

  • <表示左对齐,14为宽度

    print(‘1.{:*<14}’.format(‘陈某某’))

  • *为填充符,<表示左对齐,14为宽度

    print(‘1.{:&>14}’.format(‘陈某某’))

  • &为填充符,>表示右对齐,14为宽度

    数值运算

    运算符

    x = y

  • 将y赋值给x

    x + y

  • 返回x + y的值

    x - y

  • 返回x - y的值

    -x

  • 返回x负数

    x * y

  • 返回x与y的积

    x / y

  • 返回x与y的商

    x // y

  • 返回x除y的整数部分

    x % y

  • 返回x与y之商的余数,也被称为模运算

    判断操作符

  • x < y

    • 判断x是否小于y,是返回真否则返回假
  • x <= y
    • 判断x是否小于等于y,是返回真否则返回假
  • x > y
    • 判断x是否大于y,是返回真否则返回假
  • x >= y
    • 判断x是否大于等于y,是返回真否则返回假
  • x == y
    • 判断x是否等于y,是返回真否则返回假
  • x != y
    • 判断x是否不等于y,是返回真否则返回假
  • x is y
    • 判断x的地址(id)是否等于y,是返回真否则返回假
  • x is not y

    • 判断x的地址(id)是否不等于y,是返回真否则返回假

      布尔值

  • 在Python中,任何非零的数值,非空的数据类型的布尔值为True。0、0.0、空类型、空的组织数据类型的布尔值都为False

  • True/False
  • 判断布尔值

    • bool(x)
      • 判断x的布尔值,结果返回True或False

        数值运算规则

        整数和浮点数运算输出结果:

  • 浮点数

    整数之间运算,结果与操作符相关,/除法运算结果:

  • 浮点数

    整数与浮点数与复数运算结果:

  • 复数

    增强赋值操作符

    由数值运算符与赋值运算符相连组成

  • a += 3

    • a = a +3

      增强赋值操作符之间不能有空格

  • x+ =3是错误语法

    Python内置数值运算函数

    abs(x)

  • 返回x的绝对值

    pow(x, y)

  • 返回x的y次方

  • x ** y

    • 相当于pow(x,y)

      divmod(x,y)

  • (x//y,x%3),输出元组形式的商与余数

    round(数值,保留位数)

  • 五舍六入保留数值的指定位数

    max(x1,x2,…,xn)

  • 计算N个数的最大值

    min(x1,x2,…,xn)

  • 计算N个数的最小值

    int(x)

  • 返回x的整数值

    float(x)

  • 返回x的浮点数

    complex(re, im)

  • 定义复数

    c.conjugate()

  • 返回复数的共轭复数

    程序的格式框架

    即段落格式,是Python语法的一部分,可提高代码的可读性和可维护性

    缩进

    缩进的意义

  • Python语言通过严格的”缩进”来表示程序逻辑

    • 表示程序间包含与层次关系

      缩进的实现

  • 通过Tab键实现或4个空格

    缩进的报错

  • unexpected indent

    注释

    是什么

  • 会被编译器或解释器略去,用于程序员对代码的说明

    如何使用

  • 单行注释

    • 注释

  • 多行注释

    • ‘’’注释’’’

      续行符

      是什么

  • 增强代码可读性,防止单行代码过长

    如何使用

  • \

    注意事项

  • 续行符后不允许存在空格,直接换行书写

    语法元素的名称

    Python语言的基本单位是“单词”,少部分单词由Python语言规定的称为保留字。大部分单词由用户定义,称为标识符,用于标识变量、函数、类、模块和其他对象的名称

    命名规则

    ①长度不受限制,字符必须为字母、数字、下划线_或中文

    ②变量名第一个字符必须为字母或下划线

    ③Python区分大小写

    ④禁止使用Python关键字命名

    函数命名小写字母

    类命名驼峰命名

    变量

    概念

  • 保存和表示数据值的一种语法元素

    赋值

  • 赋值语句并不会复制指向的值,而只是标记和重新标记既有值。因此,无论变量指向的对象有多大,多复杂,赋值语句的效率都非常高。

  • 多变量赋值
    • x,y,z = 1,’China’,”中国”
    • 注意:x=2,y=3是错误语法,多变量赋值通过x,y=2,3
    • 连续赋值
      • x=y=z+1
        • 先算z+1赋给y再把y赋给x
      • x=y=z=1
        • 1赋给z再z赋给y,y赋给x
  • 变量交换值

    • x,y = y,x

      类型查看

  • type(变量名)

    变量存储地址查看

  • id(变量名)

    保留字

    也称为keyword关键字。由语言内部定义并保留使用。Python3.X中35个保留字

    大小写敏感

  • 如True

    标识符

    用于标识变量、函数、类、模块和其他对象的名称