Python实战

1 环境搭建

区分几个小白容易混淆的概念:pycharm,python解释器,conda安装,pip安装,总结来说:

  • pycharm是python开发的集成开发环境(Integrated Development Environment,简称IDE),它本身无法执行Python代码

  • python解释器才是真正执行代码的工具,pycharm里可设置Python解释器,一般去python官网下载python3.7或python3.8版本;如果安装过anaconda,它里面必然也包括一个某版本的Python解释器;pycharm配置python解释器选择哪一个都可以。

  • anaconda是python常用包的合集,并提供给我们使用conda命令非常方便的安装各种Python包。

  • conda安装:我们安装过anaconda软件后,就能够使用conda命令下载anaconda源里(比如中科大镜像源)的包

  • pip安装:类似于conda安装的python安装包的方法

修改镜像源

在使用安装conda 安装某些包会出现慢或安装失败问题,最有效方法是修改镜像源为国内镜像源。之前都选用清华镜像源,但是2019年后已停止服务。推荐选用中科大镜像源。

先查看已经安装过的镜像源,cmd窗口执行命令:

conda config --show
复制代码

查看配置项channels,如果显示带有tsinghua,则说明已安装过清华镜像。

channels:
- https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
复制代码

下一步,使用conda config --remove channels url地址删除清华镜像,如下命令删除第一个。然后,依次删除所有镜像源

conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
复制代码

添加目前可用的中科大镜像源:

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
复制代码

并设置搜索时显示通道地址:

conda config --set show_channel_urls yes
复制代码

确认是否安装镜像源成功,执行conda config --show,找到channels值为如下:

channels:- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/- defaults
复制代码

Done~

2 自动群发邮件

Python自动群发邮件

import smtplib
from email import (header)
from email.mime import (text, application, multipart)
import timedef sender_mail():smt_p = smtplib.SMTP()smt_p.connect(host='smtp.qq.com', port=25)sender, password = '113097485@qq.com', "**************"smt_p.login(sender, password)receiver_addresses, count_num = ['guozhennianhua@163.com', 'xiaoxiazi99@163.com'], 1for email_address in receiver_addresses:try:msg = multipart.MIMEMultipart()msg['From'] = "zhenguo"msg['To'] = email_addressmsg['subject'] = header.Header('这是邮件主题通知', 'utf-8')msg.attach(text.MIMEText('这是一封测试邮件,请勿回复本邮件~', 'plain', 'utf-8'))smt_p.sendmail(sender, email_address, msg.as_string())time.sleep(10)print('第%d次发送给%s' % (count_num, email_address))count_num = count_num + 1except Exception as e:print('第%d次给%s发送邮件异常' % (count_num, email_address))continuesmt_p.quit()sender_mail()
复制代码

注意:发送邮箱是qq邮箱,所以要在qq邮箱中设置开启SMTP服务,设置完成时会生成一个授权码,将这个授权码赋值给文中的password变量。

发送后的截图:

3 二分搜索

二分搜索是程序员必备的算法,无论什么场合,都要非常熟练地写出来。

小例子描述:在有序数组arr中,指定区间[left,right]范围内,查找元素x如果不存在,返回-1

二分搜索binarySearch实现的主逻辑

def binarySearch(arr, left, right, x):while left <= right:mid = int(left + (right - left) / 2); # 找到中间位置。求中点写成(left+right)/2更容易溢出,所以不建议这样写# 检查x是否出现在位置midif arr[mid] == x:print('found %d 在索引位置%d 处' %(x,mid))return mid# 假如x更大,则不可能出现在左半部分elif arr[mid] < x:left = mid + 1 #搜索区间变为[mid+1,right]print('区间缩小为[%d,%d]' %(mid+1,right))# 同理,假如x更小,则不可能出现在右半部分elif x<arr[mid]:right = mid - 1 #搜索区间变为[left,mid-1]print('区间缩小为[%d,%d]' %(left,mid-1))# 假如搜索到这里,表明x未出现在[left,right]中return -1
复制代码

Ipython交互界面中,调用binarySearch的小Demo:

In [8]: binarySearch([4,5,6,7,10,20,100],0,6,5)
区间缩小为[0,2]
found 5 at 1
Out[8]: 1In [9]: binarySearch([4,5,6,7,10,20,100],0,6,4)
区间缩小为[0,2]
区间缩小为[0,0]
found 4 at 0
Out[9]: 0In [10]: binarySearch([4,5,6,7,10,20,100],0,6,20)
区间缩小为[4,6]
found 20 at 5
Out[10]: 5In [11]: binarySearch([4,5,6,7,10,20,100],0,6,100)
区间缩小为[4,6]
区间缩小为[6,6]
found 100 at 6
Out[11]: 6
复制代码

4 爬取天气数据并解析温度值

爬取天气数据并解析温度值

素材来自朋友袁绍,感谢!

爬取的html 结构

import requests
from lxml import etree
import pandas as pd
import reurl = 'http://www.weather.com.cn/weather1d/101010100.shtml#input'
with requests.get(url) as res:content = res.contenthtml = etree.HTML(content)
复制代码

通过lxml模块提取值

lxml比beautifulsoup解析在某些场合更高效

location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')
temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')
复制代码

结果:

['香河', '涿州', '唐山', '沧州', '天津', '廊坊', '太原', '石家庄', '涿鹿', '张家口', '保定', '三河', '北京孔庙', '北京国子监', '中国地质博物馆', '月坛公
园', '明城墙遗址公园', '北京市规划展览馆', '什刹海', '南锣鼓巷', '天坛公园', '北海公园', '景山公园', '北京海洋馆']['11/-5°C', '14/-5°C', '12/-6°C', '12/-5°C', '11/-1°C', '11/-5°C', '8/-7°C', '13/-2°C', '8/-6°C', '5/-9°C', '14/-6°C', '11/-4°C', '13/-3°C'
, '13/-3°C', '12/-3°C', '12/-3°C', '13/-3°C', '12/-2°C', '12/-3°C', '13/-3°C', '12/-2°C', '12/-2°C', '12/-2°C', '12/-3°C']
复制代码

构造DataFrame对象

df = pd.DataFrame({'location':location, 'temperature':temperature})
print('温度列')
print(df['temperature'])
复制代码

正则解析温度值

df['high'] = df['temperature'].apply(lambda x: int(re.match('(-?[0-9]*?)/-?[0-9]*?°C', x).group(1) ) )
df['low'] = df['temperature'].apply(lambda x: int(re.match('-?[0-9]*?/(-?[0-9]*?)°C', x).group(1) ) )
print(df)
复制代码

详细说明子字符创捕获

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(group)。比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print(m.group(0))
print(m.group(1))
print(m.group(2))# 010-12345
# 010
# 12345
复制代码

如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串来。

注意到group(0)永远是原始字符串,group(1)group(2)……表示第1、2、……个子串。

最终结果

Name: temperature, dtype: objectlocation temperature  high  low
0         香河     11/-5°C    11   -5
1         涿州     14/-5°C    14   -5
2         唐山     12/-6°C    12   -6
3         沧州     12/-5°C    12   -5
4         天津     11/-1°C    11   -1
5         廊坊     11/-5°C    11   -5
6         太原      8/-7°C     8   -7
7        石家庄     13/-2°C    13   -2
8         涿鹿      8/-6°C     8   -6
9        张家口      5/-9°C     5   -9
10        保定     14/-6°C    14   -6
11        三河     11/-4°C    11   -4
12      北京孔庙     13/-3°C    13   -3
13     北京国子监     13/-3°C    13   -3
14   中国地质博物馆     12/-3°C    12   -3
15      月坛公园     12/-3°C    12   -3
16   明城墙遗址公园     13/-3°C    13   -3
17  北京市规划展览馆     12/-2°C    12   -2
18       什刹海     12/-3°C    12   -3
19      南锣鼓巷     13/-3°C    13   -3
20      天坛公园     12/-2°C    12   -2
21      北海公园     12/-2°C    12   -2
22      景山公园     12/-2°C    12   -2
23     北京海洋馆     12/-3°C    12   -3

全网目前最全python例子(附源码)八、Python实战相关推荐

  1. 前端小白也能快速学会的博客园博客美化全攻略[附源码]

    前端小白也能快速学会的博客园博客美化全攻略[附源码] 文章目录 前端小白也能快速学会的博客园博客美化全攻略[附源码] 美化方法论简介 准备工作 js权限申请 如何模仿一个博客园的自定义风格(样式css ...

  2. 用css使用html设置背景图片自适应,CSS怎么设置背景图片自适应全屏?附源码!...

    不少同学在设置网站背景图片时会遇到这么一个问题:背景图片总是不能铺满整个屏幕,不是图片太小就是图片被过度放大,显得不太美观.那么 CSS 怎么设置背景图片自适应全屏呢?这篇文章告诉你. 实现效果: 源 ...

  3. 径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

    文章目录 一.理论基础 1.径向基神经网络结构 2.前向传播过程 3.反向传播过程 4.建模步骤 二.径向基神经网络的实现 1.训练过程(RBFNN.py) 2.测试过程(test.py) 3.测试结 ...

  4. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  5. 《权力的游戏》最终季上线!谁是你最喜爱的演员?这里有一份Python教程 | 附源码...

    译者 | 刘畅 编辑 | 琥珀 出品 | AI科技大本营(id:rgznai100) <权力的游戏>最终季已于近日开播,对于全世界翘首以待的粉丝们来说,其最大的魅力就在于"无法预 ...

  6. (附源码)Python二手电脑商城 毕业设计 251713

    Python二手电脑商城的开发 摘 要 计算机技术.网络通信技术.多媒体技术及数据存储技术的飞速发展,对人类的生产和生活方式产生了很大影响.二手笔记本电脑交易网站以其特有的快速.高效.便捷的方式被人们 ...

  7. 爬虫实战—拿下最全租房数据 | 附源码

    「关注我,和我一起放下灵魂,让灵魂去搬砖.」 作者:小一 介绍:放不下灵魂的搬砖者 全文共6329字,阅读全文需17分钟 点赞再看,养成好习惯 Python版本3.8.0,开发工具:Pycharm 写 ...

  8. (附源码)python数字图像处理课程平台 毕业设计 242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  9. (附源码)python音乐电台推荐系统 毕业设计 301210

    音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛.因此,建立一个B/S结构的音乐电台推荐系统来管理 ...

  10. (附源码)python电影院购票系统 毕业设计221133

    电影院购票系统的设计与实现 摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台.电影院每天都有大量的信息需要通过网络发布,为此,本人开发了一个基于B/S(浏览器/服务器)模式的电影院购票系 ...

最新文章

  1. 10 ping不通widwos7 windwos_弱电老司机总结的10种视频监控系统故障解决方法,学会,事半功倍...
  2. SMAT,PacBio
  3. [网络安全自学篇] 五十五.Windows系统安全之构建ROP链绕过DEP及原理详解
  4. soa示例_SOA示例应用程序
  5. 【渝粤题库】广东开放大学 微信平台开发与应用 形成性考核 (2)
  6. Response实现文件下载
  7. 中国互联网创业大咖(收藏)
  8. 山东大学计算机学院实验室,计算机学院平稳推进实验室各项工作
  9. 201871010133 赵永军《面向对象程序设计(java)》第六、七周学习总结
  10. 一个屌丝程序猿的人生(一百二十)
  11. Java MediaMetadataCompat
  12. 2020最新版前端学习路线图--手机网页还可以这么玩?
  13. 详细分析MySQL的日志(一)本文原创地址:博客园骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9001061.html
  14. python采用强制缩进的方式使得代码具有极佳的可读性_Python 的教程(2)
  15. 在win10安装Charles和证书
  16. IBM X60驱动程序的安装
  17. 无线hacking系统—wifislax
  18. 2019考研 报名条件是什么?
  19. AR模型(Autoregress)
  20. DHCP全局模式原理和配置

热门文章

  1. python sort函数原理_python sort函数原理
  2. 贴片电阻封装规格及阻值标注方法
  3. 自动化测试框架[Cypress测试实例凸显其优势]
  4. 提问的智慧( 中文阅读笔记)#
  5. macOS更换jupyter notebook默认浏览器
  6. 三十一 我在软件园的那些日子里
  7. 点云的降采样:八叉树采样(Octree)
  8. python创建空字典什么意思_Python3基础 dict 创建字典 空字典
  9. 交换机基本原理和配置
  10. 含有使字的诗句_带有一字的诗句