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 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段说明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    176. Second Highest Salary
    175. Combine Two Tables
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
    169. Majority Element
    168. Excel Sheet Column Title
    167. Two Sum II
    160. Intersection of Two Linked Lists
    个人博客记录
    <meta>标签
  • 原文地址:https://www.cnblogs.com/itred/p/4687287.html
Copyright © 2011-2022 走看看