Lesson_4
【1】布爾值
布爾類型是特殊的整形,盡管布爾類型用True和False來表示‘真’和‘假’,但是布爾型可以當(dāng)做整數(shù)來對待,這個(gè)型內(nèi)容我們在前面已經(jīng)體現(xiàn)過了,True相當(dāng)于整形值1,F(xiàn)alse相當(dāng)于整形值0:
print(True + True) #2
print(True * False) #0
【2】空值
空值None,它是python里的一個(gè)特殊的值。None不能理解為0,因?yàn)?是有意思的,而None是一個(gè)特殊值。
n = None
print(n)
>>>None
【3】list(列表)
有的時(shí)候需要把一堆東西暫時(shí)儲(chǔ)存起來,因?yàn)樗鼈兊哪撤N直接或間接的關(guān)系,需要把他們放在一組或者一個(gè)集合中,因?yàn)閷砜赡苡玫纳?。很多接觸過程序的人都知道數(shù)組,數(shù)組是把一大堆同種類型的數(shù)據(jù)挨個(gè)放一塊兒,然后通過下標(biāo)去尋找。由于python的變量沒有數(shù)據(jù)類型,也就是說python是沒有數(shù)組的,所以python加入了更加強(qiáng)大的列表。
python列表有多強(qiáng)大了?如果說數(shù)組比作是集裝箱,那么python的列表就是倉庫。
先看一個(gè)例子:
age1 = 18
age2 = 19
age3 = 20
age4 = 21
age5 = 22
print((age1 + age2 + age3 + age4 + age5) / 5) #20.0
這樣一次就聲明了5個(gè)變量,寫起來還非常的麻煩,那么我們用列表來試試:
list2 = [18, 19, 20, 21, 22]
print(sum(list2)/len(list2)) #20.0
使用列表以后代碼變得非常的簡潔.
創(chuàng)建列表
創(chuàng)建列表和創(chuàng)建普通變量一樣,只是把數(shù)據(jù)用中括號括起來就可以了,數(shù)據(jù)之間用逗號隔開。
先創(chuàng)建一個(gè)空的列表;
list1 =[]
print(list1,'----------',type(list1))
再創(chuàng)建一個(gè)帶有元素的列表:
list2 = [18, 19, 20, 21, 22]
print(list2)
訪問列表中的元素
我們訪問元素中的單個(gè)值,可以通過元素的索引值(index)
<font color='red'>注意,列表的索引值是從零開始的:</font>
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋']
print(name[0])
print(name[3])
>>>雞蛋
>>>傻蛋
我們看到上面的列表一面一共只有4個(gè)元素,那么索引值就是0、1、2、3,
如果輸入name[4]的話,那就超出范圍了,會(huì)報(bào)錯(cuò):
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋']
print(name[4])
>>>IndexError: list index out of range
有的時(shí)候,list可能會(huì)非常的長,我們不可能去數(shù)它,在計(jì)算索引值啊,那怎么辦了?
現(xiàn)在我要找這個(gè)列表中間的元素
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋','李狗蛋']
print(name[int(len(name)/2)])
>>> 鵝蛋
列表的組合
列表的組合其實(shí)和字符串拼接是一樣的,都是使用+號相連接。
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋','魚蛋']
nameto = ['鴕鳥蛋','恐龍蛋','鱷魚蛋','王八蛋','李狗蛋']
print(nameto + name )
>>>['鴕鳥蛋', '恐龍蛋', '鱷魚蛋', '王八蛋', '李狗蛋', '雞蛋', '鴨蛋', '鵝蛋', '傻蛋', '魚蛋']
#合并的時(shí)候那個(gè)數(shù)組在前面,那個(gè)數(shù)組的索引的值就偏小
列表的重復(fù)
列表的重復(fù)和字符串是一樣的,使用 *
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋','魚蛋']
print(name * 3 )
>>>['雞蛋', '鴨蛋', '鵝蛋', '傻蛋', '魚蛋', '雞蛋', '鴨蛋', '鵝蛋', '傻蛋', '魚蛋', '雞蛋', '鴨蛋', '鵝蛋', '傻蛋', '魚蛋']
判斷元素是不是這個(gè)列表中的
我們學(xué)過in 和 not in ,返回布爾值
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋','魚蛋']
print('驢蛋' in name)
print('驢蛋' not in name)
>>>False
>>>True
列表的分片
依然和字符串一樣
name = ['雞蛋','鴨蛋','鵝蛋','傻蛋','魚蛋']
print(name[:2]) #從0開始取2個(gè)
print(name[::2]) #從0開始,每兩個(gè)取一次
print(name[::-1]) #返回翻轉(zhuǎn)
>>>['雞蛋', '鴨蛋']
>>>['雞蛋', '鵝蛋', '魚蛋']
>>>['魚蛋', '傻蛋', '鵝蛋', '鴨蛋', '雞蛋']
二維列表
什么是二維列表,就是列表的元素也是列表
list1 = [[1,2,3],[4,5,6],[7,8,9]]
print(list1)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
二維列表獲取元素是一樣的:
list1 = [[1,2,3],[4,5,6],[7,8,9]]
print(list1[1][2]) #6
print(list1[0][1]) #2
print(list1[2][0]) #7
在列表中末尾添加新的元素
list1 = [1,2,3,4,5]
list1.append(6)
list1.append([7,8,9])
print(list1)
#添加的是列表,那么這個(gè)元素也是列表
>>>[1, 2, 3, 4, 5, 6, [7, 8, 9]]
在末尾一次性追加另一個(gè)列表中的多個(gè)值
list1 = [1,2,3,4,5]
list1.extend([6,7,8])
print(list1)
>>>[1, 2, 3, 4, 5, 6, 7, 8]
#extend()插入的只能是list類型的
在指定下標(biāo)處添加一個(gè)元素,不覆蓋原數(shù)據(jù),原數(shù)據(jù)向后順延
list1 = [1,2,3,4,5]
list1.insert(2, 100)
list1.insert(2, [200,300])
print(list1)
>>>[1, 2, [200, 300], 100, 3, 4, 5]
彈出(移除)列表中指定下標(biāo)處的元素(默認(rèn)移除最后一個(gè)元素),并返回刪除的數(shù)據(jù)
list1 = [1,2,3,4,5]
list1.pop() #不寫索引的話默認(rèn)彈出最后一個(gè)元素
#寫就是等于是list1.pop(-1)
list1.pop(2)
print(list1.pop(1))
print(list1)
>>>2
>>>[1, 4]
修改指定的值
修改list只需要通過索引重新復(fù)制就可以了
list1 = [1,2,3,4,5]
list1[0] = 0
list1[-1] = [1,2,3]
print(list1)
#[0, 2, 3, 4, [1, 2, 3]]
移除列表中的某個(gè)元素第一個(gè)匹配的結(jié)果
remove()在不知道值的下表情況下使用。
list1 = [1,2,3,4,5,4,5,4]
list1.remove(4) #刪除第一個(gè)4
print(list1)
>>>[1, 2, 3, 5, 4, 5, 4]
刪除所有指定的重復(fù)值
list1 = [1,2,3,4,5,4,5,4]
while 4 in list1:
list1.remove(4)
print(list1)
>>>[1, 2, 3, 5, 5]
獲取列表值得下標(biāo)(索引)
index() 函數(shù)用于從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。
該方法返回查找對象的索引位置,如果沒有找到對象則拋出異常。
list1 = [1,2,3,4,5,4,5,4]
print(list1.index(3))
>>>2 #返回3的索引是2
index還有兩個(gè)參數(shù):
index(需要查找的值,start,stop)
list1 = [1,2,3,4,5,4,5,4]
one = list1.index(4) #這是第一個(gè)四的位置
end = len(list1) #這是list1的含有元素長度,代表結(jié)束的位置,list1里面沒有下表為8的地方那么默認(rèn)不會(huì)去查找
start_two = one + 1 #第一個(gè)4的下表為'3',那么+1以后就不會(huì)從下表為3的位置開始找
two = list1.index(4,start_two,end) #獲取第二個(gè)two的下標(biāo)值,把值賦給變量two
start_three = two + 1 #代表第三次查找的開始位置
three = list1.index(4,start_three,end)
print(one,two,three)
>>>3 5 7
語句刪除del
注意del 不是list的一個(gè)方法,所以后面不用加小括號,它的刪除方式和pop有些類似,不過del 必須指定下標(biāo),如果不加索引,那就是刪除整個(gè)列表。
list1 = [1,2,3,4,5,4,5,4]
del list1[0]
del list1[-1]
print(list1)
>>>[2, 3, 4, 5, 4, 5]
清楚列表中的所有數(shù)據(jù)
del list
list1 = [1,2,3,4,5,4,5,4]
del list1
print(list1)
>>>[]
clear()
list1 = [1,2,3,4,5,4,5,4]
list1.clear()
print(list1)
>>>[]
計(jì)算指定值在列表中出現(xiàn)的次數(shù)
list1 = [1,2,3,4,5,4,5,4]
print(list1.count(4))
>>>3
獲取列表中元素的個(gè)數(shù)
list1 = [1,2,3,4,5,4,5,4]
print(len(list1))
>>>8
列表的的最大值、最小值、列表中數(shù)字的總和
list1 = [1,2,3,4,5,4,5,4]
print(max(list1),min(list1))
print(sum(list1))
>>>5 1
>>>28
翻轉(zhuǎn)列表
我們原來說過list[::-1]的方法可以返回翻轉(zhuǎn)列表的結(jié)果,但是默認(rèn)是不影響列表的原來的值。
list1 = [1,2,3,4,5,4,5,4]
print(list1[::-1])
print(list1)
#[4, 5, 4, 5, 4, 3, 2, 1]
#[1, 2, 3, 4, 5, 4, 5, 4] 并沒有被影響
list.reverse(),它也是翻轉(zhuǎn)列表,但是它影響原來的結(jié)果:
list1 = [1,2,3,4,5,4,5,4]
list1.reverse()
print(list1)
#[4, 5, 4, 5, 4, 3, 2, 1]
列表的排序
list.sort(func,key,reverse)
func和key參數(shù)用于設(shè)置排序得到方法和關(guān)鍵字,默認(rèn)使用的是歸并排序,reverse的默認(rèn)值是False,也就是正序排列。
正序:
list1 = [1,2,3,4,5,4,5,4]
list1.sort() #沒有寫默認(rèn)是從小到大
print(list1)
>>>[1, 2, 3, 4, 4, 4, 5, 5]
倒序:
list1 = [1,2,3,4,5,4,5,4]
list1.sort(reverse=True) #指定了reverse=True就是倒敘排列
print(list1)
>>>[5, 5, 4, 4, 4, 3, 2, 1]
模擬倒序:
list1 = [1,2,3,4,5,4,5,4]
list1.sort()
list1.reverse()
print(list1)
>>>[5, 5, 4, 4, 4, 3, 2, 1]
關(guān)于分片“拷貝”概念 深拷貝和淺拷貝
list1 = [1,3,2,9,7,8]
list2 = list1[:] #分片拷貝的并沒有受到影響,深拷貝,它在內(nèi)存中的地址與list1不一樣
list3 = list1 #淺拷貝
list4 = list1.copy() #深拷貝,它在內(nèi)存中的地址與list1不一樣,深拷貝也不會(huì)受到影響
list1.sort()
print('list1:',list1,id(list1))
print('list2:',list2,id(list2))
print('list3:',list3,id(list3))
print('list4:',list4,id(list4))
#list1: [1, 2, 3, 7, 8, 9] 4323685000
#list2: [1, 3, 2, 9, 7, 8] 4323686152
#list3: [1, 2, 3, 7, 8, 9] 4323685000
#list4: [1, 3, 2, 9, 7, 8] 4323686536
分片拷貝了就是把原先的list表的值復(fù)制到一個(gè)新的地址上,所以原來的list發(fā)生改變都不會(huì)影響到。
<image src='images/copy.jpg' width="500"/>
將其它類型轉(zhuǎn)換成list
tu = (1,2,3)
list1 = list(tu)
print(tu,type(tu))
print(list1,type(list1))
#(1, 2, 3) <class 'tuple'>
#[1, 2, 3] <class 'list'>
第八章
【1】條件控制語句
if-elif-else
我們在沒有學(xué)習(xí)這一章節(jié)之前只有if-else,那么這樣可能會(huì)寫衡多的if語句,我們看一個(gè)例子。
#現(xiàn)在做一個(gè)100分制的成績評價(jià),90分以上為A,80-90為B,70-80為C,60-70為D,60以下為E
score = int(input('請輸入0到100之間成績:'))
if 100 >= score >=90:
print('A')
if 90 >= score >=80:
print("B")
if 80 >= score >=70:
print('C')
if 70 >= score >= 60:
print('D')
if 60 >= score >= 0:
print("E")
if score > 100 or score < 0:
print('輸入錯(cuò)誤,輸入0到100之間成績')
#這樣的話需要很多的if
但是你也可以這樣去寫:
score = int(input('請輸入0到100之間成績:'))
if 100 >= score >= 90:
print('A')
else:
if 90 >= score >= 80:
print("B")
else:
if 80 >= score >= 70:
print('C')
else:
if 70 >= score >= 60:
print('D')
else:
if 60 >= score >= 0:
print("E")
else:
if score > 100 or score < 0:
print('輸入錯(cuò)誤,輸入0到100之間成績')
其實(shí)我們可以用一個(gè)if去搞定:
score = int(input('請輸入0到100之間成績:'))
if 100 >= score >=90:
print('A')
elif 90 >= score >=80:
print("B")
elif 80 >= score >=70:
print('C')
elif 70 >= score >= 60:
print('D')
elif 60 >= score >= 0:
print("E")
else:
print('輸入錯(cuò)誤,輸入0到100之間成績')
<font color='red'>注意:elif后面是沒有冒號的</font>
這三個(gè)是個(gè)很簡單的例子,但是這里面有一個(gè)問題,假設(shè)我們第一次輸入100,第一種寫法會(huì)打印除一個(gè)A,然后繼續(xù)向后面的2,3,4,5一次判斷,然后條件都不符合,退出程序。
如果現(xiàn)在我們使用第二種或第三種,在第一次判斷的時(shí)候就會(huì)打印出A,而后面的程序?qū)⒉辉賵?zhí)行,直接退出。
假設(shè)每一次判讀都會(huì)耗費(fèi)一次CPU的時(shí)間,那么第一種寫法比第二種和第三種要多耗費(fèi)400%的時(shí)間,要成為一個(gè)優(yōu)秀的程序員,必須要養(yǎng)成一個(gè)良好的思維邏輯。而python可以鍛煉你這方面的能力。
【2】python可以有效避免“懸掛else”(了解)
什么是“懸掛else”?
舉個(gè)例子,初學(xué)C的人很容易被一下代碼欺騙:
if(a >0)
if(a > 10)
print('這真的很大?。?!')
else
print('你個(gè)辣雞!!')
這個(gè)例子里面,else和if都是最外層的,我們在python里面能看出來它是術(shù)語最外面一層if的,但是在C語言里面,有個(gè)就近原則,那么它就是里面一層if的。
這樣一不小心就會(huì)導(dǎo)致錯(cuò)誤,這就是著名的‘懸掛else’,但是在python里,它是不可能出現(xiàn)的。python只有保證縮進(jìn)整齊就可以決定else是誰的
【3】不同的if-else(條件表達(dá)式或三元運(yùn)算符)
我們說多少元操作符取決于它有多少個(gè)操作數(shù)。例如賦值a = 2它是二元操作符,因?yàn)樗笥腋饔幸粋€(gè)操作數(shù),那么-1它就是一個(gè)醫(yī)院操作符。
想必大家都已經(jīng)才出來三元操作符了吧。
通過三元運(yùn)算符你可以簡單的完成下面的判斷:
a = 1
b = 2
if a<b:
print('a<b')
else:
print('a>b')
使用三元運(yùn)算符:
a = 1
b = 2
c = 'a<b' if a<b else 'a>b'
print(c)
#條件成立執(zhí)行了左邊,左邊是if的代碼體
#條件不成立執(zhí)行右邊,右邊是else的代碼體
【4】斷言、斷點(diǎn)
斷言
斷言(assert)的語法就像是if條件分支的‘近親’。
當(dāng)這個(gè)關(guān)鍵字的條件為False的時(shí)候,程序會(huì)拋出AssertionError這樣的異常。
在設(shè)么情況下會(huì)使用assert了?在我們測試的時(shí)候,與其讓錯(cuò)誤的條件繼續(xù)運(yùn)行,不讓直接讓它毀滅。
我們看下面的例子:
條件為False的結(jié)果:
a = 1
b = 2
assert a > b
if a<b:
print('a<b')
else:
print('a>b')
>>>AssertionError
條件為True的結(jié)果:
a = 1
b = 2
assert a < b #結(jié)果為真,什么都不會(huì)發(fā)生
if a<b:
print('a<b')
else:
print('a>b')
>>>a<b
【5】while循環(huán)語句
python的while循環(huán)和if的條件分支類似,在條件為真的情況下,執(zhí)行一段代碼,不同的是,while循環(huán)會(huì)一直重復(fù)執(zhí)行那段代碼,把這段代碼稱為循環(huán)體。
while 條件?。?br> 循環(huán)體
a = 0;
while a < 10:
print(a)
a += 1
這是一個(gè)死循環(huán)
while True:
print(123)
【6】for循環(huán)語句
for循環(huán)是python的計(jì)數(shù)器循環(huán),雖然說python是由C語言編寫的,但是它的for循環(huán)和C語言的for循環(huán)不太一樣,python的for循環(huán)顯得更為智能和強(qiáng)大!這主要表現(xiàn)在它會(huì)自動(dòng)調(diào)用迭代器 next(),會(huì)自動(dòng)捕獲StopIteration異常并結(jié)束循環(huán)。
string = '1000phone'
for each in string:
print(each,end='-')
>>>e-a-c-h-
【7】range()、enumerate()
range()
range()我們在前面的幾章里面已經(jīng)見識過了。其實(shí)它是for最好的小伙伴。
range(start,stop, scan)
start:計(jì)數(shù)從start開始。默認(rèn)是從0開始。例如range(5)等價(jià)于range(0, 5);
end:技術(shù)到end結(jié)束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
scan:每次跳躍的間距,默認(rèn)為1。例如:range(0, 5) 等價(jià)于 range(0, 5, 1)
for i in range(0,101,10):
print(i)
enumerate()
enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。
語法:enumerate(sequence, [start=0])
sequence -- 一個(gè)序列、迭代器或其他支持迭代對象。
start -- 下標(biāo)起始位置。
list1 = ["這", "是", "一個(gè)", "測試"]
for index, item in enumerate(list1):
print index, item
>>>0 這
>>>1 是
>>>2 一個(gè)
>>>3 測試
使用enumerate()生成鍵值對元祖
list1 = ["這", "是", "一個(gè)", "測試"]
print(list(enumerate(list1)))
>>>[(0, '這'), (1, '是'), (2, '一個(gè)'), (3, '測試')]
for循環(huán)的魅力不止這一點(diǎn),還有其它的各式各樣的搭檔幫助實(shí)現(xiàn)各種亂七八糟的功能,后面在講解元祖的時(shí)候在介紹給大家
【8】break、continue
break 語句的作用是終止當(dāng)前循環(huán),并且跳出循環(huán)體。
bingo = '我最帥'
answer = input('請輸入我最想聽的一句話:')
while True:
if bingo == answer:
break
answer = input('答對了才能出去:')
print('哎喲,不錯(cuò)哦~')
continue 語句的作用是終止本輪循環(huán)并直接開始下一輪循環(huán)
for i in range(10):
if i % 2 != 0:
print('')
continue
i += 2
print(i)
海龜制圖
python2.6版本中后引入的一個(gè)簡單的繪圖工具,叫做海龜繪圖(Turtle Graphics),turtle庫是python的內(nèi)部庫,使用導(dǎo)入即可 import turtle
先說明一下turtle繪圖的基礎(chǔ)知識:
1、畫布(canvas)
畫布就是turtle為我們展開用于繪圖區(qū)域, 我們可以設(shè)置它的大小和初始位置
screensize()
設(shè)置畫布大小:
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
參數(shù)分別為畫布的寬(單位像素), 高, 背景顏色
例如:
turtle.screensize(800, 600, "green")
turtle.screensize() #返回默認(rèn)大小(400, 300)
setup()
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
參數(shù):
width, height: 輸入寬和高為整數(shù)時(shí), 表示像素; 為小數(shù)時(shí), 表示占據(jù)電腦屏幕的比例
(startx, starty): 這一坐標(biāo)表示 矩形窗口左上角頂點(diǎn)的位置, 如果為空,則窗口位于屏幕中心
例如:
turtle.setup(width=0.6, height=0.6)
turtle.setup(width=800, height=800, startx=100, starty=100)
2. 畫筆
畫筆的狀態(tài)
在畫布上,默認(rèn)有一個(gè)坐標(biāo)原點(diǎn)為畫布中心的坐標(biāo)軸, 坐標(biāo)原點(diǎn)上有一只面朝x軸正方向小烏龜. 這里我們描述小烏龜時(shí)使用了兩個(gè)詞語:坐標(biāo)原點(diǎn)(位置),面朝x軸正方向(方向), turtle繪圖中, 就是使用位置方向描述小烏龜(畫筆)的狀態(tài)
畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度)
- turtle.pensize():設(shè)置畫筆的寬度;
- turtle.pencolor(); 沒有參數(shù)傳入,返回當(dāng)前畫筆顏色,傳入?yún)?shù)設(shè)置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組,
例如:
import turtle as t
t.pencolor('brown')
tup = (0.2, 0.8, 0.55)
t.pencolor(tup)
- turtle.speed(speed): 設(shè)置畫筆移動(dòng)速度,畫筆繪制的速度范圍[0,10]整數(shù), 數(shù)字越大越快
繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運(yùn)動(dòng)命令,一種為畫筆控制命令,還有一種是全局控制命令
(1)畫筆運(yùn)動(dòng)命令:
| 命令 | 說明 |
|---|---|
| turtle.forward(distance) | 向當(dāng)前畫筆方向移動(dòng)distance像素長 |
| turtle.backward(distance) | 向當(dāng)前畫筆相反方向移動(dòng)distance像素長度 |
| turtle.right(degree) | 順時(shí)針移動(dòng)degree° |
| turtle.left(degree) | 逆時(shí)針移動(dòng)degree° |
| turtle.pendown() | 移動(dòng)時(shí)繪制圖形,缺省時(shí)也會(huì)繪制 |
| turtle.goto(x,y) | 將畫筆移動(dòng)到坐標(biāo)為x,y的位置 |
| turtle.penup() | 移動(dòng)時(shí)不繪制圖形,提起筆,用于另起一個(gè)地方繪制時(shí)用 |
| turtle.speed(speed) | 畫筆繪制的速度范圍[0,10]整數(shù) |
| turtle.circle() | 畫圓,半徑為正(負(fù)),表示圓心在畫筆的左邊(右邊)畫圓 |
(2)畫筆控制命令:
| 命令 | 說明 |
|---|---|
| turtle.pensize(width) | 繪制圖形時(shí)的寬度 |
| turtle.pencolor() | 畫筆顏色 |
| turtle.fillcolor(colorstring) | 繪制圖形的填充顏色 |
| turtle.color(color1, color2) | 同時(shí)設(shè)置pencolor=color1, fillcolor=color2 |
| turtle.filling() | 返回當(dāng)前是否在填充狀態(tài) |
| turtle.begin_fill() | 準(zhǔn)備開始填充圖形 |
| turtle.end_fill() | 填充完成; |
| turtle.hideturtle() | 隱藏箭頭顯示; |
| turtle.showturtle() | 與hideturtle()函數(shù)對應(yīng),顯示 |
(3) 全局控制命令
| 命令 | 說明 |
|---|---|
| turtle.clear() | 清空turtle窗口,但是turtle的位置和狀態(tài)不會(huì)改變 |
| turtle.reset() | 清空窗口,重置turtle狀態(tài)為起始狀態(tài) |
| turtle.undo() | 撤銷上一個(gè)turtle動(dòng)作 |
| turtle.isvisible() | 返回當(dāng)前turtle是否可見 |
| stamp() | 復(fù)制當(dāng)前圖形 |
| turtle.write(s[,font=("font-name",font_size,"font_type")]) | 寫文本,s為文本內(nèi)容,font是字體的參數(shù),里面分別為字體名稱,大小和類型;font為可選項(xiàng), font的參數(shù)也是可選項(xiàng) |
3. 命令詳解
turtle.circle(radius, extent=None, steps=None)
描述: 以給定半徑畫圓
參數(shù):
radius(半徑); 半徑為正(負(fù)),表示圓心在畫筆的左邊(右邊)畫圓
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內(nèi)切正多邊形,多邊形邊數(shù)為steps)
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
4. 繪圖舉例
畫一個(gè)太陽花
import turtle as t
import turtle as t
t.color("red", "yellow")
t.speed(10)
t.begin_fill()
for _ in range(50):
t.forward(200)
t.left(170)
t.end_fill()
t.done()
五角星
import turtle
import time
turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")
turtle.begin_fill()
for _ in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
time.sleep(1)
turtle.penup()
turtle.goto(70, -50)
turtle.color("black")
turtle.write("千鋒", font=('Arial', 30, 'normal'))
turtle.done()