Python筆記之不可不練

     若是您已經有了必定的Python編程基礎,那麼本文就是爲您的編程能力錦上添花,若是您剛剛開始對Python有一點點興趣,不怕,Python的重點基礎知識已經總結在博文《Python筆記之不可不知》中,儘管本文是本身學習Python過程當中的總結,在大神看來,或許略欠火候,但願批評指正,萬分感謝!html

     本文是做者學習成績的見證,請尊重勞動成果!版權歸做者和博客園共有,歡迎轉載,但請保留本文出處http://www.cnblogs.com/itred/p/4687287.html ,  做者:itRed      聯繫郵箱:it_red@sina.com       博客連接:http://www.cnblogs.com/itred   轉載時請保留此段說明。java

      對於Python的開發環境,其實不論是IDLE仍是直接cmd控制檯中,仍是直接將其集成到MyEclipse或者Eclipse下,亦或者是另外的開發工具,其實際上都是根據開發者的習慣而進行選擇的。python

本人從事J2EE開發,習慣了MyEclipse的開發環境,因此將Python集成到這款IDE下。關於如何在IDLE中進行,能夠查看博客《Python的安裝和詳細配置》,這裏我將重點介紹將Python集成到MyEclipse下的方法。git

一.Python與MyEclipse github

     下載連接:http://yunpan.cn/ccIaIqrGZs5Vw  訪問密碼 b828web

     直接解壓縮文件,放到MyEclipse的安裝目錄下的\Genuitec\MyEclipse-8.6 1\dropins中。重啓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 + '\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
相關文章
相關標籤/搜索