分享两个重要的图片:

string

list

print ("hello lusquare");
#这是第一个注释
'''
这是第二个注释
'''
"""
基本数据类型学习
"""
a=100; #整型
b=100.0; #浮点型
c="lusquare"; #字符型
print(a,"\t",b,"\t",c);
"""
标准数据类型
数字,字符串,元组,列表,集合,字典
前三个是不可变数据 后三个是可变数据
"""
#number -> int,float,bool.complex
a,b,c,d=20,123.12,True,1+5j;
print(type(a),type(b),type(c),type(d));
#type 可以指出数据类型  isinstance是用来判断数据类型 返回True False
print(isinstance(a,bool));
print(isinstance(d,complex));
"""
数值运算 只列举一些特例
"""
a=100;
b=4;
print(a//b);#除法,得到一个整数
print(a/b);#除法,得到一个浮点数
print(a**b);#乘方

#字符串
#Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
str="lusquare";
print(str);
print(str[0:-1]);#输出第一个到 倒数第二个的所有字符
print(str[0]);#输出第一个字符
print(str[2:5]);#输出第三个到第五个# 字符
print(str[2:]);#输出第三个开始之后的所有字符
print(str*2);#输出字符串两次
print("hello"+str);#连接字符串
#关于字符串转义
print("lusqua\reeee"); #\r 回车
print(r"lusqa\re"); #不想转义就加r

#列表[]
list=["lusquare",99,15.156,(4+2j)];
tinylist=[165,"hello"];
print(list);
print(list[0]);
print(list[1:3]);#第二个到第三个
print(list[2:]);#从第三个元素开始的所有元素
print(tinylist*3); #输出3次
print(list+tinylist); #拼接
list.append("com");#往后增加
#列表中元素可以改变
list[2]="asd";
print(list);

#元组()
tuple=("hello","lusquare",415.1,156);
tinytuple=(123.1,"com");
print(tuple);
print(tuple[1:3]);#第二个到第三个
print(tuple[2:]);#第三个之后
print(tinytuple*2);#输出两次
print(tuple+tinytuple);#拼接
#跟列表相似,但是 元素不能改变
#但是他可以包含可变的对象 如 list列表
tup1=();#空元祖
tup2=(2,);#一个元素,需要在元素后面添加逗号

#集合
"""
可以用{}或者set()来创建集合, 
创建一个空集合必须用set()而不是{}
{}是用来创建空字典的
"""
student={'lusquare','xujiu','rainbow','max','max','caoline'}
print(student);#重复的元素会被自动去掉,类似C++ STL 中的 set
if "lusquare" in student :
    print("yes");
else :
    print("no");
#set 可进行集合运算
a=set("lusquare");
b=set("lusqe");
print(a);
print(a-b);#a和b的差集
print(a&b);#a和b的交集
print(a|b);#a和b的并集
print(a^b);#a和b中不同时存在的元素
#字典 (映射){} 类似C++中的 map 键(key)->唯一:值(value)
dict={};#空
dict["one"]="lusquare";
dict[2]=15.4;
tinydict={"name":"lusquare","code":2,"site":"www.lusquare.com"};
print(dict["one"]);
print(dict[2]);
print(tinydict);
print(tinydict.keys());#输出所有键
print(tinydict.values());#输出所有值

input("\n按下 enter 键后退出");


Python3 运算符

#python 3 运算符
"""
算数运算符
"""
b=15;
a=31;
print("a+b= ",a+b);
print("a-b= ",a-b);
print("a*b= ",a*b);
print("a/b= ",a/b);# 表示 a 除以 b 有小数也要输出小数
print("a%b= ",a%b);
print("a//b= ",a//b); #这里才是取整部分。注意区别
print("a**b= ",a**b); # a^b
"""
比较运算符
==、!=、>、<、>=、<=
不想写例子
"""
print("--------分割线--------");
"""
赋值运算符
"""
a=21;
b=10;
c=0;
c=a+b;
print("a+b= ",c);
c*=a;
print("c*a= ",c);
c/=a;
print("c/a= ",c);
c=2;
c%=a;
print("c%a= ",c);
c**=a;
print("c**a= ",c);
c//=a;
print("c//a= ",c);
"""
位运算符
"""
a=60;
b=13;
#a=0011 1100 b=0000 1101
print("a&b= ",a&b);#按位与运算
print("a|b= ",a|b);#按位或运算
print("a^b= ",a^b);#按位异或运算  相同位相同时为0,不同为1
print("~a= ",~a);#按位取反
print("a<<2= ",a<<2);#左移两位,高位丢弃,低位补零
print("a>>2= ",a>>2);#右移两位

"""
逻辑运算符
and 与
or 或
not 非
"""
#非零为true,无论正负
a=10;
b=20;
print(a and b);
# 如果 a 为 False,a and b 返回 False,否则它返回 b 的计算值。
print(b and a);

print(a or b);
#如果 a 是 True,它返回 a 的值,否则它返回 b 的计算值。
print(b or a);
print(not(a and b));

a=0;
print(a and b);

print(a or b);
#如果 a 为 false 返回 b

"""
成员运算符
in 如果在指定序列中找到该值返回 true 否则 返回 false
not in 没有找到返回 true 否则 false
"""
list=[1,2,3,4];
a=3;
b=5;
if(a in list):
    print("True");
else:
    print("False");
if(b in list):
    print("True");
else:
    print("False");
if(b not in list):
    print("True");
else:
    print("False");
"""
身份运算符
is 是 判断两个标识符是不是引用自一个对象
is not 是判断两个标识符是不是引用自不同对象
"""
"""
身份运算符是用来比较2个对象是否是同一个对象,
而之前比较运算符中的 == 则是用来比较2个对象的值是否相等。
这里需要讲下身份运算符是怎么判断的。
Python中的变量有3个属性:name、id、value。
name可以理解为变量名,id可以联合内存地址来理解,value就是变量的值。
is运算符则是通过这个id来进行判断的,id一样就返回true,否则返回false。
"""
a=10.2;
b=20;
print(a is b);
a=10;
print(a is b);
print(a is not b);
if(id(a)==id(b)):
    print("True");
else:
    print("False");

a=20;
print(a is b);

if(id(a)==id(b)):
    print("True");
else:
    print("False");

 

Python 基本类型学了好几遍了,一直卡在这里,没有继续往下学,发个blog来督促我继续学习!

2018.9.21 python学习记录:

今天一口气把mooc上python课程更新的视频都看了,嗯……一个很简单的样例代码,自己写还是漏洞百出。好好练习。

#TempConvert.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
    C = (eval(TempStr[0:-1])-32)/1.8
    print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
    F = 1.8*eval(TempStr[0:-1])+32;
    print("转换后的温度是{:.2f}F".format(F))
else :
    print("输出格式错误")

eval:将字符串str当成有效的表达式来求值并返回计算结果。

format 是一个格式化函数,,,前面是点。——>它通过{}和:来代替%。

注意:format 前边是 . 不是 逗号,(c++中毒太深) 还有一个错误 在{:.2f}  写成了 {:.2lf}  原来python 不支持 lf ,,记住了!

简单同切圆:

import turtle
turtle.pensize (3) #线条的粗细
turtle.speed (6) #设置线条的速度
turtle.circle (10)#圆的半径
turtle.circle (40)
turtle.circle (80)
turtle.circle (160)
#turtle模块:它可以让你使用海龟图形(turtle graphics)绘制图像

简单五角星:

from turtle import *
color ('red','red')
begin_fill()#准备开始填充
for i in range(5):
    fd(300)#画笔向绘制方向的当前方向移动distance(integer or float)的pixels距离,
    rt(144)#绘制方向向右旋转angle度
end_fill()#填充结束。

2018.9.25 python学习记录:

#pythonDraw.py
import turtle
turtle.setup(800,800,0,0)#(width,height,startx,starty)窗口的大小及位置
#setup不是必须的 
turtle.penup()#画笔抬起 海龟在飞行
turtle.fd(-250)
turtle.pendown()#落下画笔,海龟在爬行 up 和 down 要成对出现
turtle.pensize(25)#画笔宽度,海龟的腰围
turtle.pencolor("red")#画笔颜色,海龟在涂装  颜色字符串
#turtle.pencolor(0.63,0.13,0.94)# RGB 小数值
#turtle.pencolor((0.63,0.13,0.94))#RGB 元组值
turtle.seth(-40)#让海龟转向,并不行动
for i in range(4):
    turtle.circle(40,80)
    turtle.circle(-40,80)
turtle.circle(40,80/2) #根据 半径 40 绘制 80/2 角度的弧形
turtle.fd(40)#向前行进,海龟走直线
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()

2018.9.29 python学习记录:

没事看mooc学习,把自己不太熟悉的记录起来、

#datatype.py
print(pow(2,1000))
print("\n")
a=0o123 #八进制
print(a)
print("\n")
b=0b010 #二进制 
print(b)
print("\n")
c=-0x09a #十六进制
print(c)

#不确定尾数  
print(0.1+0.2)
print(0.1+0.2==0.3)
print(round(0.1+0.2,2)==0.3)
print("\n")#round(x[,d])
#复数
z=1.23e-4+5.6e+89j
print(z.real)
print(z.imag)

#divmod  (x//y.x%y) 商余
x=10
y=3
print(divmod(10,3))
print("\n")

#pow(x,y[,z]) 幂余 (x**y)%z
print(pow(3,pow(3,99),10000)) 

每天进步一点点的力量

#daydayup.py
#天天向上的魅力
#1%。 的力量
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

#5%的力量
dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

#工作日的力量

dayup=1.0
dayfactor=0.01
for i in range(365):
    if i%7 in [6,0]:#休息
        dayup=dayup*(1-dayfactor)
    else:
        dayup=dayup*(1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
#升级版

def dayUp(df):
    dayup=1
    for i in range(365):
        if i%7 in [6,0]:
            dayup=dayup*(1-0.01)
        else:
            dayup=dayup*(1+df)

    return dayup

dayfactor=0.01
while dayUp(dayfactor)<37.38:
    dayfactor += 0.01
print("工作日的努力参数是:{:.3f}".format(dayfactor))

……快十二点了,,,,我要睡了,“狗命要紧”

continuing

#string.py
print('这里有个双引号(")')
print("这里有个单引号(')")
print('''这里有单引号'也有双引号" ''')
print("这里有个双引号(\")")
#[M:N:K] 根据步长对字符串切片
str="零一二三四五六七八九十"
print(str[:3])
print(str[1:8:2])
print(str[::-1])

#获取星期字符串1
weekstr="星期一星期二星期三星期四星期五星期六星期日"
weekid=eval(input("请输入星期数字(1-7):"))
pos=(weekid-1)*3
print(weekstr[pos:pos+3])
#获取星期字符串2
weekstr="一二三四五六日"
weekid=eval(input("请输入星期数字(1-7):"))
print("星期"+weekstr[weekid-1])
#unicode 编码
print("1+1=2"+chr(10004))
print("十二星座")
for i in range(12):
    print(chr(9800+i),end=" ")


#format.py {}槽
print("{0:=^20}".format("python"))#居中对齐
print("{0:*>20}".format("bit"))#右对齐
print("{:10}".format("bit"))#默认左对齐
print("{0:,.2f}".format(12345.6789))
print("{0:b},{0:c},{0:o},{0:x},{0:X}".format(425))
print("{0:e},{0:E},{0:f},{0:%}".format(3.14))

TIME.PY

import time
print(time.time()) #时间戳
print(time.ctime())#易读
print(time.gmtime())#计算机可处理的时间格式
t=time.gmtime()
tim=time.strftime("%Y-%m-%d %H:%M:%S",t)
print(tim)
timestr="2018-01-26 12:55:20"
tim=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
print(tim)

st=time.perf_counter()#ns为单位
en=time.perf_counter()
print(st,en)
print(en-st)

def wait():
    time.sleep(3.2)
wait()#程序等待3.2s后继续运行

scale = 10
print ("-----执行开始-----")
for i in range(scale+1):
    a="*" * i
    b="."*(scale - i)
    c=(i/scale)*100
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)

print ("-----执行结束-----")

#单行动态刷新.py  用pycharm 运行

for i in range(101):
    print("\r{:3}%".format(i),end="")
    time.sleep(0.1)
print("\n")

#完整版.py
scale=50
print("执行开始".center(scale//2,'-'))
st=time.perf_counter()
for i in range(scale+1):
    a = "*" * i
    b = "." * (scale - i)
    c = (i/scale)*100
    dur = time.perf_counter() - st
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
    time.sleep(0.1)
print("\n"+"执行结果".center(scale//2,'-'))

2018.10.9 python学习记录:

关于break,continue,else

#break,continue.py
for i in "python1":
    if i == "y":
        break
    print(i,end="  ")
print(
    "\n")
for i in "python1":
    if i == "y":
        continue
    print(i)


print("\n")

s = "python"
while s != "":
    for i in s:
        print(i,end=" ")
    s=s[:-1]#x循环一次去掉末尾的字符
print("\n")


s = "python"
while s != "":
    for i in s :
        if i == "t":
            break  #只能跳出一层循环
        print(i,end=" ")
    s=s[:-1]

print("\n")

for c in "PYTHON":
    if c=="T":
        continue
    print(c,end=" ")
else :                       #else 可以作为正常退出的 一个奖励,正常退出时 会执行else之后的语句块
    print("正常退出")

print("\n")

for c in "PYTHON":
    if c == "T":
        break
    print(c,end=" ")
else :
    print("正常退出")

about  random

import random
random.seed(10)
for i in range(5):
    print(random.random())

print(random.randint(10,100))  #生成 10-100的随机数

print(random.randrange(10,10000,10))
#randrange(m,n[,k]) 生成一个 [m,n)以k为步长的随机数

print(random.getrandbits(5)) #生成一个5比特长的随机整数

print(random.uniform(10,21)) #生成 [a,b] 之前的随机小树 

#从序列seq 中随机选择一个元素
print(random.choice([1,2,5,1,5,78,45,254,44444,1]))

#将序列seq中元素随机排列,返回打乱后的序列
s=[1,2,3,4,12,31,213,123213]
random.shuffle(s)
print(s)

通过一个公式……计算pi

#pi.py
pi = 0 
N = 100
for k in range(N):
    pi += 1/pow(16,k)*(\
    4/(8*k+1) - 2/(8*k+4) - \
    1/(8*k+5) - 1/(8*k+6))
print("圆周率:{}".format(pi))

还有 蒙特卡罗方法

#py2.py
from random import random
from time import perf_counter
darts = 1000 * 1000  #撒点的数量
hits = 0.0
start = perf_counter()
for i in range(1,darts+1):
    x,y = random(),random() #随机坐标
    dist = pow(x ** 2 + y ** 2,0.5) #判断是否在圆的内部
    if dist <= 1.0:
        hits = hits + 1
pi = 4*(hits/darts)
print("圆周率的值:{}".format(pi))
print("运行时间: {:.5f}s".format(perf_counter()-start))

2018.10.14 python学习记录:

turltle移动: 

#七段数码管.py
import turtle
def drawLine(draw): #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)
#drawLine(True)

def drawDigit(digit):#根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180) 
    turtle.penup()#为绘制后续数字确定位置
    turtle.fd(20)#为绘制后续数字确定位置
#if digit [……] 代表 你绘制的数字中有 会绘制这一条线

def drawDate(date):
    for i in date:
        drawDigit(eval(i))#通过 eval()函数将数字转变为整数

def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(10)
    drawDate('19990101')
    turtle.hideturtle()
    turtle.done()
main()

显示效果

 

what’s wrong?!!……已经 debug, 一个" . " 毁一个程序。

#七段数码管.py
import turtle,time

def drawGap():
    turtle.penup()
    turtle.fd(5)

def drawLine(draw): #绘制单段数码管
    drawGap();
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
#drawLine(True)

def drawDigit(digit):#根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()#为绘制后续数字确定位置
    turtle.fd(20)#为绘制后续数字确定位置
#if digit [……] 代表 你绘制的数字中有 会绘制这一条线

def drawDate(date):#data 为日期,格式为"%Y-%m=%d+"
    turtle.pencolor("red")
    for i in date:
        if i == '-':
            turtle.write("年",font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write("月",font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write("日",font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))

def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(10)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime())) #gmtime获取系统时间 strftime对时间进行格式化
    turtle.hideturtle()
    turtle.done()
main()

 

2018.10. 忘了具体时间,很久没更新了,python学习记录:

#KochDrawV2.py
import turtle
def Koch(size,n):
    if n==0:
        turtle.fd(size)
    else:
        for angle in [0,60,-120,60]:
            turtle.left(angle)
            Koch(size/3,n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3 #3阶科赫雪花,阶数
    turtle.color("red")
    Koch(400,level)
    turtle.color("green")
    turtle.right(120)
    Koch(400,level)
    turtle.color("blue")
    turtle.right(120)
    Koch(400,level)
    turtle.hideturtle()
main()

 

效果图

2018.10. 27 python学习记录:

集合,也挺简单的,记住重点:数据去重

#about 集合.py
#集合:多个元素的无序组合,不存在相同的元素,
#集合元素数据类型不可变
#用 {} 或 set()建立集合
A={"I","am lusquare",123,(123,"love python")}
print (A)
#输出之后是无序的
B= set("Ilovepython")
#输出之后无序并且不重复
print(B)


S={"123",123,("123",111),"lusquare",1,2,3,4}
T={"123",123,("123",112),"love",33,3,4}

print(S|T) #并集

print(S&T) #交集

print(S-T) #差集

print(S^T) #补集 相当于 离散数学中的 ⊕

A={"p","y",123}

for item in A:
    print(item,end="  ")
print("\n")


ls=["p","p","y","y",123]
s=set(ls) #将列表转换成一个 集合 可以起到数据去重的效果

print(s)

 

序列的各种类型

#序列.py
ls=["python",123,"y","l","l"]
print(ls)

print(ls[::-1])#切片操作 作用 取反

print("len:{}".format(len(ls)))

s="lusquare.top"
print("max:{}".format(max(s)))


#元组.py
#元组是一种序列类型,一旦创建就不能被更改  () [括号可省略] tuple() 

creature ="cat","dog","tiger","human"

print(creature)

print(creature[::-1])

color = (0x001100,"blue",creature)

print(color)

print(color[-1][2])


#列表.py
#也是序列类型的一种扩展,元素可以被修改  []  list()

ls=["cat","dog","tiger",123]  #方括号[] 真正创建了一个列表
print(ls)

lt=ls  # 赋值 仅传递引用  只是将一个列表起了另一个名字并没有新生成一个列表 类似C++中的 &
print(lt)

ls[2]="lusquare" #replace
print(ls)

del ls[1] #delete

print(ls)

ls[1:2]=[1,2,3,4] #替换

print(ls)

跟着mooc课继续学习吧……

基本统计值V1.py

#CalStatisticsV1.py
def getNum():  #获取用户不定长的输入
    nums=[]
    inumstr = input("请输入数字(回车退出)")
    while inumstr!="":
        nums.append(eval(inumstr))
        inumstr = input("请输入数字(回车退出)")
    return nums
def mean(numbers): #计算平均值
    s=0.0
    for num in numbers:
        s=s+num
    return s/len(numbers)
def dev(numbers,mean): #计算方差
    sdev=0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return pow(sdev/(len(numbers)),0.5)
def median(numbers): #计算中位数
    sorted(numbers)
    size = len(numbers)
    if size%2 == 0:
        med = (numbers[size//2-1]+number[size//2+1])/2
    else:
        med = numbers[size//2]
    return med
n = getNum()
m=mean(n)
print(len(n))
print("平均值:{},方差:{:.2},中位数:{}".format(m,dev(n,m),median(n)))

字典.py

#字典.py
#映射,(os:想到了函数……hhh)
d={} #定义空字典
#d["a"]=1
#d["b"]=2
#d["b"]=3 #键值对 修改
d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}

print(d)

print(d["中国"])



print(d.keys())

print(d.values())

print(len(d))

print(d.get("中国","伊斯兰堡"))
#由于"中国"在d中所以返回 北京  否则返回 伊斯兰堡

print(d.get("巴基斯坦","伊斯兰堡"))

jieba 库

#jieba是优秀的中文分词第三方库
import jieba

s="一转身谁能把感慨抛在脑后,在事过境迁以后,这感情就算曾经刻骨且铭心过,过去了,又改变什么,地球它又公转几周了 "
#jieba精确模式
print(jieba.lcut(s))

#全模式 存在冗余
print(jieba.lcut(s,cut_all=True))

#搜索引擎模式
jieba.lcut_for_search(s)

#向分词词典增加新词w
jieba.add_word("陌生人")

Hamlet词频统计(含Hamlet原文文本)

#CalHamletV1.py
def getText():
    txt=open("hamlet.txt","r").read()
    txt=txt.lower()
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt=txt.replace(ch," ") #特殊字符都替换成空格
    return txt

hamletTxt=getText()
words=hamletTxt.split()
counts={} #集合
for word in words:
    counts[word]=counts.get(word,0)+1
items=list(counts.items()) #列表
items.sort(key=lambda x:x[1],reverse=True) #排序 次数从大到小
for i in range(10):
    word,count=items[i]
    print("{0:<10} {1:>5}".format(word,count))

《三国演义》人物出场统计(上)(含《三国演义》原文文本)

#CalThreeKingdomsV1.py
import jieba
txt = open("threekingdoms.txt", "r", encoding='utf-8').read()
words  = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
for i in range(15):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

《三国演义》人物出场统计(下)(含《三国演义》原文文本)

#CalThreeKingdomsV2.py
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("threekingdoms.txt", "r", encoding='utf-8').read()
words  = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == "诸葛亮" or word == "孔明曰":
        rword = "孔明"
    elif word == "关公" or word == "云长":
        rword = "关羽"
    elif word == "玄德" or word == "玄德曰":
        rword = "刘备"
    elif word == "孟德" or word == "丞相":
        rword = "曹操"
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
for word in excludes:
    del counts[word]
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
for i in range(10):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

 


年轻也需要有所作为( ・´ω`・ )