python學(xué)習(xí)的第二天

一、導(dǎo)入

1.python庫中的turtle(海龜繪圖)

Python標(biāo)準(zhǔn)庫中有個turtle模塊,可以生成標(biāo)準(zhǔn)的應(yīng)用程序窗口進(jìn)行圖形繪制。turtle的繪圖方式非常簡單直觀——想象有一只尾巴上蘸著顏料的小海龜在電腦屏幕上爬行,隨著它的移動就能畫出線條來,turtle程序窗口的繪圖區(qū)域使用直角坐標(biāo)系,海龜初始位置在窗口繪圖區(qū)正中的(0,0)點,頭朝x軸的正方向。
利用turtle我們可以繪制小豬佩奇,如下圖所示:


下面我們先學(xué)習(xí)簡單的利用海龜繪圖繪制”NEUSOFT“,如下圖所示:



1.首先,導(dǎo)入turtle 并使用as 給turtle起一個別名t,取了別名之后,就只能使用t來繪圖

# 設(shè)置畫筆的大小  10px
t.pensize(10)
#設(shè)置畫筆顏色為藍(lán)色
t.color('blue')

因為初始畫筆的位置是在畫布的中心位置(0,0),把畫布分為四個象限,所以我們要把畫筆的位置向左平移,移動畫筆時我們要將畫筆抬起,利用penup()函數(shù)抬起畫筆(可以簡寫為pu()),利用pendown()函數(shù)落下畫筆(可以簡寫為pd()),goto(x,y)函數(shù)讓畫筆移動到指定位置,x代表x軸,y表示y軸

t.penup()
t.goto(-260, 0)
t.pd()

2.首先繪制字母N,字母N是由兩根豎線和一根斜線組成,初始畫筆的筆頭朝x軸的正方向,我們要把筆頭的方向改為向上,使用left()函數(shù),讓畫筆向左轉(zhuǎn)90度,使畫筆朝上,然后使用forward()函數(shù)畫長度為80px的線條,這樣一條豎線就畫好了。接下來我們繪制斜線,首先使畫筆向右轉(zhuǎn)145度,使畫筆朝向東南方向,畫一筆,然后使畫筆向左轉(zhuǎn)145度,使畫筆朝上,畫一筆,N就畫好了。

# 繪制 N
t.left(90)
t.forward(80)
t.right(145)
# 簡寫
t.fd(100)
t.lt(145)
t.fd(80)

3.繪制字母E,字母E是由三橫一豎組成

# 繪制E
t.penup()
t.goto(-130, 0)
t.pd()

t.left(90)
t.forward(40)
t.right(90)
t.forward(80)

t.penup()
t.goto(-130,40)
t.pd()
t.left(90)
t.forward(40)

t.penup()
t.goto(-130,80)
t.pd()
t.forward(40)

4.繪制U,我們可以把U看作由兩根豎線和一個半圓組成。使用circle(25,180)函數(shù)來繪制半圓,25表示半徑,180表示旋轉(zhuǎn)的度數(shù),360度就是畫一個圓

t.penup()
t.goto(-100, 80)
t.pd()
t.left(90)
t.forward(60)

t.penup()
t.goto(-50, 80)
t.pd()
t.forward(60)

t.penup()
t.goto(-100, 20)
t.pd()

t.circle(25,180)

5.繪制S,我們可以把S看出由2個四分之三的圓組成。

t.penup()
t.goto(20, 60)
t.pd()
t.circle(22,270)
t.circle(-22,270)

6.繪制O,

t.penup()
t.goto(100, 60)
t.pd()

t.circle(22, 180)
t.fd(40)
t.penup()
t.goto(100, 20)
t.pd()
t.circle(-22, 180)

t.penup()
t.goto(100, 20)
t.pd()
t.fd(40)

7.繪制F,

t.penup()
t.goto(140, 0)
t.pd()

t.forward(80)

t.penup()
t.goto(180,40)
t.pd()
t.left(90)
t.forward(40)

t.penup()
t.goto(180,80)
t.pd()
t.forward(40)

8.繪制T,

t.penup()
t.goto(230, 0)
t.pd()

t.right(90)
t.forward(80)

t.penup()
t.goto(255,80)
t.pd()
t.lt(90)
t.forward(50)
t.done()

最后要讓gui界面一直顯示, 所有執(zhí)行的代碼要寫在done()函數(shù)之前。這樣我們的NEUSOFT就繪制成功了。

二、python常用數(shù)據(jù)類型

1.Python 列表(List)

序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu)。序列中的每個元素都分配一個數(shù)字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。

Python有6個序列的內(nèi)置類型,但最常見的是列表和元組。

序列都可以進(jìn)行的操作包括索引,切片,加,乘,檢查成員。

此外,Python已經(jīng)內(nèi)置確定序列的長度以及確定最大和最小的元素的方法。

列表是最常用的Python數(shù)據(jù)類型,它可以作為一個方括號內(nèi)的逗號分隔值出現(xiàn)。列表的數(shù)據(jù)項不需要具有相同的類型,創(chuàng)建一個列表,只要用逗號分隔不同的數(shù)據(jù)項使用方括號括起來即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

列表的輸出與遍歷,如下圖所示:

#定義方式  []
#定義一個空列表
list=[]
hero_name = ['魯班七號', '安琪拉', '李白', '劉備']
#輸出
print(hero_name)
#遍歷
for hero in hero_name:
    print(hero)

列表的常見操作

#1.列表的訪問
列表名[索引]
print(hero_name[2])

# 2.添加 append
hero_name.append('后羿')
print('添加后的列表', hero_name)

#3.修改
hero_name[1] = 1000
print('修改后的列表',hero_name)

#4.刪除
del hero_name[1]
print('刪除后的列表',hero_name)

列表: 與c語言中的數(shù)組很相似, 只不過可以存儲不同類型的數(shù)據(jù)
優(yōu)點:靈活 ,缺點: 效率低

練習(xí)

創(chuàng)建 [1, 2, 3......10] 這樣的一個數(shù)字列表
1.創(chuàng)建空列表
2.使用for 循環(huán), 在循環(huán)中添加元素值

li = []
   for i in range(1, 11):
li.append(i)
print(li)
2. 字符串
定義形式 '' " "
切片 對序列截取一部分的操作,適用于列表
 name = 'abcdefg'
 name[1]

[起始位置:終止位置:步長] 左閉右開

print(name[1:4])
print(name[0:7:2])

輸出為:a c e g
全切片的時候可以省略初始和終止位置

print(name[::2])

常用方法

a.去兩端空格
name = '    abcdefg     '
# 查看序列內(nèi)元素的個數(shù)  len()
print(len(name))
name = name.strip()
print('去空格之后', len(name))
b. 替換
 price = '$999'
 price = price.replace('$','')
 print(price)
c.列表變成字符串的方法 join
# li = ['a', 'b', 'c', 'd']
# a = '_'.join(li)
# print(a)
# print(type(a))
3.元組 tuple

元組和列表很像只不過元組不可以修改

a.定義 ()
 a = ('zhangsan', 'lisi', 'wangwu',1000)
 print(a)
 print(type(a))
b.訪問
# print(a[1])
c.修改
a[3] = 'zhaoliu'

元組需要注意的, 只有一個元素的元組

b = ('lisi') #不是元組
b1 = ('lisi',) #是元組
c = (1000) #不是元組
c1 = (1000,) #是元組
print(type(b))
print(type(b1))
print(type(c))
print(type(c1))
4.字典 dict

key-value數(shù)據(jù)結(jié)構(gòu)

定義形式 {}
info = {'name':'李四', 'age':34, 'addr':'重慶市渝北區(qū)'}
print(len(info))
print(info)
a.字典的訪問
print(info['name'])
b.修改
info['addr'] = '北京市朝陽區(qū)'
print('修改后字典',info)
c.增加
info['sex'] = 'female'
print('增加后字典',info)
獲取字典中所有的鍵
print(info.keys())
獲取字典中所有的值
print(info.values())
獲取字典中所有的key-value
print(info.items())
把由元組組成的列表,轉(zhuǎn)換為字典
d = [('name', '李四'), ('age', 34), ('addr', '北京市朝陽區(qū)'), ('sex', 'female')]
d1 = dict(d)
print(d1)
遍歷字典
for k, v in info.items():
    print(k, v)
5. 集合

無序,不重復(fù)

set1 = {'zhangsan', 'lisi', 222}
print(type(set1))
遍歷
for x in set1:
    print(x)
6.掌握python常用數(shù)據(jù)類型和語法
a. 列表的排序
 li = []
 for i in range(10):
     li.append(i)
 print(li)
 from random import shuffle
 shuffle(li)
 print('隨機(jī)打亂的列表', li)
 li.sort(reverse=True)
 print('排序后的列表', li)

stu_info = [
    {"name":'zhangsan', "age":18},
    {"name":'lisi', "age":30},
    {"name":'wangwu', "age":99},
    {"name":'tiaqi', "age":3},

]
print('排序前', stu_info)
b.python函數(shù)的定義
# def 函數(shù)名(參數(shù)):
#     函數(shù)體
def sort_by_age(x):
    return x['age']

# key= 函數(shù)名    ---  按照什么進(jìn)行排序
# 根據(jù)年齡大小進(jìn)行正序排序
stu_info.sort(key=sort_by_age, reverse=True)
print('排序后', stu_info)
c.練習(xí)
name_info_list = [
    ('張三',4500),
    ('李四',9900),
    ('王五',2000),
    ('趙六',5500),
]

def sort_by_grade(i):
    return i[1]

# 根據(jù)元組第二個元素進(jìn)行正序排序

name_info_list.sort(key=sort_by_grade)
print(name_info_list)
d.本地文件讀取
# python中使用open內(nèi)置函數(shù)進(jìn)行文件讀取
 f = open(file='./novel/threekingdom.txt', mode='r', encoding='utf-8')
 data = f.read()
 f.close()
 data = open(file='./novel/threekingdom.txt', mode='r', encoding='utf-8').read()
 print(data)

# with as 上下文管理器  不用手動關(guān)閉流
 with open('./novel/threekingdom.txt', 'r', encoding='utf-8') as f:
     data = f.read()
     print(data)

寫入
 txt = 'i like python'
 with open('python.txt','w', encoding='utf-8') as f:
     f.write(txt)

text = """<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>重慶師范歡迎你</h1>
</body>
</html>"""
print(text)
with open('chongqingshifan.html','w', encoding='utf-8') as f:
    f.write(text)

三、中文分詞 jieba

導(dǎo)入jieba分詞
import jieba
三種分詞模式
seg = "我來到北京清華大學(xué)"
# 精確模式  精確分詞
seg_list = jieba.lcut(seg)
print(seg_list)
# 全模式  找出所有可能的分詞結(jié)果    冗余性大
seg_list1 = jieba.lcut(seg,cut_all=True)
print(seg_list1)
#  搜索引擎模式
seg_list2 = jieba.lcut_for_search(seg)
print(seg_list2)
例子
text = '小明碩士畢業(yè)于中國科學(xué)院計算所,后在日本京都大學(xué)深造'
seg_list4 = jieba.lcut(text,cut_all=True)
print(seg_list4)
#  搜索引擎模式  先執(zhí)行精確模式,在對其中的長詞進(jìn)行處理
seg_list5 = jieba.lcut_for_search(text)
print(seg_list5)
三國演義小說分詞
import jieba
# 三國演義小說分詞
# 讀取三國演義小說
with open('./novel/threekingdom.txt','r', encoding='utf-8') as f:
    words = f.read()
    print(len(words)) # 字?jǐn)?shù)  55萬
    words_list = jieba.lcut(words)
    print(len(words_list)) # 分詞后的詞語數(shù)  35萬
    print(words_list)

四、詞云word could

導(dǎo)入詞云 WordCloud類
from wordcloud import WordCloud
import jieba
import imageio
繪制詞云
 text = 'He was an old man who fished alone in a skiff in the Gulf Stream and he had gone eighty-four days now without taking a fish. In the first forty days a boy had been with him. But after forty days without a fish the boy’s parents had told him that the old man was now definitely and finally salao, which is the worst form of unlucky, and the boy had gone at their orders in another boat which caught three good fish the first week. It made the boy sad to see the old man come in each day with his skiff empty and he always went down to help him carry either the coiled lines or the gaff and harpoon and the sail that was furled around the mast. The sail was patched with flour sacks and, furled, it looked like the flag of permanent defeat.'
 wc = WordCloud().generate(text)
 wc.to_file('老人與海.png')

結(jié)果:


三國演義小說詞云繪制,以中國地圖的形狀繪制
# 三國演義小說分詞
# 讀取三國演義小說
mask = imageio.imread('./china.jpg')
with open('./novel/threekingdom.txt','r', encoding='utf-8') as f:
    words = f.read()
    # print(len(words)) # 字?jǐn)?shù)  55萬
    words_list = jieba.lcut(words)
    # print(len(words_list)) # 分詞后的詞語數(shù)  35萬
    print(words_list)
    # 將words_list轉(zhuǎn)化成字符串
    novel_words = " ".join(words_list)
    print(novel_words)
    # WordCloud()里面設(shè)置參數(shù)
    wc = WordCloud(
        font_path='msyh.ttc',
        background_color='white',
        width=800,
        height=600,
        mask=mask
    ).generate(novel_words)
    wc.to_file('三國詞云.png')

結(jié)果:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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