2019-07-29

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)
绘制N、S

(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')
三国云词

你可能感兴趣的:(2019-07-29)