zoukankan      html  css  js  c++  java
  • 第一个爬虫测试

    #一、Python 测试函数

    test测试的函数,没传参数的x,y,函数结果是要答应x加y的和

    try:试着执行test()函数,正常就执行函数并打印x加y的和

    except:否则 打印'Error' 

    1 def test(x,y):
    2     print (x+y)
    3 try:
    4     test()
    5 except:
    6     print ('Error')
    7 test(1,2)

    lis_y列表解析式 就是有是一个for循环range得到64-89最终的一个列表,

    test1函数求x和y的和,test1函数求x和y的乘法结果

    加了判断条件x<20的一个while循环,然后y是从列表y中取值,测试加法,测试乘法的时候又加了chr的方法

    chr方法返回整数i对应的ASCII字符。与ord()作用相反。

     1 x = 0
     2 lis_y = [i for i in range(64,90)]
     3 
     4 def test(x,y):
     5     print (x+y," "),
     6 
     7 def test1(x,y):
     8     print (x*y)
     9 
    10 try:
    11     while x < 20:
    12         for y in lis_y:
    13             test(x,y)
    14             test1(x,chr(y))
    15             x+=1
    16 except:
    17     print ('Error')

     二、完善球赛程序,测试你写的球赛程序,所有函数的测试结果

     1 #单打的淘汰赛(七局四胜制)
     2 from random import random
     3 def printIntro():          #打印程序介绍信息
     4     print("22号李诗然进行比赛分析结果:")
     5     print("这个程序模拟两个选手A和B的某种竞技比赛")
     6     print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
     7 def getInputs():           #获得程序运行参数
     8     a = eval(input("请输入选手A的能力值(0-1): "))
     9     b = eval(input("请输入选手B的能力值(0-1): "))
    10     n = eval(input("模拟比赛的场次: "))
    11     return a, b, n
    12 def simNGames(n, probA, probB):    # 进行N场比赛
    13     winsA, winsB = 0, 0
    14     for i in range(n):
    15         for j in range(7):           #进行7局4胜的比赛
    16             scoreA, scoreB = simOneGame(probA, probB)
    17             if scoreA > scoreB:
    18                 winsA += 1
    19             else:
    20                 winsB += 1
    21     return winsA, winsB
    22 try:
    23     simNGames(0.55)
    24 except:
    25     print("simNGames Error")
    26 
    27 
    28 def gameOver(a,b):               #正常比赛结束
    29     return a==11 or b==11
    30 def gameOver2(a,b):              #进行抢12比赛结束
    31    if abs((a-b))>=2:
    32        return a,b
    33 def simOneGame(probA, probB):         #进行一场比赛
    34     scoreA, scoreB = 0, 0           #初始化AB的得分
    35     serving = "A"                 
    36     while not gameOver(scoreA, scoreB):     #用while循环来执行比赛
    37         if scoreA==10 and scoreB==10:
    38             return(simtwoGame2(probA,probB))
    39         if serving == "A":
    40             if random() < probA:            ##用随机数生成胜负
    41                 scoreA += 1
    42             else:
    43                 serving="B"
    44         else:
    45             if random() < probB:
    46                 scoreB += 1
    47             else:
    48                 serving="A"
    49     return scoreA, scoreB
    50 
    51 try:
    52     simOneGame(0.54)
    53 except:
    54     print("simNGame Error")
    55     
    56 def simtwoGame2(probA,probB):
    57     scoreA,scoreB=10,10
    58     serving = "A"
    59     while not gameOver2(scoreA, scoreB):
    60         if serving == "A":
    61             if random() < probA:
    62                 scoreA += 1
    63             else:
    64                 serving="B"
    65         else:
    66             if random() < probB:
    67                 scoreB += 1
    68             else:
    69                 serving="A"
    70     return scoreA, scoreB
    71 
    72 try:
    73     simtwoGame2(0.44,0.66)
    74 except:
    75     print("simNGame2 Error")
    76     
    77 def printSummary(winsA, winsB):
    78     n = winsA + winsB
    79     print("竞技分析开始,共模拟{}场比赛".format(n))
    80     print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
    81     print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
    82 def main():
    83     printIntro()
    84     probA, probB, n = getInputs()
    85     winsA, winsB = simNGames(n, probA, probB)
    86     printSummary(winsA, winsB)
    87 main()

     

    尾号为2,访问百度网页

     1 import requests
     2 def getHTMLText(url):
     3     try:
     4         r = requests.get(url, timeout=30)
     5         r.raise_for_status()
     6         r.encoding = 'utf-8'
     7         return r.text
     8     except:
     9         return ""
    10     
    11 url = "http://www.baidu.com"
    12 print(getHTMLText(url))

     

     (此为运行的部分结果)

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 </head>
     6 <body>
     7     
     8   <h1>不问花开几许,只问浅学Python</h1>
     9   <h2>这是学号后两位为22同学做的第一个网页 </h2>
    10   <p id="first">清风暗度,夏日绵长</p>
    11 </body>
    12        <table border="T">
    13 <tr>
    14   <td>存在感</td>
    15   <td>成就感</td>
    16 </tr>
    17 </html>

     1 import requests
     2 from bs4 import BeautifulSoup
     3 allUniv = []
     4 def getHTMLText(url):
     5     try:
     6         r = requests.get(url, timeout=30)
     7         r.raise_for_status()
     8         r.encoding = 'utf-8'
     9         return r.text
    10     except:
    11         return ""
    12 def fillUnivList(soup):
    13     data = soup.find_all('tr')
    14     for tr in data:
    15         ltd = tr.find_all('td')
    16         if len(ltd)==0:
    17             continue
    18         singleUniv = []
    19         for td in ltd:
    20             singleUniv.append(td.string)
    21         allUniv.append(singleUniv)
    22 def printUnivList(num):
    23     print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^4}{5:{0}^10}".format(chr(12288),"排名","学校名称","省市","总分","年费"))
    24     for i in range(num):
    25         u=allUniv[i]
    26         print("{1:^4}{2:{0}^10}{3:{0}^5}{4:{0}^8.1f}{5:{0}^11}".format(chr(12288),u[0],u[1],u[2],eval(u[3]),u[11]))
    27 def main():
    28     url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html'
    29     html = getHTMLText(url)
    30     soup = BeautifulSoup(html, "html.parser")
    31     fillUnivList(soup)
    32     printUnivList(10)
    33 main()

     

  • 相关阅读:
    金融法规
    大型网站架构演化
    用一张决策图来重新思考你的网站
    互联网产品的一般商业模式
    怎样开始冥想
    创造安宁舒适工作日的17个办法
    人生规划和GTD——"知"、"得"与"合"
    立即行动的七个方法
    文件归档的学问
    入门GTD时间管理系统必读
  • 原文地址:https://www.cnblogs.com/Adaran/p/12916311.html
Copyright © 2011-2022 走看看