早就想學(xué)學(xué)python了,但是一直沒(méi)有勇氣,一個(gè)偶然的機(jī)會(huì),感謝圖靈教育送了我一本《父與子的編程之旅:與小卡特一起學(xué)Python》,讓我有激情、有動(dòng)力學(xué)下去。
而我也很爭(zhēng)氣,很神奇的讀完了這本書(shū),要知道我現(xiàn)在很少讀web相關(guān)外的技術(shù)書(shū)籍的,我給這本書(shū)的評(píng)價(jià)是5星,很棒的一本入門(mén)書(shū),淺顯易懂,非常適合新手來(lái)閱讀,而且這不是一本講python的書(shū),而是一本講編程的書(shū)。
感謝這本書(shū),感謝python讓我重新找回了編程的樂(lè)趣,終于又有了那種剛剛學(xué)習(xí)C語(yǔ)言時(shí)候的感覺(jué)了,所以我決定寫(xiě)下這篇文章,算是我的讀書(shū)筆記吧,也是給自己做個(gè)備忘,主要是對(duì)這本書(shū)和python的總結(jié)。
正文從這里開(kāi)始,下面的內(nèi)容都會(huì)按照書(shū)的目錄結(jié)構(gòu)來(lái)進(jìn)行記錄。
學(xué)習(xí)python的第一步是安裝python,可以到python的官網(wǎng)下載,這里有很多版本,選擇合適的版本和平臺(tái)下載即可
我選擇是2.x,我下載時(shí)最新的版本是2.7.12,windows平臺(tái)的安裝就是一路下一步即可安裝好。
在開(kāi)始菜單搜索或找到python安裝目錄,打開(kāi)IDLE(Python GUI),即進(jìn)入了python的交互模式,
交互模式的意思就是,你可以輸入一行代碼,然后按下回車(chē),python會(huì)立馬告訴你執(zhí)行結(jié)果,這個(gè)特別好用。
print "Hello World"
上面代碼的執(zhí)行結(jié)果就是打印出Hellow World,print是python的輸出語(yǔ)句。
打開(kāi)菜單->File->New File(ctrl + N),就可以進(jìn)入文本編輯模式,這里可以輸入多行代碼,比如鍵入如下代碼:
print "Hello World";
print 22 + 10;
然后保存到某個(gè)目錄,名字為xxx.py,菜單->Run->Run Module(F5),即可執(zhí)行上面的代碼。
每個(gè)程序都是由下面三個(gè)部分組成:
在python中聲明變量像下面這樣,python中的變量都類(lèi)似于引用,也是沒(méi)有類(lèi)型的。
num = 123;
str = "123";
python可以完成基本的數(shù)學(xué)運(yùn)算,當(dāng)初python設(shè)計(jì)出來(lái)就是為了完成數(shù)學(xué)運(yùn)算。
python可以完成四大基礎(chǔ)運(yùn)算,如下所示:
print 3 + 2 # 4
print 3 - 2 # 1
print 3 * 2 # 6
print 3 / 2 # 1
print 3.0 / 2 # 1.5
在前面的3 + 2
中,3 和 2稱(chēng)為操作數(shù),+ 稱(chēng)為操作符。
python的運(yùn)算順序和數(shù)學(xué)中一樣,乘除高于加減,如果要改變運(yùn)算順序,和數(shù)學(xué)中一樣的,需要添加括號(hào)。
print 3 + 1 * 2 # 6
print (3 + 1) * 2 # 8
在python中指數(shù)可以像下面這樣表示
print 3 ** 5 # 3 * 3 * 3 * 3 * 3 = 243
求余數(shù)使用%,像下面這樣,注意和除法區(qū)分開(kāi)
print 7 % 2 # 1
print 7 / 2 # 3
python中沒(méi)有想c++中的自增和自減(i++),要實(shí)現(xiàn)一個(gè)數(shù)的自增的像下面這樣
num = 2
num += 1 # 3
num -= 1 # 2
上面的代碼和下面的代碼效果是一樣的
num = 2
num = num + 1 # 3
num = num - 1 # 2
python中的變量雖然沒(méi)有類(lèi)型,但是值是有類(lèi)型的。
可以通過(guò)下面的函數(shù)來(lái)改變數(shù)據(jù)類(lèi)型
三個(gè)函數(shù)都會(huì)返回一個(gè)新的值,而不會(huì)改變?cè)瓉?lái)的值,因?yàn)橹凳遣豢勺兊?/p>
a = 24
b = float(a) # 24.0
c = 38.0
d = int(c) # 38
python中的變量是沒(méi)有類(lèi)型,那么如何檢查一個(gè)變量當(dāng)前的值是什么類(lèi)型的呢?答案就是type函數(shù)。
a = 24
type(a) # <type 'int'>
b = 24.0
type(b) # <type 'float'>
c = 'str'
type(c) # <type 'str'>
對(duì)一個(gè)程序來(lái)說(shuō)最重要的一點(diǎn)就是輸入了,如果電腦不能響應(yīng)輸入,那么就一點(diǎn)用處都沒(méi)有了。
raw_input函數(shù)可以從用戶(hù)哪里得到一個(gè)字符串
print "請(qǐng)輸入:"
some = raw_input();
print "你的輸入是:", some
上面的程序會(huì)輸出你輸入的任何字符
raw_input還可以接受一個(gè)參數(shù),這個(gè)參數(shù)會(huì)被作為輸出,上面的程序可以簡(jiǎn)化為下面這樣
some = raw_input("請(qǐng)輸入:")
print "你的輸入是:", some
print用來(lái)給打印輸出,簡(jiǎn)單點(diǎn)說(shuō)就是向控制臺(tái)打印一些東西
print "yan"
print "yan"
print "yan"
上面的三條語(yǔ)句會(huì)得到下面的輸出
yan
yan
yan
如果想在同一行打印的話(huà)可以在結(jié)尾加上逗號(hào)
print "yan",
print "yan",
print "yan"
上面的語(yǔ)句會(huì)得到下面的輸出
yan yan yan
中間會(huì)有一個(gè)空格,print還支持多個(gè)參數(shù),中間用逗號(hào)分隔
print "yan", "yan", "yan"
上面的語(yǔ)句會(huì)得到下面的輸出,中間也有一個(gè)空格
yan yan yan
可以python的內(nèi)置庫(kù),可以獲得從互聯(lián)網(wǎng)的而輸入,下面的代碼可以輸出我的博客內(nèi)容
import urllib2
file = urllib2.urlopen("http://yanhaijing.com")
msg = file.read()
print msg
每次程序執(zhí)行都輸出一樣的東西沒(méi)什么意思,需要有判斷分支才有意思。
人之所以有智能是因?yàn)槿四軌蛩伎?,面?duì)選擇是能做出選擇,那么如何讓計(jì)算機(jī)也能夠做出選擇呢?那就是測(cè)試,我們需要做一些測(cè)試,然后決定接下來(lái)做什么。這些測(cè)試可能包括如下問(wèn)題:
完成測(cè)試并更根據(jù)結(jié)果做出測(cè)試稱(chēng)之為分支,在python中使用if來(lái)進(jìn)行測(cè)試:
if a == 1
python中的代碼塊比較奇葩,不是靠大括號(hào)而是縮進(jìn)來(lái)確定范圍的,聲明一個(gè)代碼塊時(shí)就加一個(gè)冒號(hào),就像下面這樣:
if a == 1:
print "a等于1"
print "代碼塊"
print "這里不是代碼塊了"
python中的elseif和else像下面這樣:
if a == 1:
print "a等于1"
elif a == 2:
print "a等于2"
else:
print "a等于其他值"
python中的比較操作符不只有等于還有其他,比如大于小于等,完整的列表如下
(大于)
= (大于等于)
python中也可以表達(dá)邏輯演算中的與 或 非,分別用下面的符號(hào)表示
邏輯運(yùn)算符的用例如下
if a != 1 and a != 2:
print "a不等于1和2"
來(lái)說(shuō)說(shuō)循環(huán),循環(huán)分為兩種,計(jì)數(shù)循環(huán)和條件循環(huán)。
python中的計(jì)數(shù)循環(huán)使用for in,語(yǔ)法如下所示,和c語(yǔ)言有很大差別
for looper in [1, 2, 3, 4]:
print looper
[1, 2, 3, 4]
是列表,python中類(lèi)似數(shù)組的東西,如果循環(huán)次數(shù)很多,可以用range來(lái)代替
for looper in range(1, 5):
print looper
range還可以之傳入一個(gè)參數(shù),比如range(5)
等同于 range(0, 5)
如果改變循環(huán)的步長(zhǎng),可以傳入第三個(gè)參數(shù),range(0, 6, 2)
等同于 [0, 2, 4]
,其中2就是步長(zhǎng)
步長(zhǎng)還可以是負(fù)數(shù),range(6, 0, -2)
,等同于[6, 4, 2]
條件循環(huán)的意思就是判斷某個(gè)條件是否為真,如果為真就一直循環(huán)下去,使用while關(guān)鍵字
while 1 == 1:
print "永遠(yuǎn)也不會(huì)停下來(lái)"
跳出循環(huán)可以使用break和continue,分別是退出循環(huán)和退出本次循環(huán)。
對(duì)于程序而言注釋必不可少,python的注釋和類(lèi)c語(yǔ)言不一樣,是使用#號(hào),#號(hào)后面的都被當(dāng)作注釋?zhuān)裣旅孢@樣
# 我是注釋我是注釋
print 213 # 行末注釋
python中沒(méi)有多行注釋?zhuān)荒苡脝涡凶⒁暷M多行注釋?zhuān)裣旅孢@樣
# ***********
# 多行注釋
# 多行注釋
# ***********
python中存取數(shù)據(jù)有兩種類(lèi)型的東西,一種叫做列表,一種叫做字典。
python中的列表和數(shù)組很像,創(chuàng)建列表的語(yǔ)法如下所示:
list = [1, 2, 3, 4]
print list[0] # 1
可以用append向列表添加一個(gè)元素
list = []
list.append(1)
print list # 1
python中想從列表中獲取列表片段,需要用到分片(slicing)
list = ['a', 'b', 'c', 'd']
print list[1:3]
>>> ['b', 'c']
分片的語(yǔ)法可以簡(jiǎn)寫(xiě),可以省略冒號(hào)前后的數(shù)字
list = [1, 2, 3, 4, 5]
print list[:]
>>> [1, 2, 3, 4, 5]
print list[3:]
>>> [4, 5]
print list[:3]
>>> [1, 2, 3]
需要注意分片會(huì)返回一個(gè)新的列表,不會(huì)修改原列表。
要查找摸個(gè)元素是否在列表中,可以使用in
list = ['a']
print 'a' in list
>>> True
del 從列表刪除指定位置元素
list = ['a', 'b', 'c']
del list[0]
print list
>>> ['b', 'c']
列表有很多方法,上面的append就是其中之一
append用來(lái)在列表末尾添加一個(gè)元素
list = [1]
list.append(2)
print list
>>> [1, 2]
extend在列表末尾添加多個(gè)元素
list = [1]
list.extend([2, 3])
print list
>>> [1, 2, 3]
insert在指定位置插入元素
list = [1, 2, 3]
list.insert(1, 'a')
print list
>>> [1, 'a', 2, 3]
remove從列表中刪除指定元素,如果刪除的元素不在列表中會(huì)報(bào)錯(cuò),可以和in關(guān)鍵字配合使用
list = [1, 2, 3]
list.remove(2)
print list
>>> [1, 3]
注意:和del區(qū)分,del用來(lái)刪除指定的索引位置元素
pop去除列表中最后一個(gè)元素
list = [1, 2, 3]
a = list.pop()
print a
print list
>>> 3
>>> [1, 2]
index查找指定元素在列表中的索引,如果刪除的元素不在列表中會(huì)報(bào)錯(cuò),可以和in關(guān)鍵字配合使用
list = [1, 2, 3]
print list.index(3)
>>> 2
注意:和in區(qū)分開(kāi),in會(huì)返回布爾值,index會(huì)返回索引
sort用來(lái)給列表排序
list = [4, 2, 1]
list.sort()
print list
>>> [1, 2, 4]
如果想倒敘排列列表,可以給sort傳一個(gè)參數(shù)
list = [1, 2, 3]
list.sort(reverse = True)
print list
>>> [3, 2, 1]
注意:sort會(huì)修改原來(lái)的列表,而不是創(chuàng)建一個(gè)新的列表,所以下面的操作不正確
print list.sort() # 不正確的做法
>>> None
list.sort() # 需要分兩步
print list
reverse翻轉(zhuǎn)列表,逆序排序數(shù)組還可以用這個(gè)
list = [1, 2, 3]
list.reverse()
print list
>>> [3, 2, 1]
sorted輸一個(gè)系統(tǒng)函數(shù),而不是數(shù)組函數(shù),可以得到一個(gè)列表的有序副本,而不會(huì)影響原來(lái)的列表
list = [3, 2, 1]
nlist = sorted(list)
print list
print nlist
>>> [3, 2, 1]
>>> [1, 2, 3]
列表可用for循環(huán)來(lái)遍歷
for i in [1, 2, 3]:
print i
>>> 1
>>> 2
>>> 3
pythton中的列表是可變類(lèi)型,python中有一種不可變的列表——元組,元組的語(yǔ)法如下
tuple = (1, 2, 3) # 不可增刪改
python中的另一個(gè)種集合類(lèi)型就是字典,類(lèi)似其他語(yǔ)言中的關(guān)聯(lián)數(shù)組或哈希表,分為鍵和值,通過(guò)鍵來(lái)存取值。
phoneNumbers = {'yan': 133}
print phoneNumbers['yan']
>>> 133
phoneNumbers['hai'] = 666;
print phoneNumbers['hai']
>>> 666
字典也有一些方法
keys方法可以列出字典總的全部鍵值
dic = {'yan': 1, 'hai': 2}
print dic.keys()
>>> ['hai', 'yan']
values方法返回字典中的全部值
dic = {'yan': 1, 'hai': 2}
print dic.values()
>>> [2, 1]
如果需要字典返回有序的鍵值,可以對(duì)返回的鍵值列表進(jìn)行排序
clear用來(lái)刪除字典中的而所有條目
dic = {'yan': 1, 'hai': 2}
dic.clear()
print dic
>>> {}
del用來(lái)刪除字典中的數(shù)據(jù)
dic = {'yan': 1}
del dic['yan']
print dic
>>> {}
檢查某個(gè)關(guān)鍵字是否在字典中使用in
dic = {'yan', 1}
print 'yan' in dic
>>> True
當(dāng)程序變大以后就需要一些方法來(lái)把程序分解成更小的部分,在python中主要有三種方法:
創(chuàng)建一個(gè)函數(shù)需要使用def關(guān)鍵字
def hello():
print 'hello world'
hello()
>>> 'hello world'
函數(shù)可以有多個(gè)參數(shù),中間用逗號(hào)分隔
def hello(who):
print 'hello', who
hello()
>>> hello yan
函數(shù)可以有返回值
def add(x, y):
return x + y
add(1, 2)
>>> 3
函數(shù)內(nèi)部的變量都是局部變量,在函數(shù)外部不能訪(fǎng)問(wèn)
def test():
x = 1
print x
x = 10
print x
test()
>>> 10
>>> 1
在函數(shù)中可以訪(fǎng)問(wèn)全局變量,但不可修改,修改會(huì)創(chuàng)建一個(gè)局部變量
def test2():
y = 10
print y
y = 1
test2()
print y
>>> 10
>>> 1
在函數(shù)內(nèi)部想強(qiáng)制訪(fǎng)問(wèn)全局變量,需要使用global
def test3():
global z
z = 10
print z
z = 1
test3()
print z
>>> 1
>>> 10
>>> 10
對(duì)象可以把函數(shù)和數(shù)據(jù)收集在一起。對(duì)象可以包含屬性和動(dòng)作。
舉個(gè)例子就是球,可以操作一個(gè)球,踢球,撿球,這些操作成為動(dòng)作;球的顏色,大小稱(chēng)為球的屬性。
python中稱(chēng)為對(duì)象的屬性和方法。
python中創(chuàng)建對(duì)象分為兩步,第一步是創(chuàng)建對(duì)象的描述——類(lèi);第二步使用類(lèi)來(lái)創(chuàng)建一個(gè)真正的對(duì)象。
# 定義對(duì)象描述
# __init__ 初始化對(duì)象方法
# setColor 對(duì)象的方法
class Ball:
def __init__(self, color):
self.color = color
def setColor(self, color):
self.color = color
# 實(shí)例化對(duì)象
ball = Ball('red');
print ball.color
ball.setColor('green')
print ball.color
# python中的對(duì)象可動(dòng)態(tài)添加屬性,這一點(diǎn)和java不一樣
ball.size = 'big'
>>> red
>>> green
python中對(duì)象有一些魔法方法,上面的__init__就是,還有一個(gè)魔法方法是__str__,可以自定義對(duì)象的打印文本
class Ball:
def __str__():
return 'yanhaijing.com'
ball = Ball()
print ball
>>> yanhaijing.com
python的對(duì)象方法調(diào)用時(shí),的第一個(gè)參數(shù)表示調(diào)用的對(duì)象,self是約定俗成的做法,不是必須的。
python也不支持私有的屬性,這一點(diǎn)和js一樣。
在面向?qū)ο缶幊讨?,?lèi)可以從其他類(lèi)繼承屬性和方法。
class People:
__init__(self, name):
self.name = name
talk():
# pass作為占位符,可以表示為空函數(shù)
pass
# 繼承People
class Teacher(People):
__init__(self, name):
# 調(diào)用父類(lèi)方法
People.__init__(self, name)
如果一個(gè)東西可以由幾部分組成,我們就可以說(shuō)這個(gè)東西是模塊化的。樂(lè)高積木是最直觀的例子了。
python中每個(gè)文件都是一個(gè)模塊,模塊意味著分治,可以把一個(gè)復(fù)雜的系統(tǒng)拆分成由簡(jiǎn)單的部分組成,這在大型程序中是非常有意義的。
模塊是更高維度的抽象,可以把一組功能類(lèi)似的函數(shù),都放到一個(gè)模塊中,一個(gè)復(fù)雜的模塊也可以由更多簡(jiǎn)單的模塊組成。
模塊就是一個(gè)文件,文件中的函數(shù),變量都可以被別的模塊引用,也就是說(shuō)模塊的一切的公開(kāi)的
# module1.py
qiu = 1
def hello():
return 'hello'
上面定義了一個(gè)模塊,有一個(gè)公開(kāi)的屬性qiu和一個(gè)公開(kāi)的函數(shù)hello。
在其他文件中可以用import關(guān)鍵字引用模塊。
import module1
print module1.qiu
print module1.hello()
>>> 1
>>> hello
還可以換一種寫(xiě)法
from module1 import hello
print hello()
>>> hello
python中內(nèi)置了很多系統(tǒng)函數(shù),要使用這些函數(shù)需要引用相應(yīng)的模塊,比如:
time模塊能夠獲取你的計(jì)算機(jī)時(shí)鐘的信息,其中比較常用的就是sleep可以用來(lái)讓程序暫停一會(huì)
import time
time.sleep(1)
random模塊用于生成隨機(jī)數(shù)
import random
print random.randint(0, 100) # 1-100之間隨機(jī)數(shù)
print random.random() # 0-1之間隨機(jī)數(shù)
>>> 4
>>> 0.5456454545
這一章講了如何打印出格式化的內(nèi)容。
可以在字符串中插入換行
print "hello \nworld"
>>> hello
>>> world
看了這本書(shū)我才知道制表符還有這個(gè)功能,一個(gè)制表符會(huì)占據(jù)8個(gè)字符的間隔,但是會(huì)和前面的字符串合并
print 'aaa\txyz'
print 'aaaa\txyz'
print 'aaaaa\txyz'
>>> aaa xyz
>>> aaaa xyz
>>> aaaaaa xyz
python中在字符串中插入變量稱(chēng)為格式化字符串,使用百分號(hào)(%)。
str = '3'
print '1%s3' % str
>>> 123
%s表示插入字符串,還可以用%i用來(lái)表示整數(shù),%f表示浮點(diǎn)數(shù),都成為格式化字符串,用來(lái)指示如何顯示 變量。
數(shù)字格式化可能是最復(fù)雜的部分了
%d和%i用來(lái)格式化整數(shù),如果傳入的是小數(shù),則會(huì)進(jìn)行截?cái)?/p>
number = 12.55
print '%i' % numver
print '%d' % numver
>>> 12
>>> 12
%f或%F用來(lái)格式化浮點(diǎn)數(shù)
number = 12.1234
print '%f' % number # 默認(rèn)顯示六位小數(shù)
>>> 12.123400
print '%.2f' # 顯示兩位小數(shù),末尾四舍五入
>>> 12.12
print '%+f' % number #強(qiáng)制顯示證號(hào)
>>> +12.123400
# 如果希望正負(fù)數(shù)的列表對(duì)齊,但是整數(shù)前沒(méi)有正號(hào),可使用空格
number1 = -98.12
number = 98.12
print '% .2f' % number1
print '% .2f' % number2
>>> -98.12
>>> 98.12
%e和%E用來(lái)格式化E記法的數(shù)字
number = 12.1234
print '%e' % number
>>> 1.212340e+01
print '%.2e'
>>>> 1.2e+01
%g和%G用來(lái)自動(dòng)表示為浮點(diǎn)數(shù)或E記法
number1 = 12
number2 = 1234567890
print '%g' % number1
print '%g' % number2
>>> 12
>>> 1.23456e+09
如果有多個(gè)格式化的字符串,需要使用元組
n1 = 1
n2 = 2
print '%i-%i' % (n1, n2)
>>> 1-2
還可以把格式化的字符串賦值給變量
str = '%.2f' % 12.123
print str
>>> 12.12
python2.6中引入了格式化的新方法,format函數(shù)
print '{0:.1f}-{1:.1f}'.format(12.12, 11.12)
>> 12.1-11.1
格式化的符號(hào)用大括號(hào)括起來(lái),冒號(hào)前面代表參數(shù)的索引。
如果想分解字符串使用split
list = '1,2,3,4'.split(',')
print list
>>> ['1', '2', '3', '4']
連接字符串使用join方法
list = [1, 2, 3, 4]
str = ''.join(list)
print str
>>> 1 2 3 4
搜索字符串的方法有很多
下面來(lái)距離各個(gè)方法的用法
'abc'.startswith('a')
>>> True
'abc'.endswith(c)
>>> True
'b' in 'abc'
>>> True
'abc'.index('b')
>>> 1
刪除字符串的一部分使用strip
str = 'abcdef'
print str.strip('a')
>>> bcdef
str = ' abc '
print str.strip() # 沒(méi)有參數(shù)刪除空格
>>> abc
改變大小寫(xiě)使用lower和upper
print 'abc'.upper()
>>> 'ABC'
print 'ABC'.lower()
>>> 'abc'
這一章講了python如何讀寫(xiě)文件。
文件的屬性包括文字,類(lèi)型,位置和大小等。
將一組文件組織在一起得東西稱(chēng)為目錄,目錄還可以組織目錄,稱(chēng)為子目錄。
對(duì)文件進(jìn)行操作之前需要先打開(kāi)文件
file = open('test.txt', 'r'); # 讀文件
file = open('test.txt', 'w'); # 寫(xiě)文件
file = open('test.txt', 'a'); # 追加文件
讀文件之前需要先打開(kāi)文件,然后使用readlines將文件讀到列表中,列表的每一項(xiàng)是文件中的一行
file = open('test.txt', 'r'); # 讀文件
lines = file.readlines()
print lines
file.close() # 一定不要忘記關(guān)閉文件
>>> ['line1\n', 'line2\n', 'line3']
還可以使用readline每次讀取一行文件
file = open('test.txt', 'r'); # 讀文件
line1 = file.readline()
line2 = file.readline()
print line1
print line2
file.close()
>>> line1
>>> line2
如果想改變文件當(dāng)前讀到了第幾行,可以使用seek
file = open('test.txt', 'r'); # 讀文件
line1 = file.readline()
file.seek()
line2 = file.readline()
print line1
print line2
file.close()
>>> line1
>>> line1
文件分為文本文件和二進(jìn)制文件,打開(kāi)文本文件和二進(jìn)制文件的方式有些區(qū)別
file1 = open('text.txt', 'r') # 打開(kāi)文本文件
file2 = open('music.mp3', 'rb') # 打開(kāi)二進(jìn)制文件
寫(xiě)文件兩種方式,第一種是覆蓋現(xiàn)有文件,第二種是追加現(xiàn)有文件。
file1 = open('text.txt', 'w') # 打開(kāi)文件,后續(xù)可寫(xiě)
file2 = open('text.txt', 'a') # 打開(kāi)文本,后續(xù)可追加
打開(kāi)文件后可以使用write函數(shù)來(lái)往文件寫(xiě)內(nèi)容
file = open('text.txt', 'w')
file.write('\nline1')
file.write('\nline1')
file.close()
還可以用print函數(shù)進(jìn)行寫(xiě)文件
file = open('text.txt', 'w')
print >> file, "\nline1"
file.close()
上面的>>
符號(hào)的意思是重定向輸出,即把輸出重定向到文件,而不是顯示器
python中為在文件中存取對(duì)象提供了一個(gè)方便的模塊——pickle
存儲(chǔ)文件的過(guò)程如下:
import pickle
list = ['12', '12', '12', '12']
file = open('temp.pkl', 'w')
pickle.dump(list, file);
file.close()
還原的過(guò)程如下:
import pickle
file = open('temp.pkl', 'r')
list = pickle.load(file)
file.close()
print list
>>> ['12', '12', '12', '12']
書(shū)中還提到了很多小游戲,其中也介紹了很多制作游戲和UI的庫(kù),比如easyui,pygame等
舉一個(gè)猜拳游戲的小例子:
import random
secret = random.randint(1, 99)
guess = 0
tries = 0
print "helow, guess"
print "number from 1 to 99, 6 times"
while guess != secret and tries < 6:
guess = input("guess is:")
if guess < secret:
print "too low"
elif guess > secret:
print "too high"
tries = tries + 1
if guess == secret:
print "success"
else:
print "fail"
print "secret is ", secret
這是我讀《父與子的編程之旅:與小卡特一起學(xué)Python》后記錄總結(jié)的一些筆記,書(shū)中還介紹了很多其他內(nèi)容,如果你沒(méi)看過(guò)我強(qiáng)烈建議你看一看這本書(shū),如果看過(guò)了可以看這篇筆記用來(lái)快速回憶里面的內(nèi)容。
最后感謝你的閱讀。
更多建議: