Python
技能目標(biāo)
理解編程基本原理和思想
掌握python語言的基礎(chǔ)語法
能夠使用python進(jìn)行基本的開發(fā)工作
熟練使用項目開發(fā)IDE:eclipse膳灶,PyDev
能夠使用Python開發(fā)簡單入門的游戲和網(wǎng)頁
第一節(jié)
概述
環(huán)境配置
python安裝
python解釋器
配置Windows環(huán)境變量
配置pip和easy install,D:\Python27\Scripts
Java環(huán)境變量配置
eclipse下載安裝
在help中查找PyDev進(jìn)行安裝
在創(chuàng)建項目時需手動加入已安裝好的python解釋器:Interpreter
注意:python2.7默認(rèn)編碼格式是ASCII,3.0默認(rèn)是utf-8
第二節(jié)
數(shù)據(jù)表示番捂,即數(shù)據(jù)類型
概述
接入一個外接包
requests:用于提供很多节芥,針對網(wǎng)頁上的抓取篇恒,以及相關(guān)的函數(shù)
字符串
單引號
雙引號
三引號
Format字符串
使用+號連接字符串
變量
命令規(guī)則:第一個字符必須是字母或下劃線核偿,其余字符可以是字母敲董,數(shù)字空免,下劃線空另,區(qū)分大小寫
字面常量
常量不會被改變
比如5,6等等固定值
注釋
#號鍵
numerics Type
int(包含boolean
float
complex
打印數(shù)據(jù)類型的方法type(變量名)
運算符//是向下去整
,sequences
,mappings
,classes
,instances
exceptions
第三節(jié)
數(shù)據(jù)結(jié)構(gòu)
print打印拓展
打印中文字符串
# coding=utf-8
換行符:\n
List
創(chuàng)建list
不要求list中必須有相同元素
打印list
在打印時蹋砚,需要將list類型轉(zhuǎn)化為str
str(list名)
訪問list
list名[]
元祖tuple
創(chuàng)建之后無法被更改扼菠,刪除和修改都不行
將list中的方括號改為圓括號即可
list中可以使用的函數(shù),tuple都可以使用
list和tuple的對比
tuple中可以包含list
mixed_tuple = (1,2,['a','b'])
Tuple是不可變的list
相同點
定義方式相同
元素都是按次序排列
索引都是從0開始
負(fù)數(shù)索引與list一樣從tuple的尾部開始計數(shù)
不同點
tuple沒有append或extend方法
tuple沒有remove或pop方法
tuple可以一次賦多值
內(nèi)置函數(shù)
len([1,2,3])
打印list長度
【‘Hello’】* 4
對一個list元素進(jìn)行重組
list[-1]
代表從右邊開始數(shù)第2位
list[1:]
代表從第二個元素開始的所有元素
3 install【1坝咐,2循榆,3】
判斷一個元素是否在list中
[1,2,3]+[4,5,6]
拼接
dictionnary
鍵值對
常用方法
創(chuàng)建
phone_book = {'Tom':123,'Jerry':456,'kim':789}
修改
phone_book["Tom"] = 888
新增
phone_book["Henry"] = 666
刪除
del phone_book["kim"]
清空內(nèi)容
phone_book.clear()
刪除dictionnary
del phone_book
特性
一個鍵必須是唯一的
當(dāng)有重復(fù)時不會報錯,會依次取第一個出現(xiàn)的鍵
鍵是不變的
不能使用list充當(dāng)鍵
字符串
數(shù)組
元組tuple
內(nèi)置函數(shù)
比較兩個字典元素
cmp(dict1,dict2)
計算字典元素個數(shù)墨坚,即鍵的總數(shù)
len(dict)
輸出字典可打印的字符串表示
str(dict)
返回輸入的變量類型秧饮,如果變量是字典就返回字典類型
type(variable)
內(nèi)置方法
刪除字典內(nèi)所有元素
radiansdict.clear()
返回一個字典的淺復(fù)制
radiansdict.copy()
創(chuàng)建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應(yīng)的初始值
radiansdict.fromkeys()
返回指定鍵的值盗尸,如果值不在字典中返回default值
radiansdict.get(key,default=None)
如果鍵在字典dict里返回true柑船,否則返回false
radiansdict.has_key(key)
以列表返回可遍歷的鍵值元組數(shù)組
radiansdict.items()
以列表返回一個字典所有鍵
radiansdict.keys()
和get()類似,但如果鍵沒有存在于字典泼各,并將添加鍵并將值設(shè)為default
radiansdict.setdefault(key,default=None)
把字典dict2的鍵/值對更新到dict里
radiansdict.update(dict2)
以列表返回字典中的所有值
radiansdict.values()
函數(shù)Function
def定義函數(shù)
def say_hi():
帶參數(shù)的函數(shù)
設(shè)置參數(shù)的默認(rèn)值
def repeat_str(str,times = 1):
參數(shù)的取值:形參和實參是一一對應(yīng)的關(guān)系
*nums代表元組
**words代表數(shù)組
word = "python",another_word = "java"
return:返回函數(shù)值
全局變量
global
可以在函數(shù)內(nèi)進(jìn)行定義椎组,定義后變量的值為之后改變的值
局部變量
第四節(jié)
Control Flow控制流
if for語句
for語句
for i in range(1,10):
rang指定一個整數(shù)范圍,包括第一個值不包括最后一個值
遍歷list历恐,tuple寸癌,dictionnary
用戶輸入函數(shù)
input
while語句
當(dāng)某個條件成立的時候會一直運行循環(huán)體,直到條件不成立
while guess_flag == False:
break
跳出當(dāng)前循環(huán)弱贼,執(zhí)行循環(huán)之后的代碼
continue
忽略continue之后的代碼蒸苇,繼續(xù)從循環(huán)頭開始
pass
繼續(xù)執(zhí)行帕森斯之后的代碼,可以理解為什么也不做
第五節(jié)
輸入輸出
接受用戶的輸入:input()
str_1 = input("Enter a string: ")
str_2 = input("Enter another string: ")
python2.7要求輸入字符串格式的數(shù)據(jù)
輸入格式:str(),format
print("str_1 is : " + str(str_1) + "str_2 is :" + str(str_2))
print("str_1 is {1} + str_2 is {0}".format(str_1,str_2))
寫出文件
# 創(chuàng)建一個open實體對象吮旅,sentences.txt可以為絕對路徑溪烤,‘w’表示寫文件模式
f = open('C:\Users\Administrator\Desktop\sentences.txt','w')
f.write(some_sentences)
f.close()
讀入文件
讀文件read是默認(rèn)的
f =open('C:\Users\Administrator\Desktop\sentences.txt')
while True:
line = f.readline()
if len(line) == 0:
break
print(line)
f.close()
第六節(jié)
異常處理
語法
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語句> #如果引發(fā)了'name'異常庇勃,獲得附加的數(shù)據(jù)
else:
<語句> #如果沒有異常發(fā)生
語法錯誤(Syntax Errors)
while True:
try:
x = int(input("Please enter a number"))
break
except ValueError:
print("Not valid input,try again.......")
異常(Exceptions)
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
第七節(jié)
面向?qū)ο筇幚?Object-Oriented)
類(class)
現(xiàn)實世界中的一些事物的封裝檬嘀,如:學(xué)生
屬性,如名字责嚷、成績
引用
通過引用對類的屬性和方法進(jìn)行操作
實例化
創(chuàng)建一個類的具體事例對象鸳兽,如學(xué)生張三
代碼
class Student:
def __init__(self,name,grade):
self.name = name
self.grade = grade
def introduce(self):
print("hi! I'm "+ self.name)
print("My grade is : "+ str(self.grade))
def improve(self,amount):
self.grade = self.grade + amount
print("My grade add : "+ str(self.grade))
Henry = Student("Henry",99)
Henry.introduce()
Henry.improve(1)
設(shè)計代碼思路
初始化參數(shù)
自我介紹
增加分?jǐn)?shù)
創(chuàng)建對象
對象調(diào)用方法
裝飾器(decorator)
代碼設(shè)計思路
定義一個做蛋糕函數(shù)
定義一個加蠟燭函數(shù)
通過裝飾器功能加蠟燭
輸出加蠟燭后的結(jié)果
裝飾器本質(zhì)上是一個Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外功能罕拂,裝飾器的返回值也是一個函數(shù)對象揍异。它經(jīng)常用于有切面需求的場景,比如:插入日志爆班、性能測試衷掷、事務(wù)處理、緩存柿菩、權(quán)限校驗等場景戚嗅。裝飾器是解決這類問題的絕佳設(shè)計,有了裝飾器枢舶,我們就可以抽離出大量與函數(shù)功能本身無關(guān)的雷同代碼并繼續(xù)重用
@符號是裝飾器的語法糖懦胞,在定義函數(shù)的時候使用,避免再一次賦值操作
代碼
def add_candles(cake_func):
def insert_candles():
return cake_func() + "and candles"
return insert_candles
# 注意:return cake_func()加括號表示函數(shù)執(zhí)行完成的結(jié)果祟辟;return insert_candles表示函數(shù)對象
@add_candles
def make_cake():
return "cakes 22"
print(6)
# @add_candles這句話相當(dāng)于make_cake = add_candles(make_cake)
print(make_cake())
第八節(jié)
開發(fā)一個小游戲
GUI:Graphical User Interface
創(chuàng)建一個GUI程序
1医瘫、導(dǎo)入 Tkinter 模塊
2、創(chuàng)建控件
3旧困、指定這個控件的 master醇份, 即這個控件屬于哪一個
4稼锅、告訴 GM(geometry manager) 有一個控件產(chǎn)生了。
tkinter:GUI library for Python
Tkinter 模塊(Tk 接口)是 Python 的標(biāo)準(zhǔn) Tk GUI 工具包的接口 .
代碼
from Tkinter import * #導(dǎo)入庫
import Tkinter #導(dǎo)入包
import tkMessageBox #導(dǎo)入包
top = Tkinter.Tk()
w = Label(top,text = "abc")
w.pack() # 將小部件放置到主窗口中
# tkMessageBox.showinfo("title", "message")
tkMessageBox.askyesnocancel("問答", "Enter a number")
top.mainloop()# 進(jìn)入消息循環(huán)
第九節(jié)
制作一個簡單網(wǎng)頁
1. 安裝python2.7
easy_install windows installer(python 2.7 32bit)
2. 安裝lpthw.web
easy_install lpthw.web
3. 創(chuàng)建目錄
4. 目錄下創(chuàng)建app.py
代碼
import web
urls = ('/','index')
app = web.application(urls,globals())
class index:
def GET(self):
greeting = "Hello!"
return greeting
if __name__ == "__main__":
app.run()