Python 从入门到精通

文章目录

    • 第一阶段
    • 第二阶段


第一阶段

注释
    # print("Hello world!!!")
    单行注释(# + 空格)
    多行注释  ’‘’多行‘’‘

常见的转换语句
    int(x)
    float(x)
    str(x)

运算符
    +
    -
    *
    /
    //
    %
    ** 指数

Ctrl + D 复制当前行
Ctrl + Shift + F10 运行

字符串格式化
    name = "黑马程序员"
    age = 19800
    message = "学IT就来%s, 学费%s" % (name, age)
    print(message)

数字精度控制
    num1 = 11.345
    print("数字11.345宽度限制7,小数精度2, 结果: %7.2" % num1)

快速格式化
    name = "tl"
    year = 1996
    month = 8
    print(f"我是{name}, 出生于{year}年{month}月")

input语句
    name = input("请告诉我你是谁?")
    print("Get!!! 你是:%s" % name)

比较运算符
    ==
    !=
    >
    <
    >=
    <=

if 判断语句
    if age >= 18:
        print("我已经成年了")
    elif age == 18:
        print("我刚好成年了")
    else:
        print("未成年")

if 嵌套

获取1~10随机数
    import random
    num = random.randint(1 ,10)

while循环语句
    i = 0
    while i < 100:
        print("zj, I love you")
        i++

for 循环语句
    name = "itheima"
    for x in name:
        print(x)

range语句
    range(num) # 不含num本身
    range(num1, num2) # 含num1本身,不含num2本身
    range(num1, num2, step) # step步长

continue

break

函数的定义
    """
    功能:两数之和
    :param x:参数x的说明
    :param y:参数y的说明
    :return: 返回值的说明
    """
    def 函数名(传入参数):
        函数体
        return 返回值

None 无意义,空

数据容器
    列表(list)
        变量名称 = [元素1, 元素2, 元素3, 元素4]
        my_list = [[1, 2, 3], [4, 5, 6]]

        # 获取元素索引
        mylist = ["itcast", "python", "123"]
        index = mylist.index("123")
        print("Get!!! 你是:%s" % index)

        # 插入
        mylist.insert(1, "best")

        # 追加单个
        mylist.append('456')

        # 追加一批
        mylist2 = [1, 2, 3]
        mylist.extend(mylist2)

        # 删除
        del mylist[0]
        element = mylist.pop(0)

        # 删除某元素在列表中的第一个匹配项
        mylist.remove(2)

        # 清空列表
        mylist.clear()

        # 统计某元素在列表中内的数量
        mylist.count(2)

        # 统计列表中全部的元素数量
        count = len(mylist)

        # 列表的遍历-while循环
        def list_while_func():
            my_list = ['创智教育', '黑马程序员', 'python']

            index = 0
            while index < len(my_list):
                element = my_list[index]
                print(f"第{index}个元素{element}", end='\n')
                index += 1

        # 列表的遍历-for循环
        def list_for_func():
            my_list = [1, 2, 3, 4, 5]
            for element in my_list:
                print(f"列表元素有:{element}")

    元组(tuple)
        # 定义元组,唯一不同在于不可修改
        变量名称 = (元素, 元素, 元素, 元素, 元素)

        # 定义1个元素的元组
        t = ('hello', ) # 注意,必须要带有逗号

    字符串(str)
        # 只读不可修改,只能重新定义新的字符串
        # 通过下标索引取值
        my_str = "itheima and itcast"
        value = my_str[2]
        print(f"从字符串{my_str}取下标为2的元素,值是:{value}")

        # index 方法
        index = my_str.index("and")
        print(index)

        # replace 方法
        new_my_str = my_str.replace("it", "程序")
        print(f"将字符串{my_str}, 进行替换后得到{new_my_str}")

        # split 方法
        my_list = my_str.split(" ")
        print(f"{type(my_list)}")

        # strip 方法
        print(my_str.strip("ti")) # heima and itcas

        # 统计字符串某字符串的出现次数
        count = my_str.count("it")

        # 统计字符串的长度
        num = len(my_str)

    切片操作
        mylist = [0, 1, 2, 3, 4, 5, 6]
        result = mylist[1 : 4] # 步长默认是1, 所以可以省略不写

        my_tuple = (1, 2, 3, 4, 5, 6)
        result = my_tuple[:]

        my_str = "01234567"
        result = my_str[:]

        my_str1 = "01234567"
        result = my_str[::-1] # 等同于将序列反转了

    集合(set)
        # 不支持元素重复 {}
        变量名称 = {元素, 元素}
        my_set = {"123", "111", "222", "234", "111"}

        # 添加新元素
        my_set.add("hello")

        # 移除元素
        my_set.remove("234")

        # 随机取出一个元素
        element = my_set.pop()

        # 清空集合 clear

        # 取出2个集合的差集
        set1 = {1, 2, 3}
        set2 = {1, 5, 6}
        set3 = set1.differenece(set2) # {2, 3}

        # 消除2个集合的差集
        set1 = {1, 2, 3}
        set2 = {1, 5, 6}
        set1.differenece_update(set2) # set1 = {2, 3}, set2 = {1, 5, 6}

        # 2个集合合并
        set1 = {1, 2, 3}
        set2 = {1, 5, 6}
        set3 = set1.union(set2) # {1, 2, 3, 5, 6}

        # 统计集合元素数量len()
        num = len(set1) # 去重之后的结果

        # 集合的遍历
        # 集合不支持下标索引,不能用while 循环
        # 可以用for循环
        for element in set1:
            print(element)

    字典(dict)
        my_dict = {key:value, key:value , ……}
        my_dict = {'林俊杰': 77, '王力宏':88} # key 不可重复

        # 新增元素
        my_dict['张昕泽'] = 66

        # 更新元素
        my_dict['林俊杰'] = 80

        # 删除元素
        element = my_dict.pop('林俊杰')

        # 清空元素
        my_dict.clear()

        # 获取全部的key
        keys = my_dict.keys()

        # 遍历字典
        for key in my_dict:
            print(f"{my_dict[key]}")

        # 统计字典内的元素数量
        num = len(my_dict)

# max 最大元素
# min 最小元素

# 容器转换 list(容器), str(容器), tuple(容器), set(容器)

# sorted(my_list, reverse = True) # True 表示降序排序

# 函数多个返回值
def test_return():
    return 1, 2, 3
x, y, z = test_return()

# 传参
def user_info(name, age, gender)

# 关键字传参
user_info(name = '小明', gender = "男", age = 20)
user_info('小明', gender = "男", age = 20)

# 位置传递(元组)
def user_info(*args):
    print(args)

# 关键字传递(字典)
def user_info(**kwargs):
    print(kwargs)

# 函数作为参数传递
def test_func(compute):
    result = compute(1, 2)
    print(result)
def compute(x, y):
    return x + y

# lambda匿名函数
    # lambda 传入参数:函数体(一行代码)
    def test_func(compute):
        result = compute(1, 2)
        print(result)

    test_func(lambda x, y : x + y)

# 文件操作
    # 文件编码的概念 utf-8

    # open() 打开函数
    open(name, mode, encoding)

    mode : r, w, a

    f = open("python.txt", "r", encoding = "UTF-8")

    read(num) # num 不传入读取全部行
    readline() # 读取一行
    readlines() # 读取全部行,封装到列表中

    f.close() # 解除文件的占用

    time.sleep(10) # 延时操作

    with open 语法操作,自动close,避免忘掉
    eg:
        with open("python.txt", "r") as f:
            count = 0
            for line in f:
                line = line.strip()
                worlds = line.split(" ")
                for world in worlds:
                    if world == "123":
                        count += 1
            print(count)

    # 文件写入
    f.write('hello world')

    # 内容刷新(从内存写入文件中)
    f.flush()

# 了解异常
    try:
        print("捕获")
    except Exception as e:
        print("有异常")
    else:
        print("没有异常")
    finally:
        print("有没有异常我都要执行")

# 模块 就是一个python文件,里面有类,函数,变量
    import 模块名
    from 模块名 import 类、变量、方法
    from 模块名 import *
    import 模块名 as 别名
    from 模块名 import 功能名 as 别名

    import time
    time.sleep(10)

    from time import sleep
    sleep(5)

    from time import * # * 表示全部的意思

    # 运行时,__name__ 会被复制为 __main__,其他调用为FALSE 不会执行
    if __name__ == '__main__':

    # 只导入这个变量中的元素 __all__,只作用于*,可以手动导
    __all__ = ['test_A']

# python包 就是一个文件夹
import my_package.my_module1
my_package.my_module1.info_print1()

from my_package import myodule1
myodule1.info_print1()

# 第三方包
科学计算中:numpy
数据分析中:pandas
大数据计算中:pyspark, apache-flink
图形可视化:matplotlib, pyecharts
人工智能:tensorflow

pip install 包名称(国外)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

# 导入自定义包,模块
from my_utils import str_util
str = str_util.str_reverse("123456")
print(str)

# json
    import json

    # json转字符串
    data = [{"name": "长大山", "age": 11}, {"name": "王大锤", "age": 12}, {"name": "赵啸虎", "age": 13}]
    json_str = json.dumps(data, ensure_ascii=False)
    print(json_str)
    print(f"{json_str}")

    # 字符串转json
    str = json.loads(json_str)
    print(str)
    print(f"{str}")

    # eg 折线图
        from pyecharts.charts import Line

        # 创建一个折线图对象
        line = Line()

        # 给折线图对象添加x轴的数据
        line.add_xaxis(["中国", "美国", "英国"])

        # 给折线图对象添加y轴的数据
        line.add_yaxis("GDP", [30, 20, 10])

        line.set_global_opts(
            title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%")
        )

        # 通过render方法,将代码生成为图像
        line.render()

第二阶段

# 类
    class Student:
        name = None
        age = None
        tel = None

        def __init__(self, name, age, tel):
            self.name = name
            self.age = age
            self.tel = tel
            print("构造函数")

        def add(self, x, y):
            return x + y

        def print_info(self):
            print(f"姓名:{self.name}, 年龄:{self.age}, 电话:{self.tel}")


    student = Student("周杰伦", "31", "11111111111")
    sum = student.add(1, 2)
    print(sum)
    student.print_info()

# 封装
    就是在类成员变量或者类成员方法前面加上 "__"

# 继承
    class 类名(父类名):
        类内容体

# 空类
    # 同名成员变量,左边优先级更高
    class MyPhone(Phone, NFCReader, RemoteControl):
        pass

# 调用父类同名成员
    方法一:
        父类名.成员变量
        父类名.成员方法(self)
    方法二:
        super().成员变量
        super().成员方法()

# 为变量设置类型注解
    var_1: int = 10
    stu: Student = Student() # type:Student

# 为函数(方法)的类型注解--返回值注解
    def 函数方法名(形参: 类型, ....., 形参: 类型) -> 返回类型:
        pass

# Union 类型
from typing import Union
my_list: list[Union[str, int]] = [1 ,3, "itheima"]

# 多态
    class Animal:
        def speak(self):
             pass

    class Dog(Animal):
        def speak(self):
            print("汪汪汪")

    class Cat(Animal):
        def speak(self):
            print("喵喵喵")

    def make_noise(animal: Animal):
        animal.speak()

    dog = Dog()
    make_noise(dog)

# 数据库操作
    from pymysql import Connection

    # 获取到mysql数据库的链接对象
    conn = Connection(
        host="localhost",
        port=3306,
        user="root",
        password="admin@"
        autocommit=True # 设置自动提交
    )

    print(conn.get_server_info())

    # 获取游标对象
    cursor = conn.cursor()

    # 先选择数据库
    conn.select_db("mopc_web")

    # 执行sql语句
    # cursor.execute("create table test_pymysql(id INT, info varchar(255))")
    # cursor.execute("insert into student values(10001, '周杰伦')")

    # 通过commit确认
    conn.commit()

    cursor.execute("select * from test_pymysql")
    result: tuple = cursor.fetchall()
    for line in result:
        print(line)

    conn.close()

你可能感兴趣的:(python,python)