zoukankan      html  css  js  c++  java
  • python第一个爬虫。

    1、测试羽毛球规则程序代码。

    原代码如下:

    from random import random
    
    print("学号尾数08")
    
    def printIntro():
        
        print("这个程序模拟两个选手A和B的羽毛球竞技比赛")
        print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
    def getInputs():
        a = eval(input("请输入选手A的能力值(0-1): "))
        b = eval(input("请输入选手B的能力值(0-1): "))
        n = eval(input("模拟比赛的场次: "))
        m = eval(input("模拟次数:"))
        return a, b, n, m
    def simNGames(n, probA, probB):
        winsA, winsB = 0, 0
        scoreA_ls=[]
        scoreB_ls=[]
        for i in range(n):
            scoreA, scoreB = simOneGame(probA, probB)
            scoreA_ls.append(scoreA)
            scoreB_ls.append(scoreB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
        return winsA, winsB,scoreA_ls,scoreB_ls
    def gameOver(a,b):
        if(a>20 or b>20):
            if(abs(a-b)>=2 and a<=29 and b<=29):
                return True
            else:
                return a==30 or b==30
        else:
            return False
    def simOneGame(probA, probB):
        scoreA, scoreB = 0, 0
        serving = "A"
        while not gameOver(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,m,scoreA_ls,scoreB_ls):
        n = winsA + winsB
        print("模型模拟次数{}".format(m))
        print("竞技分析开始,共模拟{}场比赛".format(n))
        print("A选手各场次得分比分:")
        print(scoreA_ls)
        print("B选手各场次得分比分:")
        print(scoreB_ls)
        print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
        print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
    def main():
        printIntro()
        probA, probB, n, m= getInputs()
        for i in range(m):
            winsA, winsB,scoreA_ls,scoreB_ls = simNGames(n, probA, probB)
            printSummary(winsA, winsB,m,scoreA_ls,scoreB_ls)
    
    main()
    

      加了测试函数的代码如下:

    from random import random
    
    print("学号尾数08")
    
    def printIntro():
        
        print("这个程序模拟两个选手A和B的羽毛球竞技比赛")
        print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
    try:
        printIntro(x)
    except:
        print('printIntro error')
    def getInputs():
        a = eval(input("请输入选手A的能力值(0-1): "))
        b = eval(input("请输入选手B的能力值(0-1): "))
        n = eval(input("模拟比赛的场次: "))
        m = eval(input("模拟次数:"))
        return a, b, n, m
    try:
        getInputs(x)
    except:
        print('getInputs error')
    def simNGames(n, probA, probB):
        winsA, winsB = 0, 0
        scoreA_ls=[]
        scoreB_ls=[]
        for i in range(n):
            scoreA, scoreB = simOneGame(probA, probB)
            scoreA_ls.append(scoreA)
            scoreB_ls.append(scoreB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
        return winsA, winsB,scoreA_ls,scoreB_ls
    try:
        simNGames(1000,0.1)
    except:
        print('simNgame error')
    def gameOver(a,b):
        if(a>20 or b>20):
            if(abs(a-b)>=2 and a<=29 and b<=29):
                return True
            else:
                return a==30 or b==30
        else:
            return False
    try:
        gameover(1,20)
    except:
        print('gameOver error')
    def simOneGame(probA, probB):
        scoreA, scoreB = 0, 0
        serving = "A"
        while not gameOver(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
    try:
        simOneGame(0.1)
    except:
        print('SimOneGame error')
    def printSummary(winsA, winsB,m,scoreA_ls,scoreB_ls):
        n = winsA + winsB
        print("模型模拟次数{}".format(m))
        print("竞技分析开始,共模拟{}场比赛".format(n))
        print("A选手各场次得分比分:")
        print(scoreA_ls)
        print("B选手各场次得分比分:")
        print(scoreB_ls)
        print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
        print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
    try:
        printSummary(500)
    except:
        ('printSummary error')
    def main():
        printIntro()
        probA, probB, n, m= getInputs()
        for i in range(m):
            winsA, winsB,scoreA_ls,scoreB_ls = simNGames(n, probA, probB)
            printSummary(winsA, winsB,m,scoreA_ls,scoreB_ls)
    
    main()
    

      为了测试显得更有价值,所以将原代码中许多函数改成错误的。运行结果如下:

    2、python连接360主页20次:

    代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Wed May 22 21:59:28 2019
    
    @author: 小米
    """
    
    import requests
    def getHTMLText(url):
        try:
            r=requests.get(url,timeout=30)
            r.raise_for_status()
            r.encoding='utf-8'
            return r.text
        except:
            return "dddd"
    url="https://hao.360.cn/"
    print(getHTMLText(url))
         
    for i in range(20):
       getHTMLText(url)
       print(i+1)
    

    运行结果如下:

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/gsd-tt/p/10908887.html
Copyright © 2011-2022 走看看