文件操作和Pillow、Json库使用

本文将介绍如何使用Python进行文件操作,并结合Pillow库处理图像,同时探讨Json库在数据存储和交换中的应用。通过实例,我们将展示如何利用Python实现《三国演义》的词云效果,结合jieba分词,展示文本的视觉统计。
  1. 借鉴实例15的思路,采用乒乓球规则模拟比赛,分析体育竞技规律
    from random import random 
    def printIntro():   
        print("模拟两支队伍竞技比赛")
        print("--------------------")
    def getInputs():      
        a = eval(input("请输入队伍A的能力值: "))
        b = eval(input("请输入队伍B的能力值: "))
        n = eval(input("模拟比赛的场次: "))
        return a, b, n
    def simNGames(n, probA, probB):    
        winsA, winsB = 0, 0
        for i in range(n):
            for j in range(5):           
                scoreA, scoreB = simOneGame(probA, probB)
                if scoreA > scoreB:
                    winsA += 1
                else:
                    winsB += 1
        return winsA, winsB
    def gameOver(a,b):              
        return a==11 or b==11
    def gameOver2(a,b):              
        return a==12 or b==12
    def simOneGame(probA, probB):         
        scoreA, scoreB = 0, 0           
        serving = "A"                 
        while not gameOver(scoreA, scoreB):     
            if scoreA==10 and scoreB==10:
                return(simtwoGame2(probA,probB))
            if serving == "A":
                if random() < probA:             
                    scoreA += 1
                else:
                    serving="B"
            else:
                if random() < probB:
                    scoreB += 1
                else:
                    serving="A"
        return scoreA, scoreB
    def simtwoGame2(probA,probB):
        scoreA,scoreB=10,10
        serving = "A"                 
        while not gameOver2(scoreA, scoreB):
            if serving == "A":
                if random() < probA:
                    scoreA += 1
                else:
                    serving="B"
            else:
                if random() < probB:
                    scoreB += 1
                else:
                    serving="A"
        return scoreA, scoreB
    def printSummary(winsA, winsB):
        n = winsA+winsB
        print("分析开始,共模拟{}场比赛".format(int(n/5)))
        print("队伍A获胜{}场比赛,占比{:0.1%}".format(int(winsA/5), winsA/n))
        print("队伍B获胜{}场比赛,占比{:0.1%}".format(int(winsB/5), winsB/n))
    def main():
        printIntro()
        probA, probB, n = getInputs()
        winsA, winsB = simNGames(n, probA, probB)
        printSummary(winsA, winsB)
    main()
    

  2. 词云是设计和统计的结合,也是艺术和计算机科学的碰撞。Wordcloud是一款基于python的词云第三方库,支持对词语数量、背景蒙版、字体颜色等各种细节的设置,试结合jieba的分词功能构建《三国演义》的词云效果。
    c = wordcloud.WordCloud()
    c.generate("wordcloud by Python")
    c.to_file("0.png")
    
    import jieba
    import wordcloud
    txt = "话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。推其致乱之由,殆始于桓、灵二帝。桓帝禁锢善类,崇信宦官。及桓帝崩,灵帝即位,大将军窦武、太傅陈蕃共相辅佐。时有宦官曹节等弄权,窦武、陈蕃谋诛之,机事不密,反为所害,中涓自此愈横。"
    w = wordcloud.WordCloud( width=1000,height=700,font_path="msyh.ttc",
                             max_words=25,background_color = "white")
    w.generate(" ".join(jieba.lcut(txt)))
    
    w.to_file("1.png") 
    

     

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值