Python学习打卡

安装python shell

 

  运行python

# 导入python资源包
from random import random
 
# 用户体验模块 
def printIntro():#输出文本即本程序的作用
    print("这个程序模拟两个选手A和B的某种竞技比赛")#打印
    print("程序运行需要A和B的能力值(以0到1之间的小数表示)")#打印
 
# 获得A和B的能力值与场次模块 
def getIntputs():#获得A,B的能力值
    a = eval(input("请输入A的能力值(0-1):"))#获得A的能力值
    b = eval(input("请输入B的能力值(0-1):"))#获得B的能力值
    n = eval(input("模拟比赛的场次:"))#获得比赛场次数
    return a, b, n
 
# 模拟n局比赛模块 
def simNGames(n, probA, probB):
    winsA, winsB = 0, 0#初始化A,B的获胜次数
    for i in range(n):#根据比赛的场次数进行
        scoreA, scoreB = simOneGame(probA, probB)#保存A,B的分数
        if scoreA > scoreB:#比较A、B的分数
            winsA += 1 #A的获胜次数加一
        else:
            winsB += 1#B的获胜次数加一
    return winsA, winsB #返回A、B的获胜次数,这个好像有点多余
 
# 判断比赛结束条件 
def gameOver(a, b):#比赛是否结束
    return a == 15 or b == 15#任意一队获得15分判定为胜利
 
# 模拟n次单局比赛=模拟n局比赛 
def simOneGame(probA, probB):#模拟比赛
    scoreA, scoreB = 0, 0#初始化A,B队获得的分数
    serving = "A"#A队获得主动权
    while not gameOver(scoreA, scoreB):#A队与B队比赛未结束就循环
        if serving == "A":#A队获得主动权
            if random() < probA:#根据A队能力及随机数判断A队能否得分
                scoreA += 1
            else:
                serving = "B"#B队伍获得主动权
        else:
            if random() < probB:#根据B队能力及随机数判断A队能否得分
                scoreB += 1
            else:
                serving = "A"#A队获得主动权
    return scoreA, scoreB
 
# 打印结果模块 
def printSummary(winsA, winsB):#打印仿真比赛结果
    n = winsA + winsB#计算A与B队获胜场数
    print("竞技分析开始,共模拟{}场比赛".format(n))#打印仿真比赛总场数
    print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA / n))#打印仿真比赛A胜率
    print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB / n))#打印仿真比赛B胜率
 
 
def main():
    printIntro()    
    probA, probB, n = getIntputs()                # 获得用户A、B能力值与比赛场次N
    winsA, winsB = simNGames(n, probA, probB)     # 获得A与B的场次
    printSummary(winsA, winsB)                    # 返回A与B的结果
 
 
main()

编写程序

运行结果

 

 注意区分全局变量与局部变量

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比格沃斯1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值