ToB企服应用市场:ToB评测及商务社交产业平台

标题: python黑马条记 [打印本页]

作者: 卖不甜枣    时间: 2024-7-29 17:09
标题: python黑马条记
运算符:


算术运算符:

   +  
  -  减
  *  
  /  
  //  整除
  %  取余
  **  求平方
  除法计算得出的效果都是小数
  
赋值运算符:

   标准赋值: =
  复合赋值:  += 、 -= 、 *= 、 /= 、//= 、 **=
  
字符串:

字符串拓展内容:

字符串在Python中有多种定义情势:
   单引号定义法:name  =  ‘黑马步调员’
  双引号定义法:name  =  ”黑马步调员”
  三引号定义法:name  =  “””黑马步调员”””
  在字符串内包含引号:使用转义字符 \ 解除引号的效用
  1. name = “  \”黑马程序员\”  ”
复制代码
字符串拼接:

通过 +号 直接拼接
  1. Name = “小王”
  2. Address = “北京”
  3. Print(“我的名字是”+name+”,我住在”+address)
复制代码
留意:无法和非字符串范例进行拼接

字符串格式化:

 %占位符   % 变量
  1. Name = “黑马程序员”
  2. Message = “学IT来:%s” % name
  3. Print(message)
复制代码
  %s :         将内容转换成字符串,放入占位位置
  %d :         将内容转换为整数,放入占位位置
  %f :         将内容转换为浮点型,放入占位位置
  1. Name = “传智播客”
  2. Setup_year = 2006
  3. Stock_price = 19.99
  4. Message = “%s , 成立于:%d , 我今天的股价是:%f” % (name , setup_year , stock_price)
复制代码

字符串的数字精度控制:

使用辅助符号m.n来控制数据的宽度和精度,如%5d、%5.2f、%.2f,m和.n均可省略
假如m比数字自己宽度还小,m不见效
.n对小数部分做精度限制的同时,还会对小数部分做四舍五入
  1. Num1 = 11
  2. Num2 = 11.345
  3. Print(“数字11宽度限制5,结果是:%5d” % num1)
  4. Print(“数字11.345宽度限制7,小数精度2,结果是:% 7.2f” % num2)
  5. Print(“数字11.345不限制,小数精度2,结果是:% .2f” % num2)
复制代码
字符串格式化的快速写法:

f {变量} {变量}
  1. Name = “传智播客”
  2. Setup_year = 2006
  3. Stock_price = 19.99
  4. Print(f”我是{name},我成立于:{setup_year}年,我今天的股价是{stock_price}”)
复制代码
对表达式进行格式化:

在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码
  1. Print(“1+1的结果是: %d” % (1+1))
  2. Print(f”1*2的结果是:{1*2}”)
  3. Print(“字符串在Python中的类型名是:%s” % type(“字符串”))
复制代码
获取键盘输入的数据:

Input(“提示语句”)
默认接收范例都是字符串
  1. Name = str(input(”请输入姓名”))
  2. Age = int(input(“请输入年龄”))
  3. 小数 = float(input(“请输入一个小数”))
复制代码
布尔范例和比较运算符:



比较运算符的使用:

   == 、 != 、 > 、< 、>= 、<=
  If语句的根本格式:

If-else语句:
If-elif-else语句:
判定语句的嵌套:
通过如下代码,可以定义一个变量num,变量内存储随机数字
  1. Import random
  2. Num = random.randint(1,10)
复制代码
while循环的基础语法:


While循环的嵌套:
同判定语句的嵌套一样,循环语句的嵌套,要留意空格缩进
多层循环,基于空格缩进来决定层次关系
留意条件的设置,制止出现无穷循环(除非真的需要无穷循环)

For循环的基础语法:


For 临时变量 in 待处置惩罚数据集(序列):
循环满意条件时执行的代码
同while循环差异,for循环是无法定义循环条件的
只能从被处置惩罚的数据会集,依次取出内容进行处置惩罚
以是,for循环无法构建无穷循环(被处置惩罚的数据集不大概无穷大)

Range语句:

待处置惩罚数据集,严格来说,称之为:序列范例
序列范例指,其内容可以一个个依次取出的一种范例,包罗:
字符串、列表、元组
Range语句的语法格式:
  1. Range(num)
  2. Range(num1,num2)
  3. Range(num1,num2,step),#step指数字之间的步长
复制代码
For循环临时变量作用域:
作用域限定为循环内,如需访问临时变量,可以预先在循环外定义它
For循环的嵌套运用:

Continue和break:

   Continue        中断本次循环,直接进入下一次循环
  Break             直接竣事所在循环
  
函数:

函数是组织好哒,可重复使用的,用来实现特定功能的代码段
提高了步调的复用性,减少重复性代码,提高开发服从

无返回值的语法:
   Def 函数名():
          函数体
  函数名()
  Def 函数名(x,y):
函数定义中,提供的x和y,称为:情势参数(形参),表现函数声明将要使用2个参数
函数调用中,提供的参数称为现实参数(实参),表现函数执行时真正使用的参数值
返回值的语法:
   Def 函数名(参数...):
          函数体
  Return 返回值
  变量 = 函数名(参数)
  Return后的代码不会执行
假如函数没有使用return语句返回数据,函数返回None
None范例的应用场景:

   ①用在函数无返回值上
  ②用在if判定上
  在if判定中,None等同于False
  一样平常用于在函数中主动返回None,配合 if 判定做相关处置惩罚
  ③用于声明无内容的变量上
  定义变量,但临时不需要变量有具体值,可以用None来代替
  
函数的嵌套调用:
在一个函数中,调用另外一个函数
函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容

变量在函数中的作用域:

变量作用域指的是变量的作用范围(变量在那边可用,在那边不可用)
重要分为两类:局部变量和全局变量
   局部变量:定义在函数体内部的变量,即只在函数体内部见效
  全局变量:在函数体内、外都能见效的变量
  Global关键字,可以在函数内部声明变量为全局变量

数据容器:

一种可以容纳多份数据的数据范例,容纳的每一份数据称之为一个元素
每一个元素,可以是任意范例的数据,如字符串、数字、布尔
数据容器根据特点的差异,如:
是否支持重复元素
是否可以修改
是否有序等
分为五类,分别是:
列表(list)、元组(tuple)、字符串(str)、聚集(set)、字典(dict)

列表:


列表的数据范例没有任何限制,以致元素也可以是列表,如许就定义了嵌套列表
从列表中取出特点位置的数据可以使用:下标索引
要留意下标索引的取值范围,超出范围无法取出元素,并且会报错
取出列表元素:
List[0,1,2...]
取出嵌套列表的元素:
List[1][2]
列表的方法:

   查询某元素的下标:                                列表.index(元素)
  修改特点下标索引的值:                        列表[下标] = 值
  插入元素:                                              列表.insert(下标,元素)
  在列表尾部追加”单个”元素:                  列表.append(元素)
  在列表尾部追加”一批”元素:                 列表.extend(其他数据容器) 将其他数据内容取出,依次追加到列表尾部
  删除元素:                                              Del 列表[下标]   列表.pop(下标)
  删除某元素在列表中的第一个匹配项:  列表.remove(元素)
  清空列表:                                             列表.clear()
  统计某元素在列表内的数量:                列表.count(元素)
  统计列表中全部的元素数量:                Len(列表)
  
  列表的遍历:                                        While循环  、For循环
  






元组:

Tuple = ()
元组一旦定义完成,就不能修改
元组只有一个数据,这个数据后面要添加逗号,否则是字符串范例
元组可以嵌套,和列表一样,支持下标索引
假如元组里面嵌套了list,那么list里面的元素可以修改
支持for循环和while循环

再识字符串:

支持下标(索引)
同元组一样,字符串是一个:无法修改的数据容器
   查找元素的下标:                                           Index()
  字符串的替换:                                               字符串.replace(字符串1,字符串2)
  将字符串中的全部字符串1替换为字符串2,不是修改字符串自己,而是得到了一个新字符串
  字符串的分割:                             ``                字符串.split(分隔字符串)
  按照指定的分割符字符串,将字符串划分为多个字符串,并存入列表对象中,字符串自己稳定,而是得到一个列表对象
  字符串的规整操作(去前后空格):                 字符串.strip()
  字符串的规整操作(去前后指定字符串):         字符串.strip(字符串)
  留意:传入的是”ab”,其实就是:”a”和”b”都会移除,是按照单个字符
  统计字符串中某字符的出现次数:                      Count()
  统计字符串的长度:                                            Len()
   



数据容器(序列)的切片:

序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以视为序列
   切片:                序列[起始下标:竣事下标:步长]
  步长为负数表现,反向取(留意,起始下标和竣事下标也要反向标记)
  从头至尾:         序列[ : ]
  将序列反转:     序列[ : :-1]
  字符串巨细比较的方式:

ASCLL码表:
字符串是按位比较,也就是一位位进行对比
小写字母>大写字母>数字
聚集(set):

聚集是无序的,以是聚集不支持下标索引,不能用while遍历
   定义空聚集:                          变量名称 = set()
  添加新元素:                          变量名称.add()
  移除元素:                              变量名称.remove()
  从聚会会议集随机取出元素:        聚集.pop()
  从聚会会议集随机取出一个元素,效果:会得到一个元素的效果。聚集自己被修改,元素被移除
  清空聚集:                              聚集.clear()
  取两个聚集的差集:                聚集1.difference(聚集2)
  取出聚集1有,聚集2没有的,效果:得到一个新聚集,聚集1和聚集2稳定
  消除两个聚集的差集:            聚集1.difference_update(聚集2)
  对比聚集1和聚集2,在聚集1内,删除和聚集2相同的元素,效果:聚集1被修改,聚集2稳定
  两个聚集合并:                        聚集1.union(聚集2)
  将聚集1和聚集2组合成新聚集,效果:得到新聚集,聚集1和聚集2稳定
  

字典:

定义:同样使用{},不外存储的元素,是一个个的键值对
字典的嵌套:
字典的key和value可以是任意数据(key不能是字典)。
字典内key不能重复,重复天剑等同于覆盖原有数据
字典不可以通过下标索引,而是通过key去获取value,不能使用while循环
   从嵌套字典中获得信息:                Dict[key1][key2]
  新增或更新元素:                          字典[key] = value
  
  删除元素:                                     字典.pop(key)
  清空字典:                                     字典.clear()
  获取全部的key:                            字典.keys()
  
  遍历:                                            ①通过获取到全部的key来完成遍历
                                                         ②直接对字典进行for循环,每一次循环都是直接得到key
  统计字典的元素数量:                    Len()函数
  

数据容器对比:


数据容器的通用统计功能:

起首,在遍历上:
5类数据容器都支持for循环遍历
列表、元组、字符串支持while循环,聚集、字典不支持(无法下标索引)
   Len(容器)         统计容器的元素个数
  Max(容器)         统计容器的最大元素
  Min(容器)          统计容器的最小元素
  通用范例转换:
   List(容器)         将给定容器转换为列表
  Str(容器)          将给定容器转换为字符串
  Tuple(容器)      将给定容器转换为元组
  Set(容器)          将给定容器转换为聚集
  
字典可以转换为其他范例
容器的通用排序功能:
   Sorted(容器,[reverse = True])                                降序
  Sorted(容器),Sorted(容器,[reverse = False]) 升序
  排序的效果通通变成列表对象

函数进阶:

函数多返回值:
假如一个函数出现两个return,步调只执行第一个return,缘故原由是因为return可以退出当前函数,导致return下方的代码不执行

函数的多种传参方式:

函数有四种常见的参数使用方式:
位置参数:


关键字参数:


缺省参数:

设置默认值同一的都在最后,否则会报错

不定长参数:


 位置通报的数据情势是元组

 关键字通报的数据情势是字典


匿名函数:

函数作为参数通报:
函数自己是可以作为参数,传入另一个函数中进行使用的
将函数传入的作用在于:传入计算逻辑,而非传入数据
Lambda匿名函数:

Python的文件操作:

编码有许多,以是要使用准确的编码,才能对文件进行准确的读写操作
UTF-8是目前全球通用的编码格式
除非有特别需求,否则,一律以UTF-8格式进行文件编码即可

文件的读取操作:

文件的操作步骤:
打开文件
读写文件
关闭文件



假如在步调中多次调用read(),那么下一个read,会在上一个read的结尾处接着读取的


文件的关闭:
   f.close()
  最后通过close,关闭文件对象,也就是关闭对文件的占用
假如不调用close,同时步调没有制止运行,那么这个文件将不停被Python步调占用


 文件的写出操作:


Close方法内置了flush的功能,假如不调用flush,但是调用close,同样文件也会写入内容
   w模式,文件不存在,w会创建文件;文件存在,w会清空原有内容
  文件的追加:


可以使用”\n”来写出换行符

非常

在大概发生非常的地方进行捕获,当非常出现时,提供办理方式,制止步调无法运行



捕获所有非常:
  1. Try:
  2. Except Exception as e:
  3.     Print(e)
复制代码



Python的模块:

模块(module)的导入:





自定义模块:



差异模块,同名的功能,假如都被导入,按照调用顺序,后导入的会覆盖先导入的

__main__变量的功能:
if __name__ == ‘__main__’:表现,只有当步调是直接执行的才会进入if内部,假如是被导入的,则if无法进入
_all_变量的功能:
_all_变量是一个列表,可以控制import*的时候,哪些功能可以被导入

自定义Python包(package):




安装第三方包:




可视化案例:


Json数据格式:

json的范例是字符串


   Json_str = json.dumps(data,ensure_ascii = False)
  假如有中文的话,传入ensure_ascii = False参数,来确保中文正常转换
   Pyecharts模块介绍:


Pyecharts快速入门:


配置选项:

Pyecharts模块中有许多的配置选项,常用到2个类别的选项:
全局配置选项
系列配置选项

 

 数据处置惩罚:






  1. from pyecharts.charts import Line
  2. import json
  3. from pyecharts.options import *
  4. # 处理数据
  5. f_us = open("D:/美国.txt", "r", encoding="UTF-8")
  6. us_data = f_us.read()  # 美国的全部内容
  7. f_jp = open("D:/美国.txt", "r", encoding="UTF-8")
  8. jp_data = f_us.read()  # 日本的全部内容
  9. f_in = open("D:/美国.txt", "r", encoding="UTF-8")
  10. in_data = f_us.read()  # 印度的全部内容
  11. # 去掉不合JSON规范的开头
  12. us_data = us_data.replace("jsonp_1629344292311_69436", "")
  13. jp_data = jp_data.replace("jsonp_1629350871167_29498", "")
  14. in_data = in_data.replace("jsonp_1629350745930_63180", "")
  15. # 去掉不合JSON规范的结尾
  16. us_data = us_data[::-2]
  17. jp_data = jp_data[::-2]
  18. in_data = in_data[::-2]
  19. # JSON转Python字典
  20. us_dict = json.loads(us_data)
  21. jp_dict = json.loads(jp_data)
  22. in_dict = json.loads(in_data)
  23. # 获取trend key
  24. us_trend_data = us_dict['data'][0]['trend']
  25. jp_trend_data = jp_dict['data'][0]['trend']
  26. in_trend_data = in_dict['data'][0]['trend']
  27. # 获取日期数据,用于x轴,取2020年(到314下标结束)
  28. us_x_data = us_trend_data['updateDate'][:314]
  29. jp_x_data = jp_trend_data['updateDate'][:314]
  30. in_x_data = in_trend_data['updateDate'][:314]
  31. # 获取确认数据,用于y轴,取2020年(到314下标结束)
  32. us_y_data = us_trend_data['list'][0]['data'][:314]
  33. jp_y_data = jp_trend_data['list'][0]['data'][:314]
  34. in_y_data = in_trend_data['list'][0]['data'][:314]
  35. # 创建一个折线图对象
  36. line = Line()
  37. # 给折线图对象添加x轴的数据
  38. line.add_xaxis(us_x_data)
  39. # 给折线图对象添加y轴的数据
  40. line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=True))
  41. line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=True))
  42. line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=True))
  43. # 设置全局选项
  44. line.set_global_opts(
  45.     title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%"),
  46.     legend_opts=LegendOpts(is_show=True),
  47.     toolbox_opts=ToolboxOpts(is_show=True),
  48.     visualmap_opts=VisualMapOpts(is_show=True)
  49. )
  50. # 通过render方法,将代码生成为图像
  51. line.render()
  52. # 关闭文件对象
  53. f_us.close()
  54. f_jp.close()
  55. f_in.close()
复制代码


数据可视化案例:


 基础舆图演示:

  1. from pyecharts.charts import Map
  2. from pyecharts.options import VisualMapOpts
  3. map = Map()
  4. data = [
  5.     ("北京", 99),
  6.     ("上海", 199),
  7.     ("湖南", 299),
  8.     ("台湾", 199),
  9.     ("安徽", 299),
  10.     ("广州", 399),
  11.     ("湖北", 599)
  12. ]
  13. map.add("地图", data, "china")
  14. # 设置全局配置,定制分段的视觉映射
  15. map.set_global_opts(
  16.     visualmap_opts=VisualMapOpts(
  17.         is_show=True,     #是否显示
  18.         is_piecewise=True,#是否分段
  19.         pieces=[
  20.             {"min": 1, "max": 9, "label": "1-9", "color": "#CCFFFF"},
  21.             {"min": 10, "max": 99, "label": "1-9", "color": "#FF6666"},
  22.             {"min": 100, "max": 500, "label": "100-500", "color": "#990033"},
  23.         ]
  24.     )
  25. )
  26. # 绘图
  27. map.render("基础地图演示.html")
复制代码

 河南省舆图疫情绘制:




  1. import json
  2. from pyecharts.charts import Map
  3. from pyecharts.options import *
  4. # 读取文件
  5. f = open("D:/疫情.txt", "r", encoding="UTF-8")
  6. data = f.read()
  7. # 关闭文件
  8. f.close()
  9. # 获取河南省数据
  10. # json数据转换为python字典
  11. data_dict = json.loads(data)
  12. # 取到河南省数据
  13. cities_data = data_dict['areaTree'][0]['children'][3]['children']
  14. # 准备数据为元组并放入list
  15. data_list = []
  16. for city_data in cities_data:
  17.     city_name = city_data['name'] + '市'
  18.     city_confirm = city_data['total']['confirm']
  19.     data_list.append((city_name, city_confirm))
  20. # 手动添加济源市的数据
  21. data_list.append(("济源市", 5))
  22. # 构建地图
  23. map = Map()
  24. map.add("河南省疫情分布地图", data_list, "河南")
  25. # 设置全局选项
  26. map.set_global_opts(
  27.     title_opts=TitleOpts(title="河南省疫情地图"),
  28.     visualmap_opts=VisualMapOpts(
  29.         is_show=True,       # 是否显示
  30.         is_piecewise=True,  # 是否分段
  31.         pieces=[
  32.             {"min": 1, "max": 9, "label": "1-99", "color": "#CCFFFF"},
  33.             {"min": 100, "max": 999, "label": "100-999", "color": "#FF6666"},
  34.             {"min": 1000, "max": 4999, "label": "1000-4999", "color": "#990033"},
  35.             {"min": 5000, "max": 9999, "label": "5000-9999", "color": "#CC3333"},
  36.             {"min": 10000, "max": 99999, "label": "10000-99999", "color": "#FF9966"},
  37.             {"min": 100000, "label": "100000+", "color": "#FFFF99"}
  38.         ]
  39.     )
  40. )
  41. # 绘图
  42. map.render("河南省疫情地图.html")
复制代码



 基础柱状图构建:

 



 基础时间线柱状图绘制:



对象:

初识对象:


成员方法:




构造方法:


 魔术方法:



 


   "=="         是判定两个变量或实例是不是指向同一个内存空间
  "equals"  是判定两个变量或实例所指向的内存空间的值是不是相同
   封装:

面向对象三大特性:
封装、继承、多态


继承:



多继承中,假如父类有同名方法或属性,先继承的优先级高于后继承
pass关键字的作用:
pass是占位语句,用来保证函数(方法)或类定义的完整性,表现无内容,空的意思


 范例注解:

Ctrl+p:弹出提示


变量的范例注解:





函数和方法的范例注解:



 Union联合范例注解:

使用前需要导包


多态:




MySQL:

SQL基础和:DDL:




 SQL支持注释:
   单行注释:-- 注释内容(--后面一定要有一个空格)
  单行注释:#注释内容(#后面可以不加空格,保举加上)
  多行注释:/*注释内容*/
  
 

SQL-DML:

DML是指数据操作语言,用来对数据库中表的数据记录进行更新



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4