欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用python进行数据分析(七)

程序员文章站 2021-12-07 10:10:19
3 函数3.2.7 错误和异常处理python使用被称为异常的特殊对象来管理程序执行期间发生的错误。也就是当我们编写的程序出现错误时返回的traceback,它提示给我们代码哪个地方出现了那种异常,如果我们不对此进行处理,程序则会终止。异常是使用try-except代码块处理的,try-except代码块让python执行指定的操作,同时告诉python发生异常时怎么办。因此,当使用了try-except代码块时,即便出现了异常,程序也将继续执行。做一个简单的例子,我们在python中执行5/0....

3 函数

3.2.7 错误和异常处理

python使用被称为异常的特殊对象来管理程序执行期间发生的错误。也就是当我们编写的程序出现错误时返回的traceback,它提示给我们代码哪个地方出现了那种异常,如果我们不对此进行处理,程序则会终止。

异常是使用try-except代码块处理的,try-except代码块让python执行指定的操作,同时告诉python发生异常时怎么办。因此,当使用了try-except代码块时,即便出现了异常,程序也将继续执行。

做一个简单的例子,我们在python中执行5/0:

>>>print(5/0)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ZeroDivisionError: division by zero

可以看到,python告诉我们这是一个ZeroDivisionError: division by zero异常,因此无法执行这个程序。下面我们使用try-except代码块来告诉python出现这种错误时该如何:

>>>try:
 	  print(5/0)
  except ZeroDivisionError:
      print("不可以除以0")
 	
不可以除以0

我们将导致错误的代码行print(5/0)放在了一个try代码块中,如果try代码块中的代码运行起来没有问题,那么python将跳过except代码块;如果try代码块中的代码运行出现了异常,那么python便查找except代码块并运行其中的代码;当然,我们可以不在except中指定异常类型:

>>>try:
 	   print(5/0)
   except :
 	   print("不可以除以0") 
 	   
 不可以除以0	

如果我们希望程序出现异常时“一声不吭”,即不提供任何反馈,只需要在except代码块中使用pass语句,这样的话,程序“看起来”总是没有错误的。

>>>try:
 	   print(5/0)
   except :
 	   pass 
 

那么当try代码块中的代码执行成功时,如果我们需要程序继续执行,此时需要将后续的代码放进else代码块中:

>>>try:
	   answer = int(first_number) / int(second_number)
   except ZeroDivisionError:
	   print("不可以除以0!")
   else:
	   print(answer)
>>>
请输入第一个数字:5
请输入第二个数字:2
2.5

还有一种情况,我们希望有一些代码在任何时候都可以执行,即哪怕出现了异常也一样执行,这时候需要使用finally代码块:

>>>try:
	   answer = int(first_number) / int(second_number)
   except ZeroDivisionError:
	   print("不可以除以0!")
   else:
	   print(answer)
   finallyprint("本次计算结束!")
>>>
请输入第一个数字:5
请输入第二个数字:2
2.5
本次计算结束!
>>>
请输入第一个数字:5
请输入第二个数字:0
不可以除以0!
本次计算结束!

最后再来总结一下try-except-else-finally代码块的工作原理:
python尝试执行tyr代码块中的代码,只有可能引发异常的代码才需要放进try语句中。
except代码块告诉python,如果try代码块中的代码运行发生了异常该怎么办。
有时候,有一些仅在try代码块执行成功时才需要运行的代码,这些代码要放在else代码块中。
最后,无论try代码中的代码块执行是否成功,都希望可以执行的代码放进finally代码块中,比如对文件进行操作后执行文件关闭。

微生物基因组------挖掘微生物基因组序列中的信息

1,有效的基因自动识别可以用隐马尔可夫模型(hidden Markov model, HMM)完成,也可用内插式马尔可夫模型,如基因定位(Gene Locater)和内插式马可夫模型(Interpolated Markov Model)(Glimmer)这样的软件完成,并将计算机程序自动化与人工处理相结合来确定基因生物意义的类别和功能。
2,Blast和FASTA可在序列数据库中搜寻和比较蛋白同源簇,包括HMM,Pfam,COG。
3,在多数情况下,首轮的注释和人工处理尚不能解决代谢途径的所有步骤,但是通过预设的HMM模型,或者与其他物种相似代谢途径的序列做比较和搜寻未知物种的同源序列往往可以填补代谢途径中的空白。
4,基因组完成注释后,还有大量的ORF被作为保守假定蛋白(conserved hypothetical protein)(与其他物种有同源性)和假定蛋白(hypothetical protein)(该物种特有),对其中的具有生物学作用又不确定在细胞中功能的ORF研究是十分必要的。

本文地址:https://blog.csdn.net/liuninghua521/article/details/107268043