几个好玩有趣的Python入门例子几个简单的Python例子,好玩有趣,基础语法。海龟库开始自己画画,自己写文字进度条。蒙特卡洛方法计算π分形几何和科赫雪花曲线。输入一组数据,进行简单的统计小说词频统计。三国志谁的出镜率最高统计一目了然文字主题:文字词云生成用乌龟画图好玩有趣,入门级画图库乌龟,文档在这里。文档中的示例:向日葵。fromturtleimport*color('red','yellow')begin_fill()whileTrue:forward(200)left(170)ifabs(pos())<1:breakend_fill()done()画卦:importturtleast#size传入最大圆的半径defdraw_Star(size):t.setup(1200,1000)t.speed(11)t.pensize(2)t.pencolor('grey')forr,pen_size在[(size//7,3),(size*6//7,4),(size,4)]:t.penup()t.goto(0,-r)t.pendown()t.pensize(pen_size)t。圆(r)t。penup()t。goto(0,0)r=size*5.5//7foriinrange(6):t.落笔()t。pensize(3)t.seth(i*60+30)t.fd(r)t.goto(0,0)t.goto(0,r)t.seth(-150)t.pensize(5)对于我在范围内(6):t.fd(r)t.left(60)r=r-大小//50t.goto(0,r)t.pensize(10)t.seth(-120)t.pencolor('orange')foriinrange(3):t.fd(r*(3**0.5))t.left(120)t.penup()t.goto(0,0)t.seth(30)t.fd(r)t.seth(-180)t.pendown()对于我inrange(3):t.fd(r*(3**0.5))t.left(120)t.hideturtle()t.done()draw_Star(400)文本进度条一直向下打印的版本:importtimedefbar(scale):print('===========执行开始============')foriinrange(scale+1):a='*'*ib='.'*(scale-i)c=(i/scale)*100打印('\r{:^3.0f}%[{}->{}]'.format(c,a,b),end='')time.sleep(0.05)print('\n===========执行结束=============')单行刷新版本:importtimedefpro_bar(scale):print('executionstart'.center(scale//2,'='))start=time.perf_counter()foriinrange(scale+1):a='*'*ib='.'*(scale-i)c=(i/scale)*100dur=time.perf_counter()-开始打印('\r{:^3.0f}%[{}->{}]{:.2f}s'.format(c,a,b,dur),end='')time.sleep(0.05)print('\n'+'执行结束'.center(scale//2,'='))pro_bar(50)单行刷新效果只在cmd窗口运行时有效,IDLE禁止r转义字符。蒙特卡洛方法使用随机库计算π随机数生成,文档在这里。这个想法是随机生成落在正方形内的点。计算圆圈内落点与正方形内落点的比值,近似为面积之比。随机数越随机,数字越大,越准确。从随机导入随机从时间导入perf_counterdefcalPI(N=100):hits=0start=perf_counter()foriinrange(1,N*N+1):x,y=random(),random()dist=pow(x**2+y**2,0.5)如果dist<=1.0:hits+=1pi=(hits*4)/(N*N)use_time=perf_counter()-开始返回pi,use_timePI,use_time=calPI(1000)print('\n用蒙特卡罗法计算PI:{}'.format(PI))print('使用时间:{}s'.format(use_time))递归绘制科赫雪花曲线koch雪花曲线是分形几何中的经典曲线。使用turtle库,可以画出简单的递归。importturtledefkoch(size,n):ifn==0:turtle.fd(size)else:foranglein[0,60,-120,60]:turtle.left(angle)koch(size/3,n-1)defmain():turtle.setup(1200,1000)turtle.speed(11)turtle.penup()turtle.goto(-300,200)turtle.pendown()turtle.pensize(2)level=4koch(600,level)#3rdorderKochcurveturtle.right(120)koch(600,level)turtle.right(120)koch(600,level)turtle.hideturtle()turtle.done()main()简单统计输入一组Data,计算均值,方差,中位数,绝对相对误差#-*-coding:utf-8-*-#inputdatadefgetNum():nums=[]iNumStr=input('请输入一串数字(entertoexit):')whileiNumStr!='':nums.append(eval(iNumStr))iNumStr=input('请输入一个数字序列(进入退出):')returnnums#averagedefaverage(numbers):returnsum(numbers)/len(numbers)#标准偏差defdev(numbers,average):sdev=0.0fornuminnumbers:sdev+=(num-average)**2returnpow(sdev/len(numbers),0.5)#中位数defmedian(numbers):sorted(numbers)size=len(numbers)ifsize%2==0:return(numbers[size//2-1]+numberrs[size//2])/2else:returnnumbers[size//2]#绝对和相对误差defrel_dev(numbers,average):_max=max(abs(max(numbers)-average),abs(min(numbers)-average))return_max,_max/averagedefmain():nums=getNum()iflen(nums)==0:print('nodata')其他:ave=average(nums)devs=rel_dev(nums,ave)print('sum:{:.4f},均值:{:.4f},中位数:{:.4f},方差:{:.4f},绝对误差:{:4f},相对误差:{:.4f}'\.format(sum(nums),ave,median(nums),dev(nums,ave),devs[0],devs[1]))if__name__=='__main__':main()小说词频统计策略:中文小说:使用第三方库jieba分词统计英文小说:去除特殊干扰字符,直接分词成词,遍历统计莎士比亚经典名著:哈姆雷特。计算出现次数最多的单词。defgetText():txt=open('novels/hamlet.txt','r').read()txt=txt.lower()#去除大小写干扰#去除'!'中ch的特殊符号干扰#$%&()*+,-./:;<=>?@[\\]^_`{|}~\'':txt=txt.replace(ch,'')returntxthamletTxt=getText()words=hamletTxt.split()counts={}forwordinwords:counts[word]=counts.get(word,0)+1items=list(counts.items())#按照出现的单词个数降序排列items.sort(key=lambdax:x[1],reverse=True)foriinrange(20):word,count=items[i]print('{:^10}{:^10}'.format(word,count))统计著名的三国演义中人物名字出现的次数:结巴之一databases是根据汉字之间的关联概率对中文文本进行分词的第三方库,简单易用,很好用,文档在这里importjiebadefgetWords():txt=open('novels/threekingdoms.txt','r',编码='utf-8')。read()words=jieba.lcut(txt)counts={}forwordinwords:iflen(word)==1:继续else:counts[word]=counts.get(word,0)+1word_list=list(counts.items())word_list.sort(key=lambdax:x[1],reverse=True)returnword_list进行人肉优化,去掉不是人名的词,合并一些指的是同一个人的词变成一个人下来。导入jiebadefcountWords(excludes,merges):txt=open('novels/threekingdoms.txt','r',encoding='utf-8').read()words=jieba.lcut(txt)counts={}#取出长度为1的单词和符号以及excludes中的单词forwordinwords:iflen(word)==1orwordinexcludes:continueelse:counts[word]=counts.get(word,0)+1#合并同名的名字formergeinmerges:fornameinmerge[1]:counts[merge[0]]+=counts.get(name,0)delcounts[name]word_list=list(counts.items())word_list.sort(key=lambdax:x[1],reverse=True)returnword_listexcludes={'但是说','两个人','不允许','主公','陛下','汉中','我看见','将军','东道主','蜀兵','上马','呐喊','太守','此人','夫人','大少爷','后来','背后','城中','皇帝','一方','何乐而不为','大君','虎豹','先生。,'人','为什么','不能','所以','如何','然后','先锋','不如','来吧','原创','是','江东','下马','呼','正是','徐州','突然','荆州','左右','军马','故','成都','未见','未知','战败','重大事件','之后','第一军','介绍','入会','入军','应战','介绍','次日','大喜','前进','惊奇','能','想','怒','不至','心中','下','声','追','草','世界','东吴','所以','嘟嘟','曹兵','一起','分解','归来','付出','只','出','三千','将军','许都','后','报','今','不敢','魏兵','前','兵','且说','官','洛阳','带兵','议事','军士','星夜','精兵','上城','计划','拒绝','会见','他的话','一日','行走','文武双全','Xiangyang','preparation','howto','playing','inperson','musthave','oneperson','peopleandhorses','don'tknow','who','thismatter','among','Ambush','Qishan','Takeadvantage','Suddenlysee','Laugh','Fancheng','Brothers','Headlevel','Standin','Xichuan','Decree','Bethefirst','500','Yibiao','Holdon','Atthistime','Between','Surrender','5000','Ambush','Chang'an','ThreeWays','Sendenvoys','General','GuanXing','MilitaryDivision','ImperialCourt','ThreeArmies','GreatKing','Seeyoulater','GreatGeneral','Inevitable','Soldiers','It'snight','Xiaolu'}merges=[('LiuBei',('Xuande','Xuandesaid','Xuandeasked','LiuXuande','XuandeDa','Xuandefrom','XuandeDewen','UncleHuang','UncleLiuHuang')),('GuanYu',('GuanGong','YunChang','GuanYunchang')),('KongMing',('ZhugeLiang','KongMingsaid','KongMingxiao','KongMingzhi','KongMingzi')),('CaoCao',('PrimeMinister','MengDe','CaoGong','CaoMengde')),('ZhangFei',('Yide','ZhangYide'))]word_list=countWords(excludes,merges)foriinrange(30):word,count=word_list[i]print('{0:^10}{1:{3}^10}{2:^15}'.format(i+1,word,count,chr(12288)))#chr(12288)isaChinesespaceTheresultisasfollows,ofcourse,itissimilartogeneral,hero,lord,bigbrother,ItisimpossibletojudgewhothewordJunrefersto.Hereweonlycountwhatcanbejudged,soherewecanonlymakearelativereference.1LiuBei 15782 CaoCao 14853 Kongming 14854 GuanYu 8205 ZhangFei 3936 LuBu 3007 ZhaoYun 2788 SunQuan 2649 SimaYi 22110 ZhouYu 21711 YuanShao 19112 MaChao 18513 WeiYan 18014 HuangZhong 16815 JiangWei 15116 MaDai 12717 Pound 12218 MengHuo 12219 LiuBiao 12020 XiaHoudun 11621 DongZhuo 11422 SunCe 10823 LuSu 10724 XuHuang 9725 SimaZhao 8926 XiaHouyuan 8827 wangPing 8828 LiuZhang 8529 YuanShu 8430 LuMeng 83Pleasefocusonmyaccountandletthedreamgrowslowly
