python学习笔记
https://github.com/lilang-jianxin/python-BasicProgramming https://github.com/lilang-jianxin/Python-CoreProgramming
python使用的版本及开发工具
- python2和python3语法差别不大,设计思想差不多的。但是官方大概在2020年的时候会停止对python2的维护,最终将使用python3以后的版本进行推进,所以建议开始学习的话还是选择python3。
- 开发工具:pycharm 配置简单、功能强大,并且语法的提示非常友好,和idea同出于一个公司
- 支持的操作系统:windows,Linux,mac, 在linux操作系统下可以开辟自己的虚拟空间 并且后两者直接提供了运行环境,相比于php,java 还是很方便的。
python环境搭建
下载可执行的安装文件 Windows x86-64 executable installer 记得勾选路径选项,把路径添加到系统环境变量中。
python 虚拟环境的安装(https://www.jianshu.com/p/9f47a9801329)python包的安装 pip install 包名称查看自己的环境安装包pip freeze 这个特别重要的一个技巧导出虚拟环境的依赖包pip freeze > hello.txt安装虚拟环境的依赖包pip install -r hello.txtpython包的官方网址https://pypi.python.org/pypi
python第一个小程序
这是用python实现的第一个经典小程序
print("hello world")# -*- coding: utf-8 -*-import datetimeprint(datetime.datetime.now().strftime(format='%Y-%m-%d'))#-*- coding:utf-8 -*-#遍历任何一个可迭代对象a=[1,2,34,4,5,6]for i in a: print(i)a='1231jeewe23432324'for i in a: print(i)import jsondata = {"spam" : "foo", "parrot" : 42}in_json=json.dumps(data)print(type(in_json))json_data=json.loads(in_json)print(type(json_data))''''''#网络访问,未曾定制任何参数import requestsres=requests.get(url='https://my.oschina.net/u/3668329/blog/edit/1633070')print(res.text)完成请求简单定制参数(如下)import requestsheaders={ 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}res=requests.get(url='https://www.baidu.com/',headers=headers,timeout=3)print(res.text)
python的数据结构
数据主要分为:整数型 ;数字的整数 浮点型; 数字带小数字符串; 用 ‘’ 或者 “” 引用的任意文本布尔型;只有 True 和 False数据结构分为:列表 list元祖 tuple字典 dict集合 set
python的有趣的小应用
1 微信小应用 itchat
#-*- coding:utf-8 -*-import itchatitchat.auto_login(hotReload=True)friends=itchat.get_friends()for i in friends: print(i)# 初始化计数器,有男有女,当然,有些人是不填的male = female = other = 0# 1表示男性,2女性for i in friends[1:]: sex = i["Sex"] if sex == 1: male += 1 elif sex == 2: female += 1 else: other += 1total = len(friends[1:])print(total)print( u"男性好友:%.2f%%" % (float(male) / total * 100))print(u"女性好友:%.2f%%" % (float(female) / total * 100))print(u"其他:%.2f%%" % (float(other) / total * 100))itchat.run()答案:293男性好友:59.04%女性好友:35.15%其他:5.80%
2 微信自动回复消息
# coding=utf8import itchat, timefrom itchat.content import *@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])def text_reply(msg): for i in range(1000): itchat.send('%s' % ('新年快乐,祝你在新的一年里事业顺利,心想事成!'), msg['FromUserName']) time.sleep(1)@itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])def download_files(msg): msg['Text'](msg['FileName']) return '@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName'])@itchat.msg_register(FRIENDS)def add_friend(msg): itchat.add_friend(**msg['Text']) # 该操作会自动将新好友的消息录入,不需要重载通讯录 itchat.send_msg('Nice to meet you!', msg['RecommendInfo']['UserName'])@itchat.msg_register(TEXT, isGroupChat=True)def text_reply(msg): if msg['isAt']: itchat.send(u'@%s\u2005I received: %s' % (msg['ActualNickName'], msg['Content']), msg['FromUserName'])itchat.auto_login(hotReload=True)itchat.run()
3 有趣的小案例 微信个性签名词云图
# coding:utf-8import itchatimport re# 先登录itchat.auto_login(hotReload=True)# 获取好友列表friends = itchat.get_friends(update=True)[0:]for i in friends: # 获取个性签名 signature = i["Signature"]print(signature)# 先全部抓取下来# 打印之后你会发现,有大量的span,class,emoji,emoji1f3c3等的字段,因为个性签名中使用了表情符号,这些字段都是要过滤掉的,写个正则和replace方法过滤掉for i in friends:# 获取个性签名 signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")# 正则匹配过滤掉emoji表情,例如emoji1f3c3等 rep = re.compile("1f\d.+") signature = rep.sub("", signature) print(signature)# 接来下用jieba分词,然后制作成词云,首先要安装jieba和wordcloud库## pip install jieba# pip install wordcloud#wordcloud 安装失败 http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloudfriends = itchat.get_friends(update=True)[0:]tList = []for i in friends: signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "") rep = re.compile("1f\d.+") signature = rep.sub("", signature) tList.append(signature)# 拼接字符串text = "".join(tList)# jieba分词import jiebawordlist_jieba = jieba.cut(text, cut_all=True)wl_space_split = " ".join(wordlist_jieba)# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloud# 这里要选择字体存放路径,这里是Mac的,win的字体在windows/Fonts中my_wordcloud = WordCloud(background_color="white", max_words=2000, max_font_size=40, random_state=42, font_path='C:\Windows\Fonts\STZHONGS.TTF').generate(wl_space_split)plt.imshow(my_wordcloud)plt.axis("off")plt.show()itchat.run()
如果有兴趣的话还可以扩展更多的东西
学习资料
流行的数据分析库
NumPy是Python科学计算的基础包,它提供:快速高效的多维数组对象ndarray;直接对数组执行数学运算及对数组执行元素级计算的函数;线性代数运算、随机数生成;PandasPandas主要提供快速便捷地处理结构化数据的大量数据结构和函数。MatplotlibMatplotlib是最流行的用于绘制数据图表的Python库。当然还有很多非常实用的库。。。