当前位置: 首页 > 后端技术 > Python

几个好玩有趣的Python入门例子

时间:2023-03-25 19:25:40 Python

几个好玩有趣的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