第一天

Python简介

Python是优雅,简单,明确的语言,优雅体现在代码格式上;简单也是体现在了代码中

定义变量不需要声明类型,和你们所学的C和Java相比很容易

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Python和C语言/Java相比较 是一门后兴起的语言,但是在用户使用时的好评和他们几乎是同一个级别的.python现在被广泛使用.在全球编程语言中python排行第三

python能够排行第三是因为他们以下几点优势

  • 高级语言
    • 我们只需要将我们的想法通过一个中语言介质(编程语言)告诉计算机,计算机去帮助我们实现,具体计算机做了什么事情完全不需要我们管,这样就大大的节省了学习的成本
  • 开发效率高
    • 开发效率高是因为怎么想要实现的功能,在很早直接就有人想到了,并且实现了以后还免费分享出来了,我们要实现的时候只需要把人家写的好拿过来用就行了,省去重复性的工作和时间.python有一句话说的很好懒惰即美德.
  • 可跨平台
    • 咱们常用的两种电脑一个是苹果一个是windows,苹果和windows他们之间平台就是不一样的,跨平台就是我现在在windows系统中写的代码,放到你的苹果电脑上完全可以运行,不想C和Java需要涉及到系统相关的内容
  • 简单易懂
    • 简单易懂是因为python就是对应着人的想法做出的语言,就说想要打印一个数字521,python中直接使用print就可以了

因为这些优势现在很多大小型公司都是使用python,小型公司通过python起家,因为要创建就要资金.当资金不够的时候就需要进行融资.融资的时候肯定要有成品让土豪们观看.使用python就能够快速的将项目实现,比如就说jd这个项目使用c和java需要一年多.但是使用pytho也就半年就搞定了.你们肯定觉得我在瞎说,咱们写一下就知道,在写之前我们需要安装点工具

环境安装

知识盛宴- 实训 随笔 第1张

  • 下拉页面,选择对应版本:Python3.6.3,如下图

知识盛宴- 实训 随笔 第2张

  • 向下查找,找到Python 3.6.3 根据系统选择对应的安装包,如下图

知识盛宴- 实训 随笔 第3张

根据当前系统的选择对用的,红色的是windows32位,绿色的是windows64位

  • 下载完成,如下图

知识盛宴- 实训 随笔 第4张

下载完成后找到下载的目录,然后用鼠标左键双击

知识盛宴- 实训 随笔 第5张

  • 执行下一步

知识盛宴- 实训 随笔 第6张

  • 勾选安装

知识盛宴- 实训 随笔 第7张

  • 安装进度

知识盛宴- 实训 随笔 第8张

  • 安装成功

知识盛宴- 实训 随笔 第9张

OK,当看到这个页面的时候我们已经成功的安装上了,现在我们只需要安装一个辅助的开发工具,这个工具能够让我们开发效率提高很多倍 — 我发给大家!

项目介绍

工具都已经安装完成了,因为是第一天咱们就先来个开胃菜

搞一搞微信好友

为什么要搞微信好友:

咱们现在都是用微信在交流,以前时候老板和老板一见面就互相交换名片,当时我就老羡慕人家.我也想弄点名片装个B,实在太贵了只能看他们默默的装B,现在也不交换名片了都是互相加微信,慢慢的微信好友就多了.好友多就免不了要删除一些好友,但是我只想删除性别是男的微信好友,女的留一下 万一哪天偶遇了呢.

我就躺在床上看头像删除,删的删的发现有些特殊癖好的喜欢用女孩子做头像,我就只能删一个看看他的详细信息,这样下来太麻烦了.我就用程序写了一个获取微信中的男女朋友,再删除的时候就方便多了.删完以后就像要是有个图能显示就更完美了我就把图也加上了.咱们来看一下效果图

知识盛宴- 实训 随笔 第10张

快速入门

叨逼叨半天也看了效果图,咱们就自动动手写一个试试

准备工作

  • 安装wxpy
    • pip install wxpy
  • 安装pyecharts
    • pip3 install pyecharts

安装完后我们使用 pip list查看一下

第一步

from wxpy import * 
bot = Bot()

这样就生成了一个微信二维码,我们用手机扫一下然后登陆,在程序中就显示当前登陆微信的昵称

第二步

from wxpy import *
from pyecharts import Pie
import webbrowser

将我们需要使用的模块导入,第一个模块是微信朋友,这个就是正对于微信的

第二个模块是一个图表的模块我们一会需要展示一个饼状图

第三个模块是一个浏览器模块,通过这个浏览器显示我们生成的饼状图

第三步

from wxpy import *
from pyecharts import Pie
import webbrowser

bot = Bot()
friends=bot.friends()    #拿到所有朋友对象
attr=['男朋友','女朋友','性别不详']
value=[0,0,0]
for friend in friends:
    if friend.sex == 1: # 等于1代表男性
        value[0]+=1
    elif friend.sex == 2: #等于2代表女性
        value[1]+=1
    else:
        value[2]+=1

pie = Pie("朋友男女比例")
pie.add("", attr, value, is_label_show=True)
pie.render('sex.html')#生成html页面
# 打开浏览器
webbrowser.open("sex.html")

大家都来试一试自己微信中是男性朋友多还是女性朋友多.

大家都试了没有问题的话,咱们就来看看咱们写的都是什么吧,为什么就要这样写我给大家一行一行的讲解一下

知识点

from  xx   import  a  是在导入模块

from 就是从xx这里将a导入的当前的这个文件中,*是导入所有

导入的就是咱们刚刚安装的模块

import webbrowser 也是导入模块

这个是从python中自带的导入

bot = Bot() # 这是实例化 也就是生成一个微信二维码
friends=bot.friends()  #获取我们登陆的微信号中所有的好友
attr = ['男朋友','女朋友','性别不详'] 

这个是因为我们要生成饼状图时,人家要求要写成这样的格式,这个样的格式你们见过吗?

在Java和C中 ['男朋友','女朋友','性别不详'] 这种结构叫做数据,python中叫做列表

列表就是一个容器,就是用来存放一些数据

列表就像是咱们的书包可以放一堆东西,列表中的男朋友是字符串类型,因为咱们直接写中文计算机是不认识得,计算机只认识用引号包起来的中文,列表中的男朋友就类似于我们书包中放的移动充,女朋友就类似于我们书包中的手机充电器,性别不详就类似于我们书包中的耳机

attr = ['男朋友','女朋友','性别不详'] 这样是定义一个变量,变量的名字叫做attr,值是列表

就类似于你把你的书包给你同桌拿,你要取书包的东西就先要找你的同桌,程序中也是这样要想取值就先找attr

value = [0,0,0]

这个是我们要生成饼状图时好友的数量,列表中一种3个0正好对应attr中的男朋友,女朋友,性别不详.

for friend in friends:
    if friend.sex == 1: # 等于1代表男性
        value[0]+=1
    elif friend.sex == 2: #等于2代表女性
        value[1]+=1
    else:
        value[2]+=1

这一堆我们先从for开始看

for 是一个循环,一个有条件的循环,5个人排好队从这个门近,我站在门口,进来的第一个人我让他喊一声1,再进来一个人我让他喊一声1,5个人都进来了.一共喊了5次1,通过这个就发现要喊几次取决于有多少人,我们用代码来实现一下5个人进门的场景

li = ['张三','李四','王二麻子','铁锤妹妹','棍哥']
for em in li:  #冒号是表示这行语句结束了
    print(1)     
  #print 这地方需要一个缩进,缩进的意思就是当有人从门口进来才让他喊1
这样的结果就是打印5次1 也就是喊了5声

如果门口没人,也就是列表中没有内容就不会有人喊1

li = []
for em in li:
  print(1)
这样的结果就是空,因为没人从这个门进,也就不会喊1

我们让他们都喊1,但是不知道是谁进来了啊,要是能够让他喊出自己的名字,我们就知道是谁从这个门中进来了是吧.

li = ['张三','李四','王二麻子','铁锤妹妹','棍哥']
for em in li:
  print('我是',em)
这样谁进门咱们就知道了

咱们获取的微信好友就是从这个门口排了一个大长队,我们现在让他们进来,并且告诉咱们他们自己的名字,怎么办

  1. 首先我们先看看排队的人(微信好友列表)
  2. 让每一个人进门
  3. 进门就喊自己的名字
friends=bot.friends()
print(friends)      #查看微信好友的列表
for em in friends:  #让排队的微信好友进门
  print('我是',em)   #每一个进门的喊出自己的名字

咱们继续把这个if研究一下

    if friend.sex == 1: # 等于1代表男性
        value[0]+=1
    elif friend.sex == 2: #等于2代表女性
        value[1]+=1
    else:
        value[2]+=1

if 翻译过来就是如果的意思,elif就是在如果.这个代码的意思就是

如果进门的人性别是男的,男的用数字1表示,就让男同胞在这个本上写一笔,不是男同胞的就在判断一下是不是女同胞,也就开始执行elif这个语句不是男同胞也不是女同胞就是只剩下性别不详了

if — elif — elif 这种需要多选一,有一个是真的其余就都不看了

if后边跟的是条件,当条件执行为真的时候对咱们写的value那个列表进行操作

这种操作你们应该没有见过,索引你们应该听说过,索引就是我不通过名字叫你,有可能会有重名的,我给你们每个人定一个编号,我在找人的时候就按照编码找,计算机排编号的时候是从0开始的,这个0就表示列表中第一个东西

找到后进行了一个加法操作,本来是0就表示男同胞的这个记录本上干干净净的,有个男同胞进来了然后在这个本上画了一笔现在看就是1笔,我们最好要通过这个本子统计一共有多少男同胞,女同胞和性别不详的也是一样

pie = Pie("朋友男女比例")
pie.add("", attr, value, is_label_show=True)
#图表名称str,属性名称list,属性所对应的值list,is_label_show是否显示标签
pie.render('sex.html')#生成html页面

这个是我们创建一个饼状图,饼状图的名字叫做比例图

pie.add就是给饼状图添加要展示的数据,is_labe_show是在饼状图中显示标签

pie.render('sex.html')

将我们创建的饼状图生成一个html文件

webbrowser.open('sex.html')

这是将我们生成的html页面使用浏览器打开.

到现在为止咱们的开胃菜也吃完了,明天咱们吃另一道开胃菜.我这次给你们准备了一个满汉全席(知识盛宴) 和大家说说咱们都要做什么

微信系列

  • 微信好友男女比例
  • 微信好友分布
  • 微信全部简单回复
  • 微信指定人回复
  • 微信指定群中某人回复
  • 微信自动回复
  • 每天定时给好友发暖心话
  • 微信头像拼图(待定)

爬虫系列

  • 爬取豆瓣Top250
  • 爬取斗图 — 再也不担心过没图可逗了
  • 爬取必应壁纸
  • 爬取汽车之家
  • 爬取拉钩
  • 爬取58
  • 爬取肯德基
  • 爬取药监局
  • 爬取喜马拉雅音乐
  • 爬取梨视频
  • 爬取小说
  • 破解验证码
  • 爬取QQ空间说说
  • 爬取12306
  • 爬取微博
  • 爬取段子

人工智能系列

  • 文字准换语音
  • 语音准换文字
  • 人脸识别
  • 语音输入明星名字爬取明星图片在网站上展示(有想法 — 未实现)
  • 语音输入要听得歌在网站上播放(有想法 —未实现 )

第二天

昨天我们学了第一个和微信相关的内容,咱们今天就来看看今天咱们学习的一个微信好友分布,这个好友分布是我在写出了微信好友比例之后写的

微信好友分布介绍

我为什么会做这个,是因为我比较喜欢旅游,我这个人旅游不喜欢抱团,太约束了在加上我不定时的会出差,就想把我走过的地方小吃都尝一遍,要吃当地的名吃就要咨询当地土著我就直接写了一个程序,快速把每个城市的好友列出来,然后拍张照片咨询的时候直接问这写好友就行了.省去了想那个好友是哪的.我需要的功能实现了就稍微添加了几行代码当成一个完成的小项目分享出去了,我们来看看一个完整的好友分布的效果图吧.

知识盛宴- 实训 随笔 第11张

这是我微信好友的分布情况,我带着大家先把这个小项目写一下

项目准备工作

pip3 install echarts-countries-pypkg
pip3 install echarts-china-provinces-pypkg
pip3 install echarts-china-cities-pypkg
pip3 install echarts-china-counties-pypkg
pip3 install echarts-china-misc-pypkg
安装我们需要的地图模块

都安装成功后,我们按照昨天写的微信好友比例的小项目,推测一下今天这个好友分布要做的事都有哪些?咱们就先分析一下昨天的好友比例都有哪些

  • 登录微信
  • 获取所有好友
  • 统计好友的性别
  • 生成饼状图
  • 通过浏览器打开我们生成的页面

那好友分布要做的有哪些呢?

  • 登陆微信
  • 获取所有好友
  • 统计好友的城市
  • 生成地图
  • 通过浏览器打开我们生成的页面

我们就围绕着这5步来实现

第一步
from wxpy import *
from pyecharts import Map
import webbrowser
bot = Bot()

生成二维码登陆微信

第二步
friends = bot.friends()
# 获取微信好友
第三步
area_dic = {} 
for friend in friends:
    if friend.province not in area_dic:
        area_dic[friend.province]=1
    else:
        area_dic[friend.province]+=1
第四步
attr = area_dic.keys()
value = area_dic.values()

map = Map("好朋友们的地域分布", width=1200, height=600)
map.add(
    "好友地域分布",
    attr,
    value,
    maptype='china',
    is_visualmap=True,

)
map.render('area.html')
第五步
webbrowser.open("area.html")

我们把我们分析都写完了,现在来测试一下你们的微信好友都遍布在全国各地的那个部分

大家都测试完了后,咱们来看看一看今天的代码和昨天代码中不一样的部分是什么意思

知识点讲解

area_dic = {}  #这是定义一个字典

什么是字典?为什么用字典?

字典是一种键值数据也是用来存储数据的,它存储的数据键只能有一个,一个键对应一个值,键是唯一的我们可以测试一下

我们就可以利用字典键的特性来统计好友的城市,就类似于有一个本,这本只记录北京的好友,是北京的就在这个本上加一个数

for friend in friends:
    if friend.province not in area_dic:
        area_dic[friend.province]=1
    else:
        area_dic[friend.province]+=1

获取所有的好友后循环好友的列表拿出每一个好友,获取每个好友的城市添加到字典中,

这里出现一个not in是不存在的意思我们来试一试这个not in

dic = {'meet':180,'yaya':160}
if 'meet' in dic:
    print('在字典中')   #能够打印出来就说明键在字典中

if 180 in dic:
    print('在字典中')  #不能够打印出来就说明判断的不是值是键
    
if 'baoyuan' not in dic:
    print('不在字典中') #能够打印就说明baoyuan不是字典的键

这个在和不在我们知道后,继续向下看

dic['金角大王'] = '银角大王'

这样是在干啥??

print(dic)  
dic['金角大王'] = '银角大王'
print(dic)  #再次看的时候发现多了一组 这是字典的添加

在向下看发现有个else,这是什么东西还和if同级

if 3>2:
  print('是正确的')
else:
  print('不正确')

if和else是二选一只能走一个,if走了就不走else了,else走了就不走if了

area_dic[friend.province] += 1

这是在干嘛,我们一步步的分析,先看看area_dic[friend.province]是在干嘛

print(dic['meet'])  # 查看到的是meet对应的180
dic['meet'] += 1
print(dic['meet'])  #结果就是181,在180的基础上加了一个1

area_dic[friend.province] += 1是通过好友的城市去字典中取值然后在将值加1然后重放进去

attr = area_dic.keys()
value = area_dic.values()

这两个是因为我们要制成地图的时候需要两个列表数据,就像咱们昨天写的男朋友那个

map = Map("好朋友们的地域分布", width=1200, height=600)
# 生成一个地图模板,地图的名字是好朋友们的地域分布,宽度是1200 高是600
map.add(
    "好友地域分布",
    attr,
    value,
    maptype='china', #选择中国
    is_visualmap=True, #地图带颜色

)
# 向地图模板添加数据
map.render('area.html')
# 生成地图页面
webbrowser.open("area.html")
# 通过浏览器打开地图
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄