1.range()的使用
函数解释
range函数原型:range(start, end, scan),其中scan表示每次跳跃的间距。运用:输出1-100以内的单数
for i in range(1,100,2):
print(i)
2.turtle包的使用
- 什么是turtle
Turtle库是Python语言中一个很流行的绘制图像的函数库。在一个横轴为x(右为大)、纵轴为y的坐标系原点(下为大),(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而绘制图形。
- turtle的应用
(1)画字母
# 导入turtle as 是给起一个别名
import turtle as t
t.pensize(10) # 设置画笔的大小 10px
t.color('blue') # 设置画笔颜色
t.penup() #提起笔移动,不绘制图形,用于另起一个地方绘制
t.goto(-260, 0) #turtle.gpto(x,y)将画笔移动到坐标为x,y的位置,此处水平左移
# 绘制 N
t.left(90)
t.forward(80)
t.right(145)
# 绘制 S
t.penup()
t.goto(120, 50)
t.pd() #turtle.pendown()简写:移动时绘制图形,缺省时也为绘制
t.circle(22,270) # turtle.circle(radius, extent=None, steps=None)
#半径radius为正(负),表示圆心在画笔的左边(右边)画圆;画弧
# 弧度extent(optional)
# 内切正多边形边数steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。
t.circle(-22,270)
(2)画图形
import turtle
p = turtle.Pen()
for i in range(100):
p.forward(i)
p.left(91)
3.python常用数据类型
- 列表(List)
列表(序列)是Python中最基本的数据结构,与c语言数组相似,但是列表的数据项不需要具有相同的类型。
#定义一个列表
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)
简单的列表排序
li = []
for i in range(10):
li.append(i)
print(li)
from random import shuffle
shuffle(li) #shuffle() 方法将序列的所有元素随机排序。
print('随机打乱的列表', 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) #排序前 [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 30}, {'name': 'wangwu', 'age': 99}, {'name': 'tiaqi', 'age': 3}]
# def 函数名(参数):
# 函数体
def sort_by_age(x):
return x['age']
# key= 函数名 --- 按照什么进行排序
# 根据年龄大小进行正序排序
stu_info.sort(key=sort_by_age, reverse=True)
print('排序后', stu_info) #排序后 [{'name': 'wangwu', 'age': 99}, {'name': 'lisi', 'age': 30}, {'name': 'zhangsan', 'age': 18}, {'name': 'tiaqi', 'age': 3}]
name_info_list = [
('张三',4500),
('李四',9900),
('王五',2000),
('赵六',5500),
]
# 根据元组第二个元素进行正序排序
print('元组排序后', sorted(name_info_list, key=lambda x:x[1])) #元组排序后 [('王五', 2000), ('张三', 4500), ('赵六', 5500), ('李四', 9900)]
- 字符串
(1)定义形式:英文形式的引号,单引号'字符串内容';双引号''字符串内容''
(2)常见操作
Ⅰ.切片
对序列截取一部分的操作,适用于列表。[起始位置:终止位置:步长] 左闭右开
name = 'abcdefg'
print(name[1:4]) #b c d
print(name[0:7:2]) # a c e g
print(name[::2]) # 全切片的时候可以省略初始和终止位置
Ⅱ.去两端空格
name = ' abcdefg '
print(len(name)) # 查看序列内元素的个数 len()
name = name.strip() #去空格
print('去空格之后', len(name))
Ⅲ.替换
price = '$999'
price = price.replace('$','')
print(price)
Ⅲ.列表变字符串
li = ['a', 'b', 'c', 'd']
a = ''.join(li)
print(a) #abcd
print(type(a)) #
- 元组(tuple)
元组 tuple 元组和列表很像只不过元组不可以修改。
a = ('zhangsan', 'lisi', 'wangwu',1000) #定义
print(a) #('zhangsan', 'lisi', 'wangwu', 1000)
print(type(a)) #
# 操作1-访问
print(a[1]) #以下标的形式
# 操作2-修改
a[3] = 'zhaoliu'
# 关于元组需要注意,只有一个元素的元组也是元组哦
b = ('lisi',)
c = (1000,)
print(type(b)) #
print(type(c)) #
- 字典(dict)
类似与java的hashmap,是key-value的数据结构。
info = {'name':'李四', 'age':34, 'addr':'重庆市渝北区'} #定义一个字典
print(len(info)) # 3,字典长度为3
# 操作1-字典的访问
print(info['name']) #李四
# 操作2-修改
info['addr'] = '北京市朝阳区'
print('修改后字典',info) #修改后字典 {'name': '李四', 'age': 34, 'addr': '北京市朝阳区'}
# 操作3-增加
info['sex'] = 'female'
print('增加后字典',info) #增加后字典 {'name': '李四', 'age': 34, 'addr': '北京市朝阳区', 'sex': 'female'}
# 操作4-获取字典中所有的键
print(info.keys())
# 操作5-获取字典中所有的z值
print(info.values())
# 操作6-获取字典中所有的key-value
print(info.items())
d = [('name', '李四'), ('age', 34), ('addr', '北京市朝阳区'), ('sex', 'female')]
# 操作6-赋值
d1 = dict(d)
# 操作7-遍历字典
for k, v in info.items():
print(k, v)
- 集合(set)
# 无序,不重复
set1 = {'zhangsan', 'lisi', 222}
print(type(set1)) #
# 遍历
for x in set1:
print(x)
4.数据可视化-三国词云
词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。
- 准备
(1)安装wordcloud: pip install jieba
from wordcloud import WordCloud # 导入词云 WordCloud类
import jieba #中文分词
import imageio
mask = imageio.imread('./china.jpg')
with open('./novel/threekingdom.txt','r', encoding='utf-8') as f:
words = f.read()
# print(len(words)) # 字数 55万
words_list = jieba.lcut(words)
# print(len(words_list)) # 分词后的词语数 35万
print(words_list)
# 将words_list转化成字符串
novel_words = " ".join(words_list)
print(novel_words)
# WordCloud()里面设置参数
wc = WordCloud(
font_path='msyh.ttc',
background_color='white',
width=800,
height=600,
mask=mask
).generate(novel_words)
wc.to_file('./三国词云.png')