python3基础语法回顾

python保留字

import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

注释

python中单行注释以#开头,多行注释用三个单引号或者三个双引号将注释括起来。

行与缩进

python最具特色的就是使用缩进来表示代码快。缩进的空格数是可以变化的,但同一代码块的语句必须包含同样的缩进空格数。 > 注:一般是4个空格一缩进

数据类型

python中数有四种类型:整数int、长整数、浮点数和复数 > 注:查看某一数据类型可以使用type(xxx)查看

字符串

python中单引号和双引号使用完全相同

使用三引号可以制定一个多行字符串

转义符

自然字符串,通过在字符串前加r或者R。

python允许处理unicode字符串,加前缀u或者U

字符串是不可变的。

按字面意思级联字符串,如”this” “is” “string”会被自动转换为this is string。

python基本数据类型

python中变量不需要声明。每个变量在使用前必须赋值,变量赋值后才会被创建。

python中变量即是变量,没有类型。此处所说的类型是变量所在的内存中对象的类型。

python3中有6个标准的数据类型:

  1. Numbers 数字

    • 支持int、float、boot、complex复数

    • 数值运算: **+ 加法 - 减法 *乘法 / 除法,得到浮点数 // 除法,得到一个整数,即取整 % 取余 ** 乘方**

    • python可以同时为多个变量赋值, 如a, b=1, 2

    • 一个变量可以通过赋值指向不同类型的对象

    • 混合计算时,python会把整形转换为浮点数

  2. String 字符串

    python中的字符串str用单引号或者双引号括起来,同时使用反斜杠转义特殊字符。如果不想让反斜杠发生转义,可以在字符串前面添加一个r表示原始字符串

    另外反斜杠也可以作为续行符,表示下一行是上一行的延续,也可以使用”’ “‘或”“” “”“跨越多行。

    字符串可以使用 + 运算符串连接在一起,或者使用 * 运算符重复:

    print('str'+'ing', 'my'*3)
    string mymymy
    

    Python中的字符串有两种索引方式,第一种是从左往右,从0开始依次增加;第二种是从右往左,从-1开始依次减少 > 注意,没有单独的字符类型,一个字符就是长度为1的字符串。

    还可以对字符串进行切片,获取一段子串。用冒号分隔两个索引,形式位变量[头下标:尾下标]。

    截取范围是前闭后开的,两个索引都可以省略

    python中的字符串不能被改变

  3. List 列表

    List(列表) 是 Python 中使用最频繁的数据类型。

    列表是写在方括号之间、用逗号分隔开的元素列表。列表中元素的类型可以不相同:

    >>> a = ['him', 25, 100, 'her']
    >>> print(a)['him', 25, 100, 'her']
    

    和字符串一样,列表同样可以被索引和切片,列表被切片后返回一个包含所需元素的新列表。详细的在这里就不赘述了。

    列表还支持串联操作,使用+操作符:

    >>> a = [1, 2, 3, 4, 5]
    >>> a + [6, 7, 8][1, 2, 3, 4, 5, 6, 7, 8]
    

    与Python字符串不一样的是,列表中的元素是可以改变的:

    >>> a = [1, 2, 3, 4, 5, 6]
    >>> a[0] = 9
    >>> a[2:5] = [13, 14, 15]
    >>> a[9, 2, 13, 14, 15, 6]
    >>> a[2:5] = []   # 删除
    >>> a[9, 2, 6]
    

    List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。

    注意:

    1. List写在方括号之间,元素用逗号隔开。
    2. 和字符串一样,list可以被索引和切片。
    3. List可以使用+操作符进行拼接。
    4. List中的元素是可以改变的。
  4. Tuple 元组

    元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号里,元素之间用逗号隔开。

    元组中的元素类型也可以不相同:

    >>> a = (1991, 2014, 'physics', 'math')
    >>> print(a, type(a), len(a))(1991, 2014, 'physics', 'math') <class 'tuple'> 4
    

    元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片(看上面,这里不再赘述)。

    其实,可以把字符串看作一种特殊的元组。

    >>> tup = (1, 2, 3, 4, 5, 6)
    >>> print(tup[0], tup[1:5])1 (2, 3, 4, 5)
    >>> tup[0] = 11  # 修改元组元素的操作是非法的
    

    虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

    构造包含0个或1个元素的tuple是个特殊的问题,所以有一些额外的语法规则:

    tup1 = () # 空元组tup2 = (20,) # 一个元素,需要在元素后添加逗号

    另外,元组也支持用+操作符:

    >>> tup1, tup2 = (1, 2, 3), (4, 5, 6)
    >>> print(tup1+tup2)(1, 2, 3, 4, 5, 6)
    

    string、list和tuple都属于sequence(序列)。

    注意:

    1. 与字符串一样,元组的元素不能修改。
    2. 元组也可以被索引和切片,方法一样。
    3. 注意构造包含0或1个元素的元组的特殊语法规则。
    4. 元组也可以使用+操作符进行拼接。

    元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号里,元素之间用逗号隔开。

    元组中的元素类型也可以不相同:

    >>> a = (1991, 2014, 'physics', 'math')
    >>> print(a, type(a), len(a))(1991, 2014, 'physics', 'math') <class 'tuple'> 4
    

    元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片(看上面,这里不再赘述)。

    其实,可以把字符串看作一种特殊的元组。

    >>> tup = (1, 2, 3, 4, 5, 6)
    >>> print(tup[0], tup[1:5])1 (2, 3, 4, 5)>>> tup[0] = 11  # 修改元组元素的操作是非法的
    

    虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

    构造包含0个或1个元素的tuple是个特殊的问题,所以有一些额外的语法规则:

    tup1 = () # 空元组tup2 = (20,) # 一个元素,需要在元素后添加逗号

    另外,元组也支持用+操作符:

    >>> tup1, tup2 = (1, 2, 3), (4, 5, 6)
    >>> print(tup1+tup2)(1, 2, 3, 4, 5, 6)
    

    string、list和tuple都属于sequence(序列)。

    注意:

    1. 与字符串一样,元组的元素不能修改。
    2. 元组也可以被索引和切片,方法一样。
    3. 注意构造包含0或1个元素的元组的特殊语法规则。
    4. 元组也可以使用+操作符进行拼接。
  5. Sets 集合

    集合(set)是一个无序不重复元素的集。

    基本功能是进行成员关系测试和消除重复元素。

    可以使用大括号 或者 set()函数创建set集合,注意:创建一个空集合必须用 set() 而不是 { },因为{ }是用来创建一个空字典。

    >>> student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
    >>> print(student)   # 重复的元素被自动去掉{'Jim', 'Jack', 'Mary', 'Tom', 'Rose'}
    >>> 'Rose' in student  # membership testing(成员测试)True
    >>> # set可以进行集合运算... 
    >>> a = set('abracadabra')
    >>> b = set('alacazam')
    >>> a{'a', 'b', 'c', 'd', 'r'}
    >>> a - b     # a和b的差集{'b', 'd', 'r'}
    >>> a | b     # a和b的并集{'l', 'm', 'a', 'b', 'c', 'd', 'z', 'r'}
    >>> a & b     # a和b的交集{'a', 'c'}>>> a ^ b     # a和b中不同时存在的元素{'l', 'm', 'b', 'd', 'z', 'r'}
    
  6. Dictionaries 字典

    字典(dictionary)是Python中另一个非常有用的内置数据类型。

    字典是一种映射类型(mapping type),它是一个无序的键 : 值对集合。

    关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。

    在同一个字典中,关键字还必须互不相同。

    >>> dic = {}  # 创建空字典
    >>> tel = {'Jack':1557, 'Tom':1320, 'Rose':1886}
    >>> tel{'Tom': 1320, 'Jack': 1557, 'Rose': 1886}
    >>> tel['Jack']   # 主要的操作:通过key查询1557
    >>> del tel['Rose']  # 删除一个键值对
    >>> tel['Mary'] = 4127  # 添加一个键值对
    >>> tel{'Tom': 1320, 'Jack': 1557, 'Mary': 4127}
    >>> list(tel.keys())  # 返回所有key组成的list['Tom', 'Jack', 'Mary']
    >>> sorted(tel.keys()) # 按key排序['Jack', 'Mary', 'Tom']
    >>> 'Tom' in tel       # 成员测试True
    >>> 'Mary' not in tel  # 成员测试False
    

    构造函数 dict() 直接从键值对sequence中构建字典,当然也可以进行推导,如下:

    >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]){'jack': 4098, 'sape': 4139, 'guido': 4127}
    >>> {x: x**2 for x in (2, 4, 6)}{2: 4, 4: 16, 6: 36}
    >>> dict(sape=4139, guido=4127, jack=4098){'jack': 4098, 'sape': 4139, 'guido': 4127}
    

    另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。

    注意:

    1. 字典是一种映射类型,它的元素是键值对。
    2. 字典的关键字必须为不可变类型,且不能重复。
    3. 创建空字典使用{}。

python交换变量

可以通过临时变量交换也可以用一种优雅的方式x, y = y, x

九九乘法表

for i in range(1, 10):
        for j in range(1, i+1):
            print('{}x{}={}\t'.format(i, j, i*j), end='')
        print()

代码结果

1x1=1
2x1=2   2x2=4
3x1=3   3x2=6   3x3=9
4x1=4   4x2=8   4x3=12  4x4=16
5x1=5   5x2=10  5x3=15  5x4=20  5x5=25
6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
9x1=9   9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81