Python进阶版
turtle
import turtle
setup(width,height,startx,starty) #窗口
screensize(canvwidth, canvheight, bg) #画板
penup() # 抬起画笔,之后移动画笔不绘制形状。
pendown() # 落下画笔,之后移动画笔将绘制形状。
pensize() # 用来设置画笔尺寸;turtle.width()设置画笔宽度,当无参数输入时返回当前画笔宽度。
pencolor()# 没有参数传入返回当前画笔颜色。turtle.pencolor((r,g,b))设置当前画笔颜色。
speed() # 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
命令 | 说明 |
---|---|
forward(distance) | 海龟前进 distance 指定的距离,方向为海龟的朝向 |
backward(distance) | 海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。 |
right(angle) | 海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) |
left(degree) | 海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) |
goto(x,y) | 将画笔移动到坐标为x,y的位置 |
circle(radius, extent=None, steps=None) | 绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。 |
import turtle as t
import time
t.color("red", "yellow")
t.speed(10)
t.begin_fill()
for i in range(4):
t.forward(200)
t.left(90)
t.end_fill()
time.sleep(1)
文件处理
# 词语的读取
import jieba
fi = open("天龙八部-网络版.txt", "r", encoding='utf-8')
fo = open("天龙八部-词语统计.txt", "w", encoding='utf-8')
txt = fi.read()
words = jieba.lcut(txt)
d = {}
for w in words:
d[w] = d.get(w, 0) + 1
del d[' ']
del d['\n']
ls = []
for key in d:
ls.append("{}:{}".format(key, d[key]))
fo.write(",".join(ls))
fi.close()
fo.close()
import jieba
while True:
x = input('Please input:')
try:
x = int(x)
print('you input {0}'.format(x))
break
except Exception as e:
print("请输入数字")
jieba.load_userdict("newdict.txt")
fi = open("庆余年.txt", "r", encoding='gb18030')
txt = fi.read()
words = jieba.lcut(txt)
d = {}
for w in words:
if w in ['范闲', '范建', '林婉儿', '庆帝', '陈萍萍', '范若若', '司理理', '五竹', '王启年', '言冰云', '范思辙', '肖恩', '费介',
'海棠朵朵', '长公主', '叶灵儿', '滕子京', ',柳如玉', '叶轻眉']:
d[w] = d.get(w, 0) + 1
d = sorted(d.items(), key=lambda x: x[1], reverse=True)
for key in d:
print(key)
数据清洗
import numpy as np #导入库numpy,pandas,matplotlib
import pandas as pd
import matplotlib.pyplot as plt
plt.rc('font',**{'family':'SimHei'})
df = pd.read_csv('books.csv') #读入文件
df.head(3) #展示前三行
len(df) #行数
df = df.drop(columns=['ID','author_list','org_name','translator','pub_year','pages_num','pricing','currency','binding','series']) #删除名为列表元素中的列
df.columns = ['书名','作者','出版社','出版时间','页数','价格','ISBN','评分','评论数量'] #修改列名
df.info() #查看基础信息
df.dtypes #查看类型
df['书名'].isnull().sum() #书名为空的个数
df.loc[df['作者'].isnull(),'作者'] = '无' #修改其值为无
import re
def year(s):
res = re.findall('\d{4}',str(s)) #正则表达式匹配年份
if res:
return res[0]
else:
return ' '
df['年份'] = df['出版时间'].apply(year)
def price(s):
res = re.findall('\d+[\.]+\d',str(s))
if res:
return res[0]
else:
return 0.0
df['清洗后价格'] = df['价格'].apply(price).astype(float)
df = df.drop(df[df['评分'] == 0].index) #删除评分为0的行
df.describe() #描述,展示
df2 = df.groupby(['年份'])['书名'].count() #按照年份把书名归类
df2 = df2[10:-2] #切片
plt.figure(figsize=(20,10)) #设置绘图宽度和高度
plt.plot(df2.index,df2.values)
plt.xlabel("年份")
plt.ylabel("数量")
plt.title("书的数量与年份分析")
plt.show()
X = ['10','10-20','20-30','30-40','40-50','50-60','60-70','70-80','80-90','90-100','100-1000','1000-5000','5000-10000f']
Y = []
for i in range(10):
Y.append(df4[(df4.index > 10*i) & (df4.index <= 10*i + 10)].sum())
Y.append(df4[(df4.index > 100) & (df4.index <= 1000)].sum())
Y.append(df4[(df4.index > 1000) & (df4.index <= 5000)].sum())
Y.append(df4[(df4.index > 5000) & (df4.index <= 10000)].sum())
plt.figure(figsize=(20,10))
#ticksX轴刻度间隔;[labels]间隔显示的标签;
#kwargs标签字体倾斜度(rotation)和颜色(color)等外观属性
#verticalalignment:'center','top','bottom','baseline',标签垂直对齐方式。
#horizontalalignment:'center','right','left,标签水平对齐方式。
plt.xticks(range(len(X)),X)
plt.bar(range(len(X)),Y)
plt.xlabel("价格")
plt.ylabel("数量")
plt.title("价格数量分析")
plt.show()
补充xticks函数(yticks类似)
- ticks:x轴各个标签位置,[0,1,2,…]。
- labels:各个标签文本,[‘label1’,label2’…]。
- color:字体颜色
- rotation:字逆时针旋转角度
- verticalalignment:‘center’,‘top’,‘bottom’,‘baseline’,标签垂直对齐方式
- horizontalalignment:‘center’,‘right’,'left,标签水平对齐方式
- family:设置字体
- style:字体风格
- weight:字体粗细
- bbox:字体边框,如{‘facecolor’:‘red’,‘alpha’:0.5}。
import seaborn as sns
df8 = df[['评分','评论数量']]
corr = df8.corr() #相关性系数计算
sns.heatmap(corr,cmap=sns.color_palette('Blues')) #热力图
plt.show()
一行代码
100以内的素数
n = 100
prime_numbers = [i for i in range(
2, n-1) if all(i % j != 0 for j in range(2, int(i**0.5)+1))]
print(prime_numbers)
p = [i for i in range(2, n-1) if all(i %
j != 0 for j in range(2, int(i**0.5)+1))]
print(p)
2的100次方各个位置上的数求和
result = 2**100
str_r = str(result)
digit_sum = sum(int(digit) for digit in str_r)
print(digit_sum)