当前位置 博文首页 > AI19970205的博客:Python基础知识点六万字总结,爆肝一周熬夜完

    AI19970205的博客:Python基础知识点六万字总结,爆肝一周熬夜完

    作者:[db:作者] 时间:2021-07-21 16:22

    大家好,我是辣条。

    今天给大家带来Python基础知识点的总结,不夸张的说我一周才写完,这才是第一弹,如果大家喜欢记得三连呦,我会火速更新下一弹,争取把这个系列做完,希望得到大家的支持。

    目录

    注释

    变量

    输出

    输入

    转换数据类型

    运算符

    条件语句

    ?循环

    字符串

    列表

    元组

    字典

    集合

    公共操作

    推导式

    函数一

    函数二

    函数三

    文件操作

    面向对象基础

    面向对象-继承

    面向对象-其他?

    异常

    模块和包


    注释

    • 注释的分类

      • 单行: # 注释内容,快捷键ctrl+/

      • 多行:""" 注释内容 """''' 注释内容 '''

    • 解释器不执行注释内容

    注释分为两类:==单行注释== 和 ==多行注释==。

    • 单行注释

    只能注释一行内容,语法如下:

    # 注释内容
    • 多行注释

    可以注释多行内容,一般用在注释一段代码的情况, 语法如下:

    """
        第一行注释
        第二行注释
        第三行注释
    """
    ?
    '''
        注释1
        注释2
        注释3
    '''

    快捷键: ==ctrl + /==

    变量

    变量就是一个存储数据的的时候当前数据所在的内存地址的名字而已。

    标识符

    标识符命名规则是Python中定义各种名字的时候的统一规范,具体如下:

    • 由数字、字母、下划线组成

    • 不能数字开头

    • 不能使用内置关键字

    • 严格区分大小写

    ?命名习惯

    • 见名知义。

    • 大驼峰:即每个单词首字母都大写,例如:MyName

    • 小驼峰:第二个(含)以后的单词首字母大写,例如:myName

    • 下划线:例如:my_name

    认识数据类型

    检测数据类型的方法:type()

    a = 1
    print(type(a)) ?# <class 'int'> -- 整型
    ?
    b = 1.1
    print(type(b)) ?# <class 'float'> -- 浮点型
    ?
    c = True
    print(type(c)) ?# <class 'bool'> -- 布尔型
    ?
    d = '12345'
    print(type(d)) ?# <class 'str'> -- 字符串
    ?
    e = [10, 20, 30]
    print(type(e)) ?# <class 'list'> -- 列表
    ?
    f = (10, 20, 30)
    print(type(f)) ?# <class 'tuple'> -- 元组
    ?
    h = {10, 20, 30}
    print(type(h)) ?# <class 'set'> -- 集合
    ?
    g = {'name': 'TOM', 'age': 20}
    print(type(g)) ?# <class 'dict'> -- 字典

    ?输出

    作用:程序输出内容给用户

    print('hello Python')
    ?
    age = 19
    print(age)
    ?
    # 需求:输出“今年我的年龄是19岁”

    格式化符号

    格式符号转换
    ==%s==字符串
    ==%d==有符号的十进制整数
    ==%f==浮点数
    %c字符
    %u无符号十进制整数
    %o八进制整数
    %x十六进制整数(小写ox)
    %X十六进制整数(大写OX)
    %e科学计数法(小写'e')
    %E科学计数法(大写'E')
    %g%f和%e的简写
    %G%f和%E的简写

    转义字符

    • \n:换行。

    • \t:制表符,一个tab键(4个空格)的距离。

    结束符

    print('输出的内容', end="\n")

    在Python中,print(), 默认自带end="\n"这个换行结束符,所以导致每两个print直接会换行展示,用户可以按需求更改结束符。

    ?输入

    在Python中,程序接收用户输入的数据的功能即是输入。

    input("提示信息")

    输入的特点

    • 当程序执行到input,等待用户输入,输入完成之后才继续向下执行。

    • 在Python中,input接收用户输入后,一般存储到变量,方便使用。

    • 在Python中,input会把接收到的任意用户输入的数据都当做字符串处理。

    转换数据类型

    函数说明
    ==int(x [,base ])==将x转换为一个整数
    ==float(x )==将x转换为一个浮点数
    complex(real [,imag ])创建一个复数,real为实部,imag为虚部
    ==str(x )==将对象 x 转换为字符串
    repr(x )将对象 x 转换为表达式字符串
    ==eval(str )==用来计算在字符串中的有效Python表达式,并返回一个对象
    ==tuple(s )==将序列 s 转换为一个元组
    ==list(s )==将序列 s 转换为一个列表
    chr(x )将一个整数转换为一个Unicode字符
    ord(x )将一个字符转换为它的ASCII整数值
    hex(x )将一个整数转换为一个十六进制字符串
    oct(x )将一个整数转换为一个八进制字符串
    bin(x )

    将一个整数转换为一个二进制字符串

    ?转换数据类型常用的函数

    • int()

    • float()

    • str()

    • list()

    • tuple()

    • eval()

    运算符

    算数运算符

    运算符描述实例
    +1 + 1 输出结果为 2
    -1-1 输出结果为 0
    *2 * 2 输出结果为 4
    /10 / 2 输出结果为 5
    //整除9 // 4 输出结果为2
    %取余9 % 4 输出结果为 1
    **指数2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2
    ()小括号小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

    赋值运算符

    运算符描述实例
    =赋值=右侧的结果赋值给等号左侧的变量

    复合赋值运算符

    运算符描述实例
    +=加法赋值运算符c += a 等价于 c = c + a
    -=减法赋值运算符c -= a 等价于 c = c- a
    *=乘法赋值运算符c *= a 等价于 c = c * a
    /=除法赋值运算符c /= a 等价于 c = c / a
    //=整除赋值运算符c //= a 等价于 c = c // a
    %=取余赋值运算符c %= a 等价于 c = c % a
    **=幂赋值运算符c ** = a 等价于 c = c ** a

    比较运算符

    运算符描述实例
    ==判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False)如a=3,b=3,则(a == b) 为 True
    !=不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False)如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True
    >运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假如a=7,b=3,则(a > b) 为 True
    <运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假如a=7,b=3,则(a < b) 为 False
    >=运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True
    <=运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假如a=3,b=3,则(a <= b) 为 True

    逻辑运算符

    运算符逻辑表达式描述实例
    andx and y布尔"与":如果 x 为 False,x and y 返回 False,否则它返回 y 的值。True and False, 返回 False。
    orx or y布尔"或":如果 x 是 True,它返回 True,否则它返回 y 的值。False or True, 返回 True。
    notnot x布尔"非":如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not True 返回 False, not False 返回 True

    条件语句

    假设一个场景:

    其实这里所谓的判断就是条件语句,即条件成立执行某些代码,条件不成立则不执行这些代码

    语法

    if 条件:
     ? ?条件成立执行的代码1
     ? ?条件成立执行的代码2
     ?  ......
    

    if...else...

    作用:条件成立执行if下方的代码; 条件不成立执行else下方的代码。

    if 条件:
     ? ?条件成立执行的代码1
     ? ?条件成立执行的代码2
     ?  ......
    else:
     ? ?条件不成立执行的代码1
     ? ?条件不成立执行的代码2
     ?  ......
    

    实例:工龄判断

    age = int(input('请输入您的年龄:'))
    if age < 18:
     ? ?print(f'您的年龄是{age},童工一枚')
    elif (age >= 18) and (age <= 60):
     ? ?print(f'您的年龄是{age},合法工龄')
    elif age > 60:
     ? ?print(f'您的年龄是{age},可以退休')

    拓展:age >= 18 and age <= 60可以化简为18 <= age <= 60

    if嵌套

    if 条件1:
        条件1成立执行的代码
     ? ?条件1成立执行的代码
     ? ?
     ? ?if 条件2:
     ?      条件2成立执行的代码
     ? ? ? ?条件2成立执行的代码
     ? 
    

    应用:猜拳游戏

    需求分析:

    • 参与游戏的角色

      • 玩家

        • 手动出拳

      • 电脑

        • 随机出拳

    • 判断输赢

      • 玩家获胜

      玩家电脑
      石头剪刀
      剪刀
      石头
      • 平局

        • 玩家出拳 和 电脑出拳相同

      • 电脑获胜

    随机做法:

    1. 导出random模块

    2. random.randint(开始,结束)

    """
    提示:0-石头,1-剪刀,2-布
    1. 出拳
    玩家输入出拳
    电脑随机出拳
    ?
    2. 判断输赢
    玩家获胜
    平局
    电脑获胜
    """
    ?
    # 导入random模块
    import random
    ?
    # 计算电脑出拳的随机数字
    computer = random.randint(0, 2)
    print(computer)
    ?
    player = int(input('请出拳:0-石头,1-剪刀,2-布:'))
    ?
    # 玩家胜利 p0:c1 或 p1:c2 或 p2:c0
    if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
     ? ?print('玩家获胜')
    ?
    # 平局:玩家 == 电脑
    elif player == computer:
     ? ?print('平局')
    else:
     ? ?print('电脑获胜')

    三目运算符

    三目运算符也叫三元运算符。

    语法如下:

    值1 if 条件 else 值2

    快速体验:

    a = 1
    b = 2
    ?
    c = a if a > b else b
    print(c)
    

    ?循环

    循环的作用:让代码更高效的重复执行。

    循环的分类

    在Python中,循环分为whilefor两种,最终实现效果相同。

    while的语法

    while 条件:
     ? ?条件成立重复执行的代码1
     ? ?条件成立重复执行的代码2
     ?  ......
    

    while的应用

    计算1-100累加和

    分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果 + 下一个数字( 前一个数字 + 1)。

    i = 1
    result = 0
    while i <= 100:
     ? ?result += i
     ? ?i += 1
    ?
    # 输出5050
    print(result)

    注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成1-100做累加。

    计算1-100偶数累加和

    分析:1-100的偶数和,即 2 + 4 + 6 + 8....,得到偶数的方法如下:

    • 偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加

    • 初始值为0 / 2 , 计数器每次累加2

    方法一:条件判断和2取余数则累加

    # 方法一:条件判断和2取余数为0则累加计算
    i = 1
    result = 0
    while i <= 100:
     ? ?if i % 2 == 0:
     ? ? ? ?result += i
     ? ?i += 1
    ?
    # 输出2550
    print(result)

    方法二:计数器控制

    # 方法二:计数器控制增量为2
    i = 0
    result = 0
    while i <= 100:
     ? ?result += i
     ? ?i += 2
    ?
    # 输出2550
    print(result)

    while循环嵌套

    故事梗概:有天女朋友又生气了,惩罚:说3遍“媳妇儿, 我错了”,这个程序是不是循环即可?但如果女朋友说:还要刷今天晚饭的碗,这个程序怎么书写?

    while 条件:
     ? ?print('媳妇儿, 我错了')
    print('刷晚饭的碗')

    但如果女朋友还是生气,把这套惩罚要连续3天都执行,有如何书写程序?

    while 条件:
        while 条件:
            print('媳妇儿, 我错了')
        print('刷晚饭的碗')

    while 条件1:
        条件1成立执行的代码
        ......
        while 条件2:
            条件2成立执行的代码
            ......

    总结:所谓while循环嵌套,就是一个while里面嵌套一个while的写法,每个while和之前的基础语法是相同的。

    for循环

    语法

    for 临时变量 in 序列:
        重复执行的代码1
        重复执行的代码2
        ......

    else

    循环可以和else配合使用,else下方缩进的代码指的是==当循环正常结束之后要执行的代码==。

    while...else

    需求:女朋友生气了,要惩罚:连续说5遍“媳妇儿,我错了”,如果道歉正常完毕女朋友就原谅我了,这个程序怎么写?

    i = 1
    while i <= 5:
        print('媳妇儿,我错了')
        i += 1
    print('媳妇儿原谅我了...')

    思考: 这个print是不是没有循环也能执行?

    语法

    while 条件:
        条件成立重复执行的代码
    else:
        循环正常结束之后要执行的代码

    示例

    i = 1
    while i <= 5:
        print('媳妇儿,我错了')
        i += 1
    else:
        print('媳妇原谅我了,真开心,哈哈哈哈')
    

    for...else

    语法

    for 临时变量 in 序列:
        重复执行的代码
        ...
    else:
        循环正常结束之后要执行的代码

    所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。

    示例

    str1 = 'itheima'
    for i in str1:
        print(i)
    else:
        print('循环正常结束之后执行的代码')

    总结

    • 循环的作用:控制代码重复执行

    • while语法

    while 条件:
        条件成立重复执行的代码1
        条件成立重复执行的代码2
        ......
    • while循环嵌套语法

    while 条件1:
        条件1成立执行的代码
        ......
        while 条件2:
            条件2成立执行的代码
            ......
    • for循环语法

    for 临时变量 in 序列:
        重复执行的代码1
        重复执行的代码2
        ......
    • break退出整个循环

    • continue退出本次循环,继续执行下一次重复执行的代码

    • else

      • while和for都可以配合else使用

      • else下方缩进的代码含义:当循环正常结束后执行的代码

      • break终止循环不会执行else下方缩进的代码

      • continue退出循环的方式执行else下方缩进的代码

    字符串

    字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

    a = 'hello world'
    b = "abcdefg"
    print(type(a))
    print(type(b))

    注意:控制台显示结果为<class 'str'>, 即数据类型为str(字符串)。

    字符串输出

    print('hello world')
    ?
    name = 'Tom'
    print('我的名字是%s' % name)
    print(f'我的名字是{name}')

    字符串输入

    在Python中,使用input()接收用户输入。

    • 代码

    name = input('请输入您的名字:')
    print(f'您输入的名字是{name}')
    print(type(name))
    ?
    password = input('请输入您的密码:')
    print(f'您输入的密码是{password}')
    print(type(password))
    

    切片

    切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

    语法

    序列[开始位置下标:结束位置下标:步长]

    注意

    1. 不包含结束位置下标对应的数据, 正负整数均可;

    2. 步长是选取间隔,正负整数均可,默认步长为1。

    体验

    name = "abcdefg"
    ?
    print(name[2:5:1]) ?# cde
    print(name[2:5]) ?# cde
    print(name[:5]) ?# abcde
    print(name[1:]) ?# bcdefg
    print(name[:]) ?# abcdefg
    print(name[::2]) ?# aceg
    print(name[:-1]) ?# abcdef, 负1表示倒数第一个数据
    print(name[-4:-1]) ?# def
    print(name[::-1]) ?# gfedcba

    修改

    所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。

    • replace():替换

    1. 语法

    字符串序列.replace(旧子串, 新子串, 替换次数)

    注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数。

    1. 快速体验

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:hello world he itcast he itheima he Python
    print(mystr.replace('and', 'he'))
    # 结果:hello world he itcast he itheima he Python
    print(mystr.replace('and', 'he', 10))
    # 结果:hello world and itcast and itheima and Python
    print(mystr)

    注意:数据按照是否能直接修改分为==可变类型==和==不可变类型==两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。

    • split():按照指定字符分割字符串。

    1. 语法

    字符串序列.split(分割字符, num)

    注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。

    1. 快速体验

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:['hello world ', ' itcast ', ' itheima ', ' Python']
    print(mystr.split('and'))
    # 结果:['hello world ', ' itcast ', ' itheima and Python']
    print(mystr.split('and', 2))
    # 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python']
    print(mystr.split(' '))
    # 结果:['hello', 'world', 'and itcast and itheima and Python']
    print(mystr.split(' ', 2))

    注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。

    • join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。

    1. 语法

    字符或子串.join(多字符串组成的序列)
    1. 快速体验

    list1 = ['chuan', 'zhi', 'bo', 'ke']
    t1 = ('aa', 'b', 'cc', 'ddd')
    # 结果:chuan_zhi_bo_ke
    print('_'.join(list1))
    # 结果:aa...b...cc...ddd
    print('...'.join(t1))

    • capitalize():将字符串第一个字符转换成大写。

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:Hello world and itcast and itheima and python
    print(mystr.capitalize())

    注意:capitalize()函数转换后,只字符串第一个字符大写,其他的字符全都小写。

    • title():将字符串每个单词首字母转换成大写。

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:Hello World And Itcast And Itheima And Python
    print(mystr.title())

    • lower():将字符串中大写转小写。

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:hello world and itcast and itheima and python
    print(mystr.lower())

    • upper():将字符串中小写转大写。

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON
    print(mystr.upper())

    判断

    所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。

    • startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。

    1. 语法

    字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
    1. 快速体验

    mystr = "hello world and itcast and itheima and Python ? "
    ?
    # 结果:True
    print(mystr.startswith('hello'))
    ?
    # 结果False
    print(mystr.startswith('hello', 5, 20))

    • endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。

    1. 语法

    字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
    1. 快速体验

    mystr = "hello world and itcast and itheima and Python"
    ?
    # 结果:True
    print(mystr.endswith('Python'))
    ?
    # 结果:False
    print(mystr.endswith('python'))
    ?
    # 结果:False
    print(mystr.endswith('Python', 2, 20))

    • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False。

    mystr1 = 'hello'
    mystr2 = 'hello12345'
    ?
    # 结果:True
    print(mystr1.isalpha())
    ?
    # 结果:False
    print(mystr2.isalpha())

    • isdigit():如果字符串只包含数字则返回 True 否则返回 False。

    mystr1 = 'aaa12345'
    mystr2 = '12345'
    ?
    # 结果: False
    print(mystr1.isdigit())
    ?
    # 结果:False
    print(mystr2.isdigit())

    • isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False。

    mystr1 = 'aaa12345'
    mystr2 = '12345-'
    ?
    # 结果:True
    print(mystr1.isalnum())
    ?
    # 结果:False
    print(mystr2.isalnum())