python输出有误,出现AttributeError: 'NoneType' object has no attribute 'startswith'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python输出有误,出现AttributeError: 'NoneType' object has no attribute 'startswith'相关的知识,希望对你有一定的参考价值。
用API调用了B站番剧,想进行追番人数可视化,但是出现这句错误 请问是什么原因?我的python代码如图
你的错误提示并没有看到具体是代码中哪一行,但从提示来看,是因为某个对象没有正常获得数据,他们值是一个None,所以需要提前对color进行检测。 参考技术A W是大写吧?Python之测试程序是否有误
Python测试函数的方法之一
1、首先介绍简单的try......except尝试运行的放例如下面的图和代码来简单介绍下:
1 def test(x,y): 2 print(x+y) 3 4 try: 5 test() 6 except: 7 print(\'Error\') 8 9 test(2,4)
test测试的函数,没传参数的x,y,函数结果是要答应x加y的和
try:试着执行test()函数,正常就执行函数并打印x加y的和
except:否则 打印\'Error\' 因为我这test没有给x,y定义传参数,所以会走到except
结果:
2、我们以上次排球比赛程序为例子做测试:
1 from random import random 2 def printIntro(): #打印程序介绍信息 3 print("10号张颖慧进行比赛分析结果:") 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): # 进行N场比赛 12 winsA, winsB = 0, 0 13 for i in range(n): 14 for j in range(7): #进行7局4胜的比赛 15 scoreA, scoreB = simOneGame(probA, probB) 16 if scoreA > scoreB: 17 winsA += 1 18 else: 19 winsB += 1 20 return winsA, winsB 21 try: 22 simNGames(0.55) 23 except: 24 print("simNGames Error") 25 26 def gameOver(a,b): #正常比赛结束 27 return a==24 or b==24 28 def gameOver2(a,b): #进行抢12比赛结束 29 if abs((a-b))>=2: 30 return a,b 31 def simOneGame(probA, probB): #进行一场比赛 32 scoreA, scoreB = 0, 0 #初始化AB的得分 33 serving = "A" 34 while not gameOver(scoreA, scoreB): #用while循环来执行比赛 35 if scoreA==10 and scoreB==10: 36 return(simtwoGame2(probA,probB)) 37 if serving == "A": 38 if random() < probA: ##用随机数生成胜负 39 scoreA += 1 40 else: 41 serving="B" 42 else: 43 if random() < probB: 44 scoreB += 1 45 else: 46 serving="A" 47 return scoreA, scoreB 48 try: 49 simOneGame(0.54) 50 except: 51 print("simNGame Error") 52 53 def simtwoGame2(probA,probB): 54 scoreA,scoreB=23,23 55 serving = "A" 56 while not gameOver2(scoreA, scoreB): 57 if serving == "A": 58 if random() < probA: 59 scoreA += 1 60 else: 61 serving="B" 62 else: 63 if random() < probB: 64 scoreB += 1 65 else: 66 serving="A" 67 return scoreA, scoreB 68 try: 69 simtwoGame2(0.44,0.66) 70 except: 71 print("simNGame2 Error") 72 73 def printSummary(winsA, winsB): 74 n = winsA + winsB 75 print("竞技分析开始,共模拟{}场比赛".format(n)) 76 print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n)) 77 print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n)) 78 def main(): 79 printIntro() 80 probA, probB, n = getInputs() 81 winsA, winsB = simNGames(n, probA, probB) 82 printSummary(winsA, winsB) 83 main()
这个代码中,在一些函数后用try.....except测试了一遍,如果有错误会分别对某个函数进行报错。
因为小编在参数中故意写错,故会出现错误
运行结果如下:
当然还可以执行多个函数及条件的测试都可以,这样可以实现自动化测试业务代码,还可以穿插在程序中你需要的地方
做检测等,这样你的程序会按流程走,这块又可以得到你要的测试效果。来看看代码如下:
1 x = 0 2 lis_y = [i for i in range(80,85)] 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\')
运行结果如下:
以上是关于python输出有误,出现AttributeError: 'NoneType' object has no attribute 'startswith'的主要内容,如果未能解决你的问题,请参考以下文章