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

Python文件操作

讀取文件
內(nèi)置函數(shù)open file='文件的路徑"相對(duì)路徑即可狐树。 “.”是代表當(dāng)前文件下 沟启; “/”代表文件夾之間的分隔; mode='r' 只讀方式段审; encoding='UTF-8' 全蝶,編碼方式中文都是UTF-8。英文編碼方式使用GBK

打開文件 例如

f = open(file='./threekingdom.txt', mode='r', encoding='UTF-8')
words = f.read()
print(words)
  • 關(guān)閉流
f.close()
print(len(words))
print(type(words))

Python排序

打亂函數(shù)
代碼案例

# 創(chuàng)建一個(gè)列表[1.2.3....9]
li = []
for i in range(10):
    li.append(i)
print(li)
from random import shuffle               # 調(diào)用打亂函數(shù)
shuffle(li)             # 打亂函數(shù)
print('打亂后', li)

排序 first

# 創(chuàng)建一個(gè)列表[1.2.3....9]
li = []
for i in range(10):
    li.append(i)
print(li)
from random import shuffle        # 調(diào)用打亂函數(shù)
shuffle(li)             # 打亂函數(shù)
print('打亂后', li)
li.sort(reverse=True)    #排序
print('排序后', li)

列表中含字典的排序

stu_info = [
    {'name': 'zhangsan', 'age': 33},
    {'name': 'asd', 'age': 56},
    {'name': 'cas', 'age':3},
    {'name': 'fvd', 'age':104},
]
print(stu_info)

函數(shù)def

格式如下:
def函數(shù)名():
函數(shù)體

def sort_by_age(x):
    return x['age']

# 按照年齡排序
 #key 是接受一個(gè)函數(shù)名   用于指定按照什么順序排列

stu_info.sort(key=sort_by_age)         # 調(diào)用函數(shù)寺枉,排列默認(rèn)正序排列
print('排序后', stu_info)

def sort_by_name(x):
    return x['name']

stu_info.sort(key=sort_by_name, reverse=True)    # reverse=True倒序排列
print('排序后', stu_info)

列表中含元組的排序
代碼案例

stu_info = [
    ('zda', 89),
    ('asd', 24),
    ('fdsa', 2),
]
print(stu_info)
def sort_by_tuple(x):
    return x[1]
stu_info.sort(key=sort_by_tuple)
print('排序后', stu_info)

外引

# 交換兩個(gè)變量
a = 10
b = 100
print('a=', a,'b=', b)
a, b = b, a
print('a=', a,'b=', b)

#可以一次聲明多個(gè)不同類型變量
c, d, e = 100, [98, 56], 'asd'
print(c)
print(d)
print(e)

詞云繪制

在這里先介紹引入第三方庫(kù)函數(shù)抑淫,語法是
from 模塊名字 import name1,name2
例如
from random import randint
等效于
import random
random.randint
當(dāng)我們引用第三方庫(kù)函數(shù)時(shí)通常先下載安裝第三方庫(kù)姥闪,我們通常使用Terminal通過pip install + 庫(kù)名下載 丈冬, 但是有時(shí)候會(huì)出現(xiàn)一些不能下載的問題,這種情況很常見甘畅,我們?cè)趺慈ソ鉀Q呢?這里介紹有三種方法往弓。
1.GUI界面安裝第三方庫(kù)可以在PyCharm工具欄小板手處安裝疏唾,具體過程:小扳手--project+文件夾名--project inter prefer--右上角“+”--搜索到將其選擇--Install Package,下載安裝即可
2.本地安裝方法
https://www.lfd.uci.edu/~gohlke/pythonlibs/里找到你想要安裝的GUI庫(kù)文件函似,可以下載win32.whl的槐脏,這個(gè)跟你電腦多少位操作系統(tǒng)無關(guān),下載后copy到當(dāng)前工程文件夾下撇寞,點(diǎn)擊Terminal后輸入pip install + 下載的文件名(輸入幾個(gè)關(guān)鍵字按Tab即可有提示)顿天。
3.在所用的JetBrains PyCharm 2019.1.1 x64軟件的路徑下所存的py格式的文件夾出單擊文件夾,按住shift再按鼠標(biāo)右鍵蔑担,選擇“在此處進(jìn)入Powersshell窗口”牌废,在窗口中同樣可以進(jìn)行下載。
而詞云繪制需先下載wordcloud第三方庫(kù)啤握。
首先繪制一個(gè)簡(jiǎn)單的英文詞云鸟缕,代碼如下

from wordcloud import WordCloud
#如何繪制一個(gè)簡(jiǎn)單的詞云
#1.英文詞云
txt = 'i like  python , python is the best project language in the word'
wc = WordCloud().generate(txt)
wc.to_file('python.png')

循循漸進(jìn) 1. 先繪制三國(guó)小說詞云
案例代碼如下

import jieba        #引入jieba庫(kù) ,第一天學(xué)習(xí)到的知識(shí)排抬,可以去前一篇看
from wordcloud import WordCloud       #引入wordcloud庫(kù)  
import imageio     
mask = imageio.imread('china.jpg')      #將背景設(shè)為中國(guó)地圖形狀懂从,圖片需讀者自備,否則會(huì)出現(xiàn)錯(cuò)誤
#1.讀取三國(guó)這本小說
#使用with 上下文管理器進(jìn)行本地文件讀取
with open('./threekingdom.txt', 'r', encoding='utf-8') as f:    #這種方法省略了關(guān)閉流蹲蒲,第二種讀取文件方式 番甩,比較常用 ,優(yōu)點(diǎn)較明顯
    words = f.read()
    print(words)
#2.對(duì)小說字符串進(jìn)行分詞
word_list = jieba.lcut(words)    #第一天學(xué)習(xí)內(nèi)容
print(word_list)
# 把返回的分析列表轉(zhuǎn)換成字符串
word_text = ' '.join(word_list)    #第一天學(xué)習(xí)內(nèi)容
print(word_text)
#3.使用wordcloud進(jìn)行繪制
WordCloud(
    background_color='grey',      #背景顏色
    width=800,                           
    height=600,
    font_path='MSYH.TTC',         #字體届搁,要用的字體要導(dǎo)入當(dāng)前文件夾缘薛,需自備
    mask=mask,                    #背景形狀
).generate(word_text).to_file('三國(guó)詞云.png')    #png圖片格式
  1. 升級(jí)窍育,三國(guó)人物出場(chǎng)次數(shù)Top10繪制詞云
    案例代碼
import jieba     #引入jieba庫(kù) ,第一天學(xué)習(xí)到的知識(shí)掩宜,可以去前一篇看
from wordcloud import WordCloud
import imageio
mask = imageio.imread('china.jpg')
# 1.讀取三國(guó)這本小說
with open('./三國(guó).txt', 'r', encoding='utf-8') as f:    # 這種方法省略了關(guān)閉流
    words = f.read()
    word_list = jieba.lcut(words)
    # 定義一個(gè)集合蔫骂,為了將與人物無關(guān)的詞剔除
    excludes = {"將軍", "卻說", "丞相", "二人", "不可", "荊州", "不能", "如此", "商議",
                "如何", "主公", "軍士", "軍馬", "左右", "次日", "引兵", "大喜", "天下",
                "東吳", "于是", "今日", "不敢", "魏兵", "陛下", "都督", "人馬", "不知",
                '孔明曰','玄德曰','劉備', '云長(zhǎng)'}
    # print(word_list)
    print(len(word_list))
    # 定義一個(gè)字典{'人名':'出現(xiàn)次數(shù)'}
    counts = {}

    for word in word_list:
        if len(word) == 1:
            continue
        else:
            # 往字典里添元素
            counts[word] = counts.get(word, 0) + 1     #第一天學(xué)習(xí)到的內(nèi)容
    # print(counts)
    #將意思相同的人物合并
    counts['孔明'] = counts['孔明'] + counts['孔明曰']
    counts['劉備'] = counts['劉備'] + counts['玄德曰'] + counts['玄德']
    counts['關(guān)羽'] = counts['云長(zhǎng)'] + counts['關(guān)羽']
    # 刪除無關(guān)的信息
    for word in excludes:
        del counts[word]
    # 將count轉(zhuǎn)化成列表
    items = list(counts.items())
    # print(items)      #這里用到了sorted()和lambda()倆函數(shù),下面會(huì)講到牺汤,我這里是用之前的排序函數(shù)寫的   辽旋,學(xué)到后面的內(nèi)容后將這里改進(jìn)了  下面這個(gè)是現(xiàn)在知識(shí)解決的,兩種方法使用一個(gè)
    #def items_by_list(x):
    #    return x[1]
    #items.sort(key=items_by_list, reverse=True)
    #print(items)

    items = sorted(items, key=lambda x: x[1], reverse=True)  # 倒敘reverse=True
    print(items)
    # 顯示  計(jì)數(shù)前10的詞語
    role_list = []
    for i in range(10):
        # 拆包    序列解包
        # print(items[i])
        role_name, count = items[i]
        print(role_name, count)

        # _是給讀者看的  表示并沒有使用臨時(shí)變量
        for _ in range(count):
            role_list.append(role_name)
    # print(role_list)
    text = ' '.join(role_list)
    WordCloud(
        background_color='white',
        width=800,
        height=600,
        font_path='MSYH.TTC',
        collocations=False,     #將每個(gè)詞語出現(xiàn)兩次關(guān)閉
        mask=mask,
    ).generate(text).to_file('top10.png')

函數(shù)和lambda表達(dá)式

函數(shù)格式
def 函數(shù)名():
內(nèi)容pass #占位
函數(shù)名() #函數(shù)必須得調(diào)用才有效

def 函數(shù)名():

    pass             #占位

函數(shù)名()               #函數(shù)必須得調(diào)用才有效

案例代碼

#1~num  之間累加和
def caculate_num(num):
    result = 0
    for i in range(num+1):
        result += i
    return result

sum_num = caculate_num(100)
print(sum_num)

函數(shù)和方法的區(qū)別:沒區(qū)別
函數(shù)是針對(duì)于面向過程
方法是面向?qū)ο?/p>

lambda匿名函數(shù)
格式:lambda 參數(shù)1檐迟,參數(shù)2补胚,。追迟。溶其。:表達(dá)式
避免重名 , 不能反復(fù)調(diào)用
案例代碼

pingfang = lambda n: n*n
print(pingfang(2))
add = lambda x, y: x+y
print(add(4, 3))

案例代碼

stu_info = [
    {'name': 'zhangsan', 'age': 33},
    {'name': 'lisi', 'age': 8},
    {'name': 'wangwu', 'age': 66},
    {'name': 'tianqi', 'age': 17},
]
print(stu_info[2])
stu_info.sort(key=lambda x: x['age'])
print('排序后', stu_info)

排序兩種方式

stu_info1 = [
  ('zhangsan', 89),
  ('lisi', 7),
  ('wangwu ', 222),
  ('zhaoliu', 44)
]
stu_info1.sort(key=lambda x: x[1])             #.sort()函數(shù)排序
print(stu_info1)

stu_info1 = sorted(stu_info1, key=lambda x: x[1])     # sorted()函數(shù)排序
print(stu_info1)
# .sort()和sorted() 的區(qū)別
# 1.  .sort()是列表特有的方法敦间。sorted()是適用于任何可迭代對(duì)象
# 2.  .sort()是在原來列表上進(jìn)行修改    sorted()是返回一個(gè)新的列表
# 3.調(diào)用形式不一樣

列表推導(dǎo)式

#生成一個(gè)列表[0.1.2.....9]
li = []
for i in range(10):
    li.append(i)
print(li)
# 使用列表推導(dǎo)式
#語法  [表達(dá)式  for 臨時(shí)變量 in 可迭代對(duì)象 條件]
li2 = [i for i in range(10)]
print(li2)
li = []
for i in range(20):
    li.append(i)
print(li)
# 篩選出所有的偶數(shù)    得先遍歷
new_li = []
for i in li:
    if i % 2 == 1:
        new_li.append(i)
print(new_li)
# 使用列表推導(dǎo)式
li3 = [i for i in range(20) if i%2==0]
print(li3)
# 生成正負(fù)隨機(jī)的列表
from random import randint
li5 = []
for _ in range(10):
    li5.append(randint(-20, 20))
print(li5)
#用列表推導(dǎo)式表示
li5 = [randint(-20, 20) for _ in range(10)]
print(li5)
#刪選所有的大于0的
li6 = [i for i in li5 if i > 0]
print(li6)

用三個(gè)案例來解讀列表推導(dǎo)式 瓶逃,可在其中摸索關(guān)系。

Python的可視化表示

切片
python中特色廓块, 列表和字符串可切片厢绝,左閉右開
案例代碼

name = 'abcdefg'
#左閉右開
print(name[0:3])
print(name[0:8:2])
print(name[::2])# 起始值中止值可以省略
print(name[:])
print(name[::-1])   # name進(jìn)行反轉(zhuǎn)  gfedcba
print(name[-2::-2])# abcdefg   往前查是g是從-1往前查   往后查a是從0開始查

字符串輸出

i = 2
grade = '十五'
print('這是我們上課的第{}天,我是第{}名'.format(i, grade))
對(duì)分析的數(shù)據(jù)進(jìn)行可視化表示
# 導(dǎo)入庫(kù)
# as 起別名
# 名字來源于MATLAB
from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ['SimHei']      #這句和下句是導(dǎo)入字體 按格式寫就行
plt.rcParams['axes.unicode_minus'] = False
# 繪制條形圖
import string
print(string.ascii_uppercase)       #大寫字母從A-Z
x = ["廠商{}".format(i) for i in string.ascii_uppercase[:5]]
print(x)
from random import randint
y = [randint(200, 300) for _ in range(5)]
print(y)
# 繪制條形圖
plt.bar(x, y)
plt.show()

內(nèi)容很豐富,很簡(jiǎn)單带猴,很基礎(chǔ)昔汉。但是對(duì)于新人來說,也是種巨大的挑戰(zhàn)拴清,想要學(xué)好一門語言并不是一種容易的事靶病。失敗并不可怕,可怕的是我本可以口予。加油娄周!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沪停,隨后出現(xiàn)的幾起案子昆咽,更是在濱河造成了極大的恐慌,老刑警劉巖牙甫,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掷酗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡窟哺,警方通過查閱死者的電腦和手機(jī)泻轰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來且轨,“玉大人浮声,你說我怎么就攤上這事虚婿。” “怎么了泳挥?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵然痊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我屉符,道長(zhǎng)剧浸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任矗钟,我火速辦了婚禮唆香,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吨艇。我一直安慰自己躬它,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布东涡。 她就那樣靜靜地躺著冯吓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疮跑。 梳的紋絲不亂的頭發(fā)上组贺,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音祸挪,去河邊找鬼。 笑死贞间,一個(gè)胖子當(dāng)著我的面吹牛贿条,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播增热,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼整以,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了峻仇?” 一聲冷哼從身側(cè)響起公黑,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摄咆,沒想到半個(gè)月后凡蚜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吭从,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年朝蜘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涩金。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谱醇,死狀恐怖暇仲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情副渴,我是刑警寧澤奈附,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站煮剧,受9級(jí)特大地震影響斥滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轿秧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一中跌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菇篡,春花似錦漩符、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至议蟆,卻和暖如春闷沥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咐容。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工舆逃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戳粒。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓路狮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蔚约。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奄妨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 開發(fā)一個(gè)APP要花多少錢砸抛? 曾經(jīng)有個(gè)很火的段子,叫做“開發(fā)一個(gè)APP要花多少錢”树枫。引一下西喬的漫畫: OH直焙!開發(fā)一...
    張東_7536閱讀 607評(píng)論 0 0
  • 前幾天在起點(diǎn)發(fā)了文 每天兩三千字 居然要堅(jiān)持不下來了 今天本應(yīng)該再更新幾千字的 結(jié)果一直拖延到現(xiàn)在也沒動(dòng)筆 有了智...
    可以愛你嘛閱讀 341評(píng)論 0 2
  • 你想多了,北大林校長(zhǎng)沒有下野砂轻。他只是去了一趟云南箕般。 5月17號(hào),北京大學(xué)校長(zhǎng)林建華做客西南聯(lián)大講壇舔清,他說中國(guó)大學(xué)搞...
    記錄者老路閱讀 1,661評(píng)論 1 10
  • 文 | 阿魚魚_Ayuyu Chapter 03 |【周蒙】渭樸 渭樸是西南第一大城思相城下一個(gè)極其普通的縣丝里,...
    劉瑜_Demi閱讀 233評(píng)論 0 1