Python基础复习【第二弹】【黑马】

本篇是观看b站黑马视频所做的笔记第一弹,为99-126节。

b站-黑马Python

import json
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 1.1 将一个列表转换为json
data = [{"name":"张大山","age":13},{"name":"小虎","age":12}]
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))# 1.2 将字典转换为json
d = {"name":"小明","addr":"芜湖"}
json_str2 = json.dumps(d,ensure_ascii=False)
print(type(json_str2))
print(json_str2)# 1.3 将Json字符串转换为py数据类型
s = '[{"name":"小花","age":12},{"name":"小纳","age":15}]'
l = json.loads(s)
print(type(l))
s1 = '{"name":"小明","addr":"芜湖"}'
l1 = json.loads(s1)
print(type(l1))# 2.1 基础折线图
line = Line()
line.add_xaxis(["中国","美国","英国"])
line.add_yaxis("GDP",[20,30,10])
line.set_global_opts(title_opts = TitleOpts(title = "GDP展示", pos_left="center", pos_bottom="1%"),legend_opts = LegendOpts(is_show=True),toolbox_opts = ToolboxOpts(is_show=True),visualmap_opts = VisualMapOpts(is_show=True)
)
# line.render()# 处理数据f_us = open("D:/PyCharm/Test/YiQingData/美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()   # 美国的全部内容f_jp = open("D:/PyCharm/Test/YiQingData/日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()   # 日本的全部内容f_in = open("D:/PyCharm/Test/YiQingData/印度.txt", "r", encoding="UTF-8")
in_data = f_in.read()   # 印度的全部内容# 去掉不合JSON规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")# 去掉不合JSON规范的结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]# JSON转Python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)# 获取trend key
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']# 获取日期数据,用于x轴,取2020年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]# 获取确认数据,用于y轴,取2020年(到314下标结束)
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]# 生成图表
line = Line()       # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data)   # x轴是公用的,所以使用一个国家的数据即可
# 添加y轴数据 label_opts=LabelOpts(is_show=False)可以把数字去掉 要不乱乱的
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))     # 添加美国的y轴数据
line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))     # 添加日本的y轴数据
line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))     # 添加印度的y轴数据# 设置全局选项
line.set_global_opts(# 标题设置title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)# 调用render方法,生成图表
line.render()
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()# 数据分析的案例 黑马124集
class Record:def __init__(self, data, order_id, money, province):self.data = dataself.order_id = order_idself.money = moneyself.province = provincedef __str__(self):return f"{self.data},{self.order_id},{self.money},{self.province}"
class FileReader:# 把读到的文件转换为Record对象def read_data(self) -> list[Record]:pass
class TextFileReader(FileReader):def __init__(self, path):self.path = pathdef read_data(self) -> list[Record]:f = open(self.path,"r",encoding="UTF-8")record_list: list[Record] = []for line in f.readlines():line = line.strip()data_list = line.split(",")record = Record(data_list[0], data_list[1],int(data_list[2]),data_list[3])record_list.append(record)f.close()return record_list
class JsonFileReader(FileReader):def __init__(self, path):self.path = pathdef read_data(self) -> list[Record]:f = open(self.path, "r", encoding="UTF-8")record_list: list[Record] = []for line in f.readlines():data_dict = json.loads(line)record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])record_list.append(record)f.close()return record_list
if __name__ == '__main__':text_file_reader = TextFileReader("D:/Document/黑马python资料/第13章资料/2011年1月销售数据.txt")list1: list[Record] = text_file_reader.read_data()json_file_reader = JsonFileReader("D:/Document/黑马python资料/第13章资料/2011年2月销售数据JSON.txt")list2: list[Record] = json_file_reader.read_data()# for l in list1:#     print(l)# for l in list2:#     print(l)data_dict = {}all_data: list[Record] = list1 + list2for record in all_data:if record.data in data_dict.keys():data_dict[record.data] += record.moneyelse:data_dict[record.data] = record.moneyprint(data_dict)# 可视化图标开发bar = Bar()bar.add_xaxis(list(data_dict.keys()))bar.add_yaxis("销售额",list(data_dict.values()),label_opts=LabelOpts(is_show=False))bar.set_global_opts(title_opts=TitleOpts(title="每日销售额"))bar.render("每日销售额柱状图.html")# 1.类的对象,类的具体案例  类的属性:变量,成员变量   类的行为:函数,成员方法
class Student:name = Nonegender = Nonenationality = Nonenative_place = Noneage = Nonedef say_hi(self):print(f"Hello World, i am {self.name}")
stu_1 = Student()
stu_1.name = "林俊杰"
stu_1.gender = "男"
stu_1.nationality = "中国"
stu_1.age = 31
stu_1.say_hi()
# 2.init构造方法
class Student1:name = Nonegender = Nonenationality = Nonenative_place = Noneage = None# 在类内的方法都需要加上selfdef __init__(self, name, age, gender, nationality, native_place):self.name = nameself.age = ageself.gender = genderself.nationality = nationalityself.native_place = native_placeprint("这句话会随着构造方法的执行而自然执行")
stu_2 = Student1("小蛋蛋", 13, "男", "US", "London")
print(stu_2.name)# 3.常用的类内置方法 成为魔术方法 __lt__ 比较大小 __le__ 小于等于 __eq__
class Student2:def __init__(self, name, gender):self.name = nameself.gender = genderdef __str__(self):return f"对象的name为{self.name},gender为{self.gender}"
stu_3 = Student2("小康",23)
print(str(stu_3))
print(stu_3)# 4.封装 私有成员变量 私有成员方法 不公开的属性和方法 不能被类直接使用,可以被,类中其他方法使用
class Phone:__current_voltage = Noneface_id = " 10000"def __keep_single_core(self):print("私有的成员方法")def call_by_single(self):self.__keep_single_core()print("类内部的方法使用了类内部的私有方法")
phone1 = Phone()
phone1.call_by_single()# 5.继承  calss 类名(父类名)
# 5.1 可多继承 class 类名(父类1, 父类2, ...)
# 5.2 父类中都有同样的属性,则继承的是先来的那个 先入为主
# 5.3 pass可略过,补全语法
class iPhone(Phone):# 复写父类的属性与方法face_id = " 10001"def call_by_5g(self):print("5g通话")print(Phone.face_id)# orprint(super().face_id)
iphoneX = iPhone()
iphoneX.call_by_5g()
iphoneX.call_by_single()# 6. 类型注解 3.5版本引入了类型注解 提供了数据的显式说明
# 6.1 可以进行简单注解 也可以进行详细的注解
# 6.2 无法一眼看出变量的类型 通常才使用注解
# 6.3 注解是提示性的 不是强制执行的
var_1: int = 10
var_2: bool = True
pho: Phone = Phone()
my_list1: list = [1, 2, 3]
my_set: set[int] = {1, 2, 3}
my_tuple: tuple[str, int, bool] = ("d", 2, True)
# 6.2 通过注释来注解
import random
var_3 = random.randint(1,10) # type: int
# 6.4 函数和方法的类型注解 包括对返回值进行限定类型 都不是强制型的
def add_xy(x: int, y: int) -> int:return x+y# 6.5 union注解 定义联合类型注解 针对混合类型
from typing import Union
my_dict1: dict[str,Union[str,int]] = {"name":"小明","age":12}
def func_1(data: Union[int,str]) -> Union[int,str]:pass# 7. 多态 同样的行为 传入不同的对象 得到不同的状态
# 7.05 父类来确定有那些方法 具体的实现 由子类自行决定
class Animal():def speak(self):pass
class Cat(Animal):def speak(self):print("喵喵喵")
class Dog(Animal):def speak(self):print("汪汪汪")
def makeNoise(animal: Animal):animal.speak()
cat = Cat()
cat.speak()
dog = Dog()
dog.speak()# 7.1 抽象类 含有抽象方法的类成为抽象类 抽象方法:方法体是空实现的 pass 成为抽象方法
# 也就是上面的Animal类 是顶层设计 相当于给子类做规范

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构 排序

数据结构 排序 文章目录 数据结构 排序1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2.常见排序算法的实现2.1 插入排序2.1.1 基本思想2.1.2 直接插入排序2.1.3 希尔排序(缩小增量排序) 2.2 选择排序2.2.1 基本思想2.2.2 直接选择排序2.2.3 堆排序 2.3 交换排序2.3.1 …

Java后端模拟面试 题集④

1.你先作个自我介绍吧 面试官您好,我叫张睿超,来自湖南长沙,大学毕业于湖南农业大学,是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…

使用QT实现http里面的get和post

#1024程序员节|参与投稿,赢限定勋章和专属大奖# #假如你有一台服务器,你最想做哪些事?# #你被什么样的BUG困扰过一周以上?# 在http里面下面这些方法和服务器的响应代码一起用于HTTP协议中的请求和响应交互。请注意&…

Spring Boot + EasyUI 创建第一个项目(一)

创建一个Spring Boot和EasyUI相结合的项目。 一、构建一个Spring Boot项目 Spring Boot之创建一个Spring Boot项目(一)-CSDN博客 二、配置Thymeleaf Spring Boot Thymeleaf(十一)_thymeleaf 设置字体_人……杰的博客-CSDN博客…

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中,菜单的权限控制都是不可或缺的功能 在和后端配合做权限控制的时候不可避免的会用到 el-tree 然而这个组件本身带的坑不少 我们需要回显对应角色拥有的菜单,在不严格的模式下,父节点的选中会连带子节点的选中 如果 &a…

mybatisplus开启sql打印的三种方式

1、在application.yml文件中添加mybatisplus的配置文件 使用mybatisplus自带的log-impl配置,可以在控制台打印出sql语句、执行结果的数据集、数据结果条数等详细信息,这种方法适合再调试的时候使用,因为这个展示的信息详细,更便于…

【算法练习Day25】 重新安排行程N 皇后 解数独

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 重新安排行程N 皇后解数独总…

C# Socket通信从入门到精通(2)——多个同步TCP客户端C#代码实现

前言: 我们在开发Tcp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Tcp客户端程…

使用 Visual Studio Code (VS Code) 作为 Visual C++ 6.0 (VC6) 的编辑器

使用 Visual Studio Code (VS Code) 作为 Visual C 6.0 (VC6) 的编辑器 由于一些众所周知的原因,我们不得不使用经典(过时)的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说,这个经典的 IDE 过于简陋&a…

Leetcode1833. 雪糕的最大数量

Every day a Leetcode 题目来源:1833. 雪糕的最大数量 解法1:贪心 排序 本题唯一的难点在于计数排序。 计数排序详解:C算法之计数排序 为了尽可能多的买到雪糕,我们选择从价格低的雪糕开始买,统计能够买到的雪糕…

Java学习_day03_变量数据类型运算符

文章目录 变量定义声明赋值使用简化 数据类型基本数据类型整型浮点型布尔型字符型空型 引用数据类型数据类型转换自动类型转换强制类型转换 运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符条件运算符一元运算符二元运算符三元运算符运算符优先级 变量 变量类似于数学…

计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)

文章目录 一、最优装载问题1.1 问题表述1.2 代码编写 二、哈夫曼编码2.1 哈夫曼编码概述2.2 前缀码2.3 问题描述2.4 代码思路2.5 代码编写 一、最优装载问题 1.1 问题表述 1. 有一批集装箱要装上一艘载重量为 c c c 的轮船,已知集装箱 i ( 1 ≤ i ≤ n ) i(1≤i≤…

【C++】假设给类分配的是栈的空间,那么计算机是如何访问栈中不同位置的对象的数据的呢?

2023年10月22日,周日上午 当在栈上创建一个对象时,计算机会为该对象分配一块连续的内存空间。该内存空间的位置在栈帧中,栈帧是用来存储函数调用信息和局部变量的一块内存区域。 栈帧中包含一个指针,称为栈指针(stack…

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

目前,大模型凭借超强的学习能力,已经在搜索、推荐、智能交互、AIGC、生产流程变革、产业提效等场景表现出巨大的潜力。大模型经过海量数据的预训练,通常具有良好的通用性和泛化性。用户基于“大模型预训练微调”开发范式即可在实际业务场景取…

MySQL——练习

MySQL 一、练习要求二、练习过程 一、练习要求 创建表并插入数据: 字段名数据类型主键外键非空唯一自增idINT是否是是否nameVARCHAR(50)否否是否否glassVARCHAR(50)否否是否否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 21、创建一个可以统计…

dirsearch网站目录暴力破解

介绍: dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是: 支持HTTP代理多线程支持多种形式的网页(asp,php)生成报告&#xff0…

PostgreSQL与MySQL数据库对比:适用场景和选择指南

数据库是现代应用程序的基石之一,而在选择合适的数据库管理系统(DBMS)时,开发者常常会面临着许多选择。在这方面,PostgreSQL和MySQL是两个备受瞩目的选项。本文将深入研究这两者之间的异同,并为您提供适用场…

【使用OpenCV进行目标分割与计数的代码实例详解】

文章目录 概要实例一:硬币分割计数实例二:玉米粒分割计数 概要 在当今数字图像处理领域,图像分割技术是一项至关重要的任务。图像分割旨在将图像中的不同目标或区域准确地分开,为计算机视觉、图像识别和机器学习等领域提供了坚实…

[C语言]排序的大乱炖——喵喵的成长记

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

【微服务 SpringCloud】实用篇 · Ribbon负载均衡

微服务(4) 文章目录 微服务(4)1. 负载均衡原理2. 源码跟踪1)LoadBalancerIntercepor2)LoadBalancerClient3)负载均衡策略IRule4)总结 3. 负载均衡策略3.1 负载均衡策略3.2 自定义负载…