4、 列表和循環(huán)語句

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)

畫筆的屬性

畫筆(畫筆的屬性,顏色、畫線的寬度)

  1. turtle.pensize():設(shè)置畫筆的寬度;
  2. 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)
  1. 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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在Python程序...
    績重KF閱讀 2,025評論 0 1
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程,做筆記總結(jié)一下重點(diǎn)。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,963評論 0 5
  • 回顧這一年,很感謝擁有這么一群正能量的朋友們。不開心的時(shí)候可以一起吐吐槽,開心時(shí)刻一起分享,遇到問題一起分析...
    靜心等待0716閱讀 217評論 0 0
  • 乳房是女性關(guān)心的焦點(diǎn)(好啦,我知道你們男人更關(guān)注~),女性因?yàn)閾碛邪寥说男夭慷陡凶孕?。但是,乳房也常常出問題,困...
    Knight黃藥師閱讀 725評論 0 0
  • 孤獨(dú)就是每天只說一句話?!袄习澹乙煌胄∶?,對了,麻煩把空心菜換成大白菜,謝謝”。 老板走過來,把小面放在桌子上...
    lijp221閱讀 346評論 0 0

友情鏈接更多精彩內(nèi)容