完善球赛程序,测试球赛程序和访问百度主页
2222一、用try......except的方法测试球赛程序
首先预测球赛代码为
1 from random import random 2 def printInfo(): 3 print("2019310143011") 4 print("这个程序模拟两个选手A和B的乒乓比赛") 5 print("程序运行需要A和B的能力值(以0到1之间的小数表示)") 6 def getInputs(): 7 a = eval(input("请输入选手A的能力值(0-1): ")) 8 b = eval(input("请输入选手B的能力值(0-1): ")) 9 n = eval(input("模拟比赛的场次: ")) 10 return a, b, n 11 def simNGames(n, probA, probB): 12 winsA, winsB = 0, 0 13 for i in range(n): 14 scoreA, scoreB = simOneGame(probA, probB) 15 if scoreA > scoreB: 16 winsA += 1 17 else: 18 winsB += 1 19 return winsA, winsB 20 def gameOver(a,b): 21 if a>=10 and b>=10: 22 if abs(a-b)==2: 23 return 1 24 elif a<10 and b<10: 25 if a==11 or b==11: 26 return 1 27 else: 28 return 0 29 def simOneGame(probA,probB): 30 scoreA,scoreB=0,0 31 serving="A" 32 while not gameOver(scoreA,scoreB): 33 if serving=="A": 34 if random()<probA: 35 scoreA+=1 36 else: 37 serving="B" 38 else: 39 if random()<probB: 40 scoreB+=1 41 else: 42 serving="A" 43 return scoreA,scoreB 44 def printSummary(winsA,winsB): 45 n=winsA+winsB 46 print("竞技分析开始,一共模拟{}场比赛".format(n)) 47 print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n)) 48 print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n)) 49 def main(): 50 printInfo() 51 probA,probB,n=getInputs() 52 winsA,winsB=simNGames(n,probA,probB) 53 printSummary(winsA,winsB) 54 main() 55 python3: input("please input any key to exit!")
用try...... except对程序进行测试,代码如下
1 from random import random 2 def printIntro(): 3 print("2019310143011") 4 print("这个程序模拟两个选手A和B的乒乓比赛") 5 print("程序运行需要A和B的能力值(以0到1之间的小数表示)") 6 try: 7 printIntro() 8 except: 9 print("prinntIntro error!") 10 def getInputs(): 11 a = eval(input("请输入选手A的能力值(0-1): ")) 12 b = eval(input("请输入选手B的能力值(0-1): ")) 13 n = eval(input("模拟比赛的场次: ")) 14 return a, b, n 15 try: 16 getInputs() 17 except: 18 print("getInputs error!") 19 def simNGames(n, probA, probB): 20 winsA, winsB = 0, 0 21 for i in range(n): 22 scoreA, scoreB = simOneGame(probA, probB) 23 if scoreA > scoreB: 24 winsA += 1 25 else: 26 winsB += 1 27 return winsA, winsB 28 try: 29 simNGames(1000,0.5,0.5) 30 except: 31 print("simNGames error!") 32 def gameOver(a,b): 33 if a>=10 and b>=10: 34 if abs(a-b)==2: 35 return 1 36 elif a<10 and b<10: 37 if a==11 or b==11: 38 return 1 39 else: 40 return 0 41 try: 42 gameOver(11) 43 except: 44 print("gameOver error!") 45 def simOneGame(probA, probB): 46 scoreA, scoreB = 0, 0 47 serving = "A" 48 while not gameOver(scoreA, scoreB): 49 if serving == "A": 50 if random() < probA: 51 scoreA += 1 52 else: 53 serving="B" 54 else: 55 if random() < probB: 56 scoreB += 1 57 else: 58 serving="A" 59 return scoreA, scoreB 60 try: 61 simOneGame(0.1,0.9) 62 except: 63 print("simOneGame error!") 64 65 def printSummary(winsA, winsB): 66 n = winsA + winsB 67 print("竞技分析开始,共模拟{}场比赛".format(n)) 68 print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n)) 69 print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n)) 70 try: 71 printSummary(560,440) 72 except: 73 print("printSummary error!") 74 def main(): 75 printIntro() 76 probA, probB, n = getInputs() 77 winsA, winsB = simNGames(n, probA, probB) 78 printSummary(winsA, winsB) 79 main()
这个代码中,在每个函数后都有try.....except测试了一遍,如果有错误会分别对某个函数进行报错。
为了测试,小编故意写错了一些,所以会有错误,运行结果如下

二、利用requests库访问百度主页
题目:用requests库的get()函数访问百度地址20次,打印返回状态,text()内容,计算text()属性和content属性所返回网页内容的长度
废话不多说代码如下👇
import requests def getHTMLText(url): try: for i in range(0,20): r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = 'utf-8' return r.status_code,r.text,r.content,len(r.text),len(r.content) ##返回状态,text和content内容,text()和content()网页的长度 except: return "" url = "https://www.baidu.com/?tn=80035161_1_dg" print(getHTMLText(url))
结果如下👇

浙公网安备 33010602011771号