Python进阶版_Cyan

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值