Python学习第二天

GUI界面安装第三方库

  • 快捷键ctrl+alt+s
  • 点击project
  • 点击右上角加号进行安装

如何获取文件的路径

  • 右键想要获取路径的文件,点击Copy relative path,即复制成功

读取txt文件

当前文件夹 /代表文件夹之间的分割
mode='r' 代表只读的方式
案例:

f=open(file='./threekingdom.txt',mode='r',encoding='UTF-8')
words=f.read()
print(words)
print(type(words))
#关闭流
f.close()
print(len(words))
image.png

即输出txt内容以及类型和字节。

import语句

在开始使用一个模块中的函数之前,必须用import语句导入该模块。
结构格式:
from 模块名 import name1,name2
例如:
from random import randint
等效于
import random
random.randint

如何绘制一个简单的词云

案例:

from wordcloud import WordCloud

#如何绘制一个简单的词云
#1、英文词云
#类
txt='i like python,python is the best project language in the world'
wc=WordCloud().generate(txt)
wc.to_file('python.png')

输出结果:


python.png

绘制三国小说词云

案例:

#@file:绘制三国小说词云.py
#@Software: PyCharm
import jieba
from wordcloud import WordCloud
import imageio
#1.读取三国这本小说
#使用with 上下文管理器进行本地文件读取 不用手动关闭流
mask = imageio.imread('china.jpg')
with open('threekingdom.txt','r',encoding='UTF-8')as f:
    words=f.read()
    # print(words)

#2.对小说字符串进行分词
words_list=jieba.lcut(words)
print(words_list)
#把返回的分词流标转换成字符串
words_text=' '.join(words_list)
print(words_text)
#3.使用WordCloud进行绘制
WordCloud(
    background_color='white',
    width=800,
    height=600,
    font_path='msyh.ttc',
    mask=mask
).generate(words_text).to_file('三国词云.png')

输出结果:


三国词云.png

常用的排序方法

案例:

li = []
for i in range(10):
    li.append(i)
print(li)

from random import shuffle
shuffle(li)
print('顺序打乱后', li)

# 第一种排序方式
li.sort(reverse=True)

print('排序后的列表', li)

输出结果:


image.png

字典排序

首先创建一个字典,如下:
案例:

stu_info = [
    {'name':'zhangsan', 'age':33},
    {'name':'lisi', 'age':8},
    {'name':'wangwu', 'age':66},
    {'name':'tianqi', 'age':17},
]

print(stu_info)
  • 按年龄倒序输出
    案例:
stu_info = [
    {'name':'zhangsan', 'age':33},
    {'name':'lisi', 'age':8},
    {'name':'wangwu', 'age':66},
    {'name':'tianqi', 'age':17},
]

print(stu_info)
# def 函数名():
#     函数体
def sort_by_age(dict_info):
    return dict_info['age']
#
# 按照年龄进行倒序排序
# key是接受一个函数名  用于指定 按照什么进行排序
#
stu_info.sort(key=sort_by_age,reverse=True)
print('排序后', stu_info)

输出结果:


image.png

*按姓名倒序输出
案例:

stu_info = [
    {'name':'zhangsan', 'age':33},
    {'name':'lisi', 'age':8},
    {'name':'wangwu', 'age':66},
    {'name':'tianqi', 'age':17},
]

print(stu_info)
def sort_by_name(dict_info):
    return dict_info['name']


stu_info.sort(key=sort_by_name,reverse=True)
print('按照名字排序后', stu_info)

输出结果:


image.png

元组按序输出

stu_info = [
    ('zhangsan', 89),
    ('lisi', 7),
    ('wangwu ', 222),
    ('zhaoliu', 44)
]
print(stu_info)
def sort_by_tuple(x):
    return x[1]

stu_info.sort(key=sort_by_tuple)

print('排序后', stu_info)

输出结果:


image.png

交换两个变量

在C语言中交换两个变量需要引入中间变量进行交换,在python中要简单的多。
在C语言中交换两个变量如下所示:
int a=10
int b=100
temp=a
a=b
b=temp
python中交换两个变量代码如下:
案例:

a=10
b=100
a,b=b,a
print('a=',a)
print('b=',b)

输出结果:


image.png

可以看出,C语言中三行代码在Python中只需要一行代码就可以解决。

一次声明多个变量

案例:

c,d,e=100,[90,33],'hehe'
print(c)
print(d)
print(e)

输出结果:


image.png

函数和lambda表达式

案例:

def 函数名():
    print(('haha'))
    pass#站位
#调用
函数名()

输出结果:


image.png

1~num之间的累加和

案例:

def caculate_num(num):
   result=0
   for i in range(num+1):
       result +=i
   return result
   pass
sum_num=caculate_num(100)
print(sum_num)

输出结果:


image.png

函数和方法:没区别
函数是针对于面向过程
方法是面向对象

匿名函数

lambda 参数1 ,参数2。。。。。。。:表达式

  • 案例1:
pingfang=lambda n:n*n
add=lambda x,y:x+y
print(add(3,4))
print(pingfang(7))

输出结果:


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

输出结果:


image.png
  • 案例3:
stu_info = [
    ('zhangsan', 89),
    ('lisi', 7),
    ('wangwu ', 222),
    ('zhaoliu', 44)
]
stu_info.sort(key=lambda x:x[1])
print('排序后',stu_info)
#或者(输出结果相同)
#stu_info=sorted(stu_info,key=lambda x:x[1])
#print(stu_info)

输出结果:


image.png

.sort()和sorted 的区别

  • .sort()是列表特有的方法,sorted适用于任何可迭代对象
  • .sort()是在原来的列表上进行修改,sorted()是返回一个新的列表
  • 调用形式不一样

列表推导式

  • 案例1(0到9):
# 生成一个[0,1,......9]
li=[]
for i in range (20):
    li.append(i)
print(li)

输出结果:


image.png
  • 案例2(偶数):
li=[]
for i in range (20):
    li.append(i)
print(li)
#筛选出所有的偶数
new_li=[]
for i in li:
    if i%2==0:
        new_li.append(i)
print(new_li)
#或者(输出结果相同)
#li3=[i for i in range(20) if i%2==0]
#print(li3)

输出结果:


image.png
  • 案例3(正负随机数):
li=[]
for i in range (20):
    li.append(i)
print(li)
#生成正负随机的列表
from random import randint
li5=[]
for _ in range(10):
    li5.append(randint(-20,20))
print(li5)

输出结果:


image.png
  • 案例4(列表推导式):
li2=[i for i in range(10)]
print(li2)

输出结果:


image.png
  • 案例5(使用列表推导式完成案例3):
    使用列表推导式
    语法结构:
    [表达式for 临时变量 in 可迭代变量 筛选条件]
# 使用列表推导式生成li5
from random import randint
li5=[randint(-20,20) for _ in range(10)]
print(li5)

输出结果:


image.png
  • 案例6(筛选案例4中大于零的数):
li=[]
for i in range (20):
    li.append(i)
print(li)
#生成正负随机的列表
# 使用列表推导式生成li5
from random import randint
li5=[randint(-20,20) for _ in range(10)]
print(li5)
#筛选所有大于零的
res_list=[x for x in li5 if x>0]
print(res_list)

输出结果:


image.png

切片(Python中的特色 slice)

案例:

name='abcdefg'
#左闭右开
#获取abc
print(name[0:4])
 #a c e f
print(name[0:8:2])
print(name[::2])
#name
print(name[::])
#name进行反转 gfdecba
print(name[::-1])
#g e c a
print(name[::-2])
#f d b
print(name[-2::-2])
# 起始值终止值 可以省略

输出结果:


image.png

字符串输出

案例:

i=2
grade='十五'
print('这是我们上课的第{}天,我的修炼等级达到了{}级别'.format(i,grade))

输出结果:


image.png

对分析的数据进行可视化展示

bar pie scatter plot
as 还是起别名
名字来源于matlab
案例:

from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制条形图
import string
print(string.ascii_uppercase)

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()

输出结果:


image.png
image.png

将三国人物出场TOP10输出条形图

import jieba
from wordcloud import WordCloud
#1、读取文件
with open('threekingdom.txt','r',encoding='UTF-8')as f:
    words=f.read()
    word_list=jieba.lcut(words)
    excludes = {"将军", "却说", "丞相", "二人", "不可", "荆州", "不能", "如此", "商议",
                "如何", "主公", "军士", "军马", "左右", "次日", "引兵", "大喜", "天下",
                "东吴", "于是", "今日", "不敢", "魏兵", "陛下", "都督", "人马", "不知",
                '孔明曰', '玄德曰', '刘备', '云长'}
    # print(word_list)
    # print(len(word_list))
    #定义一个字典{‘夏侯渊’:788,‘不来’:56}
    counts={}
    for word in word_list:

    #删除靠前与人名无关的词汇
        if len(word)==1:
            continue
        else:
    #往字典里添加元素
    # count[word]=取出字典中原来的计数+1
    # count[word]=count[word]+1
            counts[word]=counts.get(word,0)+1
    # print(counts)
    counts['孔明']=counts['孔明曰'] + counts['孔明']
    counts['玄德']=counts['玄德曰'] + counts['玄德'] + counts['刘备']
    counts['关公']=counts['关公'] + counts['云长']
    #将counts转化成列表
    for word in excludes:
        del counts[word]
    items=list(counts.items())

    def sort_by_count(x):
        return x[1]
    items.sort(key=sort_by_count,reverse=True)
    # print(items)
    # 显示计数前20词语
    role_list=[]
    for i in  range(10):
        #拆包 序列解包
        role_name,count=items[i]
        print(role_name,count)
        #给读代码的人看的,_代表并没有使用临时变量
    #     for _ in range(1):
    #         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
    # ).generate((text)).to_file('top10.png')

    import  matplotlib.pyplot as plt
    plt.rcParams["font.sans-serif"] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # print(items)
    print(items[0:10:1])
    dict1=dict(items[0:10:1])
    print(dict1)

    x = ["{}".format(i) for i in dict1.keys()]
    print(x)
    y = [i for i in dict1.values()]
    print(y)
    # 绘制 条形图
    plt.bar(x, y)
    plt.show()

输出结果:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345