Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文《Python笔记之不可不知》中,尽管本文是自己学习Python过程中的总结,在大神看来,或许略欠火候,希望批评指正,万分感谢!
本文是作者学习成绩的见证,请尊重劳动成果!版权归作者和博客园共有,欢迎转载,但请保留本文出处http://www.cnblogs.com/itred/p/4687287.html , 作者:itRed 联系邮箱:it_red@sina.com 博客链接:http://www.cnblogs.com/itred 转载时请保留此段说明。
对于Python的开发环境,其实不管是IDLE还是直接cmd控制台中,还是直接将其集成到MyEclipse或者Eclipse下,亦或者是另外的开发工具,其实际上都是根据开发者的习惯而进行选择的。
本人从事J2EE开发,习惯了MyEclipse的开发环境,所以将Python集成到这款IDE下。关于如何在IDLE中进行,可以查看博客《Python的安装和详细配置》,这里我将重点介绍将Python集成到MyEclipse下的方法。
一.Python与MyEclipse
下载链接:http://yunpan.cn/ccIaIqrGZs5Vw 访问密码 b828
直接解压缩文件,放到MyEclipse的安装目录下的\Genuitec\MyEclipse-8.6 1\dropins中。重启MyEclipse,window--->preference --->选择Python解释器,即最开始下载的Python的exe文件,完成安装和配置。

二.Python模块练习
- Python实现99表
其实在很多编程语言入门时,都会接触到这么一个程序。在控制台上打印出九九乘法表。在实现这个问题的时候,其主要利用的就是for循环处理问题。重点源码如下:
#!/usr/bin/python
# coding:utf-8
# @author: Red(it_red@sina.com)
# @version: 1.0
'''
打印99表
''' def printJJT():
for i in range(1, 10):
for j in range(1, i + 1):
print i, '*', j, '=', i * j, ' ',
print '' if __name__ == '__main__':
printJJT()
print '完成'
2. Python中的random模块
根据Python自己提供的模块可以直接调用其函数实现需要完成的任务,random中的不同方法产生相应的结果。这里列举中一些random中的处理方法,供初学者了解和应用。
在开始编程,需要利用到这种类型的模块时,就需要加入一行代码,也即是说引入相应的模块。语句为:import random ,关于每个函数所实现的功能,在代码中都有注释。
#!/usr/bin/python
# coding:utf-8
# @author: Red(it_red@sina.com)
# @version: 1.0 '''Random随机处理方法'''
import random '''获取随机整数,0~10'''
def getRandInt():
return random.randint(0, 10) '''随机选取0~100之间的偶数'''
def getEvenNum():
return random.randrange(0, 101, 2) '''随机浮点数'''
def getFloatNum():
return random.random() '''随机浮点数范围'''
def getFloatNumRange():
return random.uniform(1, 10) '''随机字符'''
def getRandChar():
return random.choice('abcdefghijklmn!@#$%^&*') '''在字符串中选取特定数量的字符'''
def getRandCharInRange():
return random.sample('lkijuhygtfrdbvcx', 5) '''随机选取字符串'''
def getRandStr():
return random.choice(['apple', 'panda', 'balana', 'blueberry', 'lemo', 'peer', 'milk', 'water']) '''乱序'''
def getRandOrder():
items = [1, 2, 3, 4, 5, 6, 7]
random.shuffle(items)
return items
if __name__ == '__main__':
# print getRandInt()
# print getEvenNum()
# print getFloatNum()
# print getFloatNumRange()
# print getRandChar()
# print getRandCharInRange()
# print getRandStr()
print getRandOrder()
3. 利用Python实现递归算法
算法是程序的灵魂,一个好的算法可以抵过很多行代码,这里利用递归算法来解决几个实际问题,这样就更加方便的了解到Python编程语言的简单了。
*计算1+2+3+4+…+99+100的值:
实现的源代码如下:
def foo(n):
if n > 0:return n + foo(n - 1)
if n <= 0:return 0
*计算N! 的值:
实现的关键源码如下:
def fac(n):
if n == 0 or n == 1:
return 1
else:
return n * fac(n - 1)
*再来一个Python面试题:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
实现的源码如下:
def fun(i):
if i == 1:
return 10
return fun(i - 1) + 2
4. Python发送邮件
其实相比较而言,利用Python发送邮件应该是最简单的,我此前写过利用java实现发送邮件的功能,但是与这次写利用Python实现发送邮件功能的比较,明显感觉到Python的强大。虽然java开发也是利用其它现有的资源,即利用Apache mail开发实现,然而对Python而言,仅仅只需要一行代码就可以导入,更加不可思议的是开发完整个发送邮件的功能,也仅仅不足20行代码,简洁高效,我的最爱!
#! /usr/bin/env python
# coding=utf-8
# @author: Red(mail:it_red@sina.com)
# @version: 1.0
'''发送邮件'''
import smtplib
from email.mime.text import MIMEText
_user = "it_red@sina.com"
_pwd = "*******"
_to = "it_red@sohu.com" # 使用MIMEText构造符合smtp协议的header及body
msg = MIMEText("测试_Python发送邮件")
msg["Subject"] = "测试邮件"
msg["From"] = _user
msg["To"] = _to s = smtplib.SMTP("smtp.sina.com.cn", timeout=30) # 连接smtp邮件服务器,端口默认是25
s.login(_user, _pwd) # 登陆服务器
s.sendmail(_user, _to, msg.as_string()) # 发送邮件
s.close()
5. Python 的Base64加密
只要引入模块,一行代码轻松搞定。
加密:base64.encodestring(str)
解密:base64.decodestring(str)
6. Python轻松调用浏览器
实现python打开浏览器并跳转到指定的网址
关键代码如下:
url = 'www.cnblogs.com/itred'
webbrowser.open(url)
7. Python爬虫之扒取指定网页源码
关键代码如下:
page = urllib.urlopen(url)
html = page.read()
8. Python爬虫之爬去指定网页上面的图片
关键源代码如下:
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
def getImg(html):
reg = r'src="(.*?\jpg)" '
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x=0
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x+=1
html = getHtml("")
print html
print getImg(html)
9. Python爬虫之扒取指定网页上面的URL链接地址和value值
其实原理和上述方法一样,只是在正则表达式和获取数据上进行一下处理就可以了,关键源码如下:
def getURL(html):
try:
f = open('itRed.txt', 'w')
p = re.compile('<a .*?><a .*? href="(.*?)">(.*?)</a>')
for url, name in p.findall(html):
f.write(url + '\n')
# print '%s(%s)' % (name, url)
finally:
f.close()
三.总 结
到这里,至少说差不多可以看懂一部分Python的代码了。个人认为,要想写出优秀的,高质量的代码,去读大神级人物的代码是必然的,也是通向高质量大神的最快捷的道路。关于本案例中所有涉及到的源代码都可以在本人的GitHub中找到,如果没找到可以直接发邮件索取。GitHub链接地址:https://github.com/itRed/python_basic
在学习Python的过程中,无时无刻没有感受到Python的简单和方便。也更加坚定了自己选择的路,虽然Python学起来简单,但是就任何一条学习的路而言,要想深入进去,还是需要自己不断的付出,不断的学习,不断的披荆斩棘,在此与诸君共勉!在python的学习之路上一路高歌!
谨以此文献给奋斗中的自己。
作者:itRed
博客:http://itred.cnblogs.com
GitHub:https://github.com/itRed
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段说明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。
Python笔记之不可不练的更多相关文章
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day8
python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
随机推荐
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案
前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...
- System.Guid ToString五中格式
参考:https://msdn.microsoft.com/en-us/library/97af8hh4.aspx 测试代码: using System; using System.Collectio ...
- setCapture、releasCapture 浅析
1. setCapture 简介 setCapture可以将鼠标事件锁定在指定的元素上,当元素捕获了鼠标事件后,该事件只能作用在当前元素上. 以下情况会导致事件锁定失败: 当窗口失去焦点时,锁定的事件 ...
- YII 2.x 模板文件的 beginBlock、beginContent、beginCache
echo '-----------beginBlock--------------------- <br />'; $this->beginBlock('block1', false ...
- 热修复-Nuwa学习篇
nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nu ...
- 编译器开发系列--Ocelot语言6.静态类型检查
关于"静态类型检查",想必使用C 或Java 的各位应该非常熟悉了.在此过程中将检查表达式的类型,发现类型不正确的操作时就会报错.例如结构体之间无法用+ 进行加法运算,指针和数值之 ...
- Android studio使用gradle动态构建APP(不同的包,不同的icon、label)
最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...
- NDK开发_笔记0
自谷歌搜索退出中国以来,谷歌对全球第二大市场中国的态度一直保持冷淡.可是北京时间12月8日,谷歌2016开发者大会在北京召开,同时专门针对中国的谷歌开发者网站已经上线:https://develope ...
- 简述我的SOA服务治理
SOA服务治理 1.解决业务部门服务冲突和纠纷2.版本定义与版本管理3.服务备案与服务管理4.业务监督与服务监控 SOA的战略目的 一.业务价值胜过技术策略 二.战略目标胜过具体项目的效益 三.内置的 ...