zoukankan      html  css  js  c++  java
  • 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的安装目录下的GenuitecMyEclipse-8.6 1dropins中。重启MyEclipse,window--->preference --->选择Python解释器,即最开始下载的Python的exe文件,完成安装和配置。

        

    二.Python模块练习 

    1. 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 + '
    ')
                # 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 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段说明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    sqlserver2012——.Net
    sqlserver2012——逻辑运算符
    sqlserver2012——变量declare
    sqlserver2012——EXCEPT差查询
    sqlserver2012——INTERSECT交查询
    sqlserver2012——EXISTS关键字
    Vue3.0-beta
    Next
    Nuxt
    小程序相关
  • 原文地址:https://www.cnblogs.com/itred/p/4687287.html
Copyright © 2011-2022 走看看