一、python基础

Markdown语法:Typora工具

  • 标题:# 内容,一级标题
  • 引用:> 内容
  • 无序列表:- 内容 ,Tab键嵌套
  • 有序列表:1. 内容
  • 代码:三个`
  • 图片: ![](图片路径)
  • 指定图片路径:

# 安装typora
https://www.ittel.cn/archives/10903.html

001 计算机基础和环境搭建

1、计算机基础

  • 计算机组成:硬件、软件

  • 操作系统:

    • windows,优点:生态牛逼、工具多;缺点:略慢、收费。【个人的电脑】

    • linux,优点:资源占用少、免费;缺点:工具少、告别游戏。【企业的服务器】

    • mac,优点:生态还行、工具差不多都有、用户体验和交互; 缺点:不能玩游戏

  • 软件(应用程序):程序员开发的一大堆代码

  • 编程语言:软件,是由程序员使用“编程语言”开发出来的一大堆代码的集合。

  • 解释器(实时翻译)、编译器(全文翻译、目标程序)

    • 编译器、解释器,就是一个翻译官,将代码翻译成计算机能够识别的命令。

2、学习编程的本质(三件事)

  • 选择语言:选择一门编程语言,在自己的电脑上安装此编程语言相关的编译器/解释器。
  • 编写代码:学习编程语言的语法规则,根据语法规则 + 业务背景,设计并开发你的软件(代码集合)。
  • 运行代码:使用“编译器、解释器” 去运行自己写的代码。

3、编程语言

  • 语言分类
    • 翻译:解释型(python)、编译型(C)
    • 高低:低级语言(机器、汇编)、高级语言(python、C、java)
  • python火爆原因
    • 语法简洁 、 适合小白学习
    • 类库强大
    • 开发效率极高
  • Python的解释器
    • CPython【主流】:底层是由C语言开发出来的Python解释器。
    • IPython、Jython、PyPy、IronPython、RubyPython
  • CPython解释器的版本
    • 2.x,目前最新的Python2.7.18。(2020后不再维护)
    • 3.x,目前最新的3.9.0版本。

4、环境搭建

  • 安装Python解释器:python3.9

    • 终端运行:在终端输入“解释器路径 代码路径”
    • 配置环境变量:方便在任意目录下调用解释器
  • 安装Pycharm编辑器

https://www.python.org/downloads/release/python-390/

https://www.jetbrains.com/pycharm/download/other.html

002 快速上手

1、编码(密码本)

  • 编码:自然语言和机器语言之间的映射
  • 常见:ascii、unicode、utf-8、gbk、…
  • 注意:文件保存和打开时的编码要保持一致,否则会乱码。

2、print输出

  • 默认print在尾部会加换行符“/n”
  • 想要不换行,可以使用end=“”

3、数据类型

  • 整型(int):支持加、减、乘、除、取余、指数等操作
  • 字符串(str):单行(" “)、多行(”“” “”");加(拼接)、乘(重复)
  • 布尔型(bool):True 、 False

4、类型转换(创建新值)

  • 转换为整形:int(…)
  • 转换为字符串:str(…)
  • 转换为布尔型:bool(…)

5、变量

  • 创建并赋值:name = “ssc”
  • 变量名的命名规范:组成开头关键字,见名知意下划线。
    • 只能由“字母、数字、下划线”组成
    • 不能以数字开头
    • 不能用Python内置的关键字
    • 下划线连接(小写)
    • 见名知意
  • 变量的内存指向

6、注释

  • 单行:#
  • 多行:“”" “”"

7、输入

  • 格式:name = input(“请输入用户名:”)
  • 注意:用户输入的任何内容本质上都是字符串类型。

8、if条件语句

  • 单分支、双分支、多分支
  • 嵌套

003 Python基础

1、循环语句

  • while 循环(次数不确定)
  • 循环控制变量:break(跳出本层循环)、continue(跳过本次循环)
  • while else:当while后的条件不成立时,else中的代码就会执行。(若执行了break,则else不执行)

2、字符串格式化

  • 字符串格式化,以更便捷的形式实现字符串的拼接。

  • %

    • text = “我叫%s” % “ssc”
    • text = “我叫%s,今年%d岁” % (name, age):位置传参(一一对应)
    • message = “%(name)s过来呀,%(user)s今天不在。” % {“name”: “死鬼”, “user”: “ssc”}:关键字传参(顺序可乱)
    • 输出 %(转义):80%%
  • format

    • text = “我叫{}”.format(“ssc”)
    • text = “我叫{},今年{}岁”.format(“ssc”,18):位置传参(一一对应)
    • text = “我叫{0},今年{1}岁”.format(“ssc”,18):序号传参(可复用)
    • text = “我叫{n1},今年{age}岁,真名是{n1}。”.format(n1=“ssc”, age=18):关键字传参(顺序可乱)
  • f:Python3.6版本,可分行,更便捷。(推荐)

    • name = “喵喵”
      age = 19
      text = f"嫂子的名字叫{name},今年{age}岁"

    • v2 = f"嫂子今年{22:#b}岁"
      print(v2) # 二进制:0b10110

      v3 = f"嫂子今年{22:#o}岁"
      print(v3) # 八进制:0o26

      v4 = f"嫂子今年{22:#x}岁"
      print(v4) # 十六进制:0x16

3、运算符

  • 常见的运算符
    • 算数运算符
    • 比较运算符
    • 赋值运算符
    • 成员运算符
    • 逻辑运算符
  • 运算符优先级
    • 先算数,后比较,非与或
    • 绝招:加括号
  • 面试题
    • A and B:A真看B
    • A or B:A假看B
    • 如果遇到多个and 和or的情况,先计算and再计算or

004 进制和编码

1、Python代码运行方式

  • 脚本式(文件:长久保存):解释器路径 源码路径
  • 交互式(终端:临时保存)

2、进制

  • 计算机中底层所有的数据都是以 010101的形式存在(图片、文本、视频等)。
  • 进制转换
    • 十进制转其他
      • 转二进制:bin( )
      • 转八进制:oct( )
      • 转十六进制:hex( )
    • 其他转十进制
      • 二进制:int(“0b11001”, base=2)
      • 八进制:int(“0o27”, base=8)
      • 十六进制:int(“0x1c”, base=16)

3、计算机中的单位

  • b(bit),位
  • B(byte),字节
  • KB(kilobyte),千字节
  • M(Megabyte),兆
  • G(Gigabyte),千兆
  • T(Terabyte),万亿字节

4、编码

  • **ascii编码:ascii码规定使用1个字节来表示字母与二进制的对应关系,共计2方 = 256。
  • **gbk编码:**中日韩等亚洲国家的文字编码;单字节、双字节(1个汉字对应2个字节)
  • **unicode万国码:**全球文字;ucs2(2字节)、ucs4(4字节);浪费空间、在内存中使用
  • utf-8编码:
    • 包含所有文字和二进制的对应关系,全球应用最为广泛(1个汉字对应3个字节)
    • 本质上是对unicode的压缩,用尽量少的二进制去与文字进行对应。(文件存储、网络传输)
  • Python中的编码与解码:
    • 字符串(str) “ssc媳妇叫铁锤” unicode处理 一般用于内存
      字节(byte) b"sscfdsfdsdfskd" utf-8编码 or gbk编码 一般用于文件存储、网络传输
    • 字符串转换为字节类型(编码):data = name.encode(“utf-8”)
    • 字节转换为字符串类型(解码):text = data.decode(“utf-8”)

005 数据类型(上)

1、整型(int)

  • 定义:number = 10
  • 功能:加减乘除
  • 转换:int( )
  • 长整型(long):python3已弃用
  • 地板除:
    • 2.x:print(9/2) # 4
    • 3.x:print(9/2) # 4.5

2、布尔型(bool)

  • 定义:data = False
  • 转换:整数0、空字符串、空列表、空元组、空字典转换为布尔值时均为False
  • 如果在 if、while 后面写一个值当做条件时,会默认转换为布尔类型,然后再做条件判断。

3、字符串(str)

  • 定义:name = “sxk”
  • 个性:
    • 开头:str.startswith()
    • 结尾:str.endswith()
    • 判断十进制:str.isdecimal()
    • 判断整型(数字、序号):str.isdigit()
    • 移除字符串两边指定的字符 :str.strip()两边、str.lstrip()左边、str.rstrip()右边
    • 大写:str.upper()
    • 小写:str.lower()
    • 替换:str.replace(“原文”,“替换”)
    • 切割(列表 ):str.split(“切割符”,切割次数)、str.lsplit()左边、str.rsplit()右边
    • 拼接:str1 = “拼接符”.join(拼接对象)
    • 格式化:str1 = str.format()
    • 字符串转字节(编码):data = str.encode(“utf-8”)
    • 字节转字符串(解码):str = data.decode(“utf-8”)
    • 个性展示:
      • 居中:str.center(20, ‘*’)
      • 居左:str.ljust(20, ‘*’)
      • 居右:str.rjust(20, ‘*’)
    • 左侧补0:str.zfill(10)
  • 共性
    • 拼接(加)
    • 重复(乘)
    • 长度:len(str)
    • 索引取值(单个字符):str[]
    • 范围切片(多个字符):str[起始:终止:步长]
    • 倒序:str[-1: :-1]
    • 循环取单个字符:
      • while:索引、len()
      • for:range、len()
  • 转换:str()
  • 字符串是不可变类型

006 数据类型(中)

1、列表(list)

  • 定义:列表是一个有序可变的容器,可以存放多种不同类型的元素;list = []

  • 个性:

    • 增加:

      • 尾部追加一个元素:list.append()
      • 批量追加一组元素:list.extend( [] )
      • 指定位置插入元素:list.insert(索引, 元素)
    • 删除:

      • 删除首次出现元素:list.remove();找不到,会报错,先判断,无返回值

      • 根据索引删除元素:

        • list.pop() # 默认删除末尾元素
        • item = list.pop(索引) # 删除指定元素,有返回值(删除的元素)
        • del list[索引]
      • 清空列表所有元素:list.clear()

    • 按照元素获取索引:index = list.index();找不到,会报错

    • 排序:list.sort() ,升序; list.sort(reverse=True),降序

    • 反转:list.reverse()

  • 共性:

    • 拼接(加)

    • 重复(乘)

    • 成员:“ssc” in list

    • 长度:len(list)

    • 索引(单个元素):读改删

    • 查看:list[索引]

    • 修改:list[索引] = 新值

    • 删除:

      • list.remove(元素) # 直接删除元素、无返回值
      • list.pop(索引) # 按照索引删除、有返回值
        • del list[索引] # 按照索引删除、无返回值
        • 注意:超出索引范围会报错。
    • 切片(多个元素):读改删

    • 查看:list[起始:终止]

      • 修改:list[起始:终止] = 修改的列表 ; 超出前后范围就放最前最后
      • 删除:del list[起始:终止]
    • 步长:

    • 查看:list[起始:终止:步长]

    • 反转:

      • list.reverse() # 改变原列表(对象.方法)
      • list[::-1] # 得到新列表
    • for循环:

      • 注意:循环时切忌边获取、边删除,会改变后面元素索引,导致跳过部分元素
      • 解决:倒着删除,for index in range(len(user_list) - 1, -1, -1):
    • 转换:list(字符串、元组、集合)

    • 嵌套:增(append)删(del)改查

2、元组(tuple)

  • 定义:元组是一个有序不可变的容器,在里面可以存放多个不同类型的元素。tuple=(,)

  • 不可变:我儿子永远不能换成是别人,但我儿子可以长大;

    ​ 若元组的元素是可变类型,其值可变,但类型不变。

  • 注意:在元组的最后多加一个逗号,用于标识它是一个元组。

  • 共性

    • 拼接(加)
    • 重复(乘)
    • 长度:len()
    • 索引:一个,tup[0]
    • 切片:多个,tup[0:2]
    • 步长:个性多个,tup[1:4:2]
    • 反转:
      • 字符串、元组:步长
        • str[-1: :-1]
        • tup[::-1]
      • 列表:
        • 步长,list[::-1];
        • reverse,list.reverse
    • for循环:目前,只有 str、list、tuple 可以被for循环。
  • 转换:tuple(),目前只有字符串、列表可以转换为元组。

  • 嵌套:元组和列表都可以充当容器,其内部可以放很多元素,并且也支持元素内的各种嵌套。

007 数据类型(下)

1、集合(set)

  • 定义:集合是一个 无序 、可变(元素不可变)、不允许数据重复的容器。

  • 空:

    • 空列表:v1 = []、v11 = list()
    • 空元组:v2 = ()、v22 = tuple()
    • 空集合:v3 = set()
    • 空字典:v4 = {} 、v44 = dict()
    • Python的None(其他语言的null)表示空时,节省内存
  • 个性:

    • 增加:set.add()
    • 删除:set.discard()
    • 交集:&、intersection
    • 并集:|、union
    • 差集:-
  • 共性:

    • -,计算差集
    • &,计算交集
    • |,计算并集
    • 长度:len()
    • for循环遍历
  • 转换:set();int、str、list、tuple、dict都可以转换为集合。

  • 集合的存储原理:

    • 哈希函数

    • 因存储原理,集合的元素必须是**可哈希(不可变类型)**的值;

      即集合的元素只能是 int、float、bool、str、tuple 。

    • 因存储原理特殊,集合的查找效率非常高

  • 嵌套:子元素也要可哈希

2、字典(dict)

  • 定义:字典是无序键不重复 且元素只能是键值对可变的容器
  • 键值对:键必须可哈希(不可变),值任意类型。
  • 个性:
    • 获取值:
      • dict.get(键);键不存在,默认返回 None,可设置返回值(推荐使用)
      • dict[键];键不存在,则报错(字典的索引是键,列表的索引是数字)
    • 获取所有的键:dict.keys();Python3中返回的是高仿列表,它可以被循环显示。
    • 获取所有的值:dict.values()
    • 获取所有的键值:dict.items(),item是一个元组 (键,值)
    • 设置值(新增没有的键值对):
      • dict.setdefault(“age”, 18)
    • 更新字典键值对:
      • dict.update({“age”:14,“name”:“ssc”})
      • 无键,直接添加;有键,则更新其值
    • 移除指定键值对:dict.pop(“age”) # 返回删除的值
    • 按照顺序移除(后进先出):dict.popitem() # 以元组形式返回删除的键值对
  • 共性
    • |,求并集(Python3.9新加入)
    • 长度:len(dict)
    • 是否包含:in
      • 键:“age” in info = “age” in info.keys()
      • 值:“ssc” in info.values()
      • 键值对:(“age”, 12) in info.items()
    • 增删改查:
      • 索引:通过键为索引去获取值时,键不存在会报错;get不会报错,返回None
      • 新增:键不存在、setdefault
      • 修改:键已存在、update
      • 删除:del info[“age”];键不存在时会报错
    • for循环:可以对其中的键、值、键值进行循环;
    • 转换:dict( [ (“k1”, “v1”), [“k2”, “v2”] ] )
    • 存储原理、速度快
    • 嵌套:
      • 字典的键必须可哈希(list、set、dict不可哈希)
      • 字典的值可以是任意类型
      • 字典的键和集合的元素在遇到布尔值 和 1、0 时,需注意重复的情况。
      • 元组的元素不可以被替换。

3、浮点型(float)

  • 在浮点型转换为整型时,会将小数部分去掉。

  • 想要保留小数点后N位,round(v1,3) # 四舍五入

  • 在项目中如果遇到精确的小数计算应该怎么办?

    • import decimal

      v1 = decimal.Decimal(“0.1”)

008 阶段总结

1、代码规范

  • 命名

    • 文件夹:小写 & 小写下划线连接
    • 文件:小写 & 小写下划线连接
    • 变量:
      • 全局变量:大写 & 大写下划线连接
      • 局部变量:小写 & 小写下划线连接
  • 注释

    • 文件夹:创建名为"__init__.py"的文件,里面用"“” “”"写注释
    • 文件:“”" “”"
    • 代码:单行 #、多行 “”" “”"
    • todo:版本更新
  • 条件嵌套:最多不超过三层

  • 逻辑处理:简单逻辑先处理

  • 循环:少循环、多干事

  • PEP8规范

2、知识补充

  • pass:保证语法的完整性
  • is比较:
    • is,用于表示内存地址是否一致。
    • ==,用于比较两个值是否相等。
  • 位运算:
    • &,与(都为1):计算标志位
    • |,或(只要有一个为1)
    • ~,非(取反)
    • ^,异或(值不同)
    • <<,左移动(扩大)
    • >>,右移动(缩小)

思维导图

链接:https://www.zhixi.com/view/61e9ec41
密码:5125
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值