实验目标如图所示,程序也很简单

wKioL1Z-BUrjYBi1AACzg40oEL4664.png

1
2
3
4
5
6
7
8
9
while  1 :
     try :
         AAA = int ( input ( "请输入一个整数:" ))
         print ( "Good!" )
         break
     except  ValueError as reason:
         print ( "出错了,您出错的原因是:" + str (reason))
       print ( "请重新输入:" )
         continue

这里要注意以下几点:

1)try语句和if语句的区别,try语句后接“要发生的事情”,而if语句是“先有语句,然后if/else”。

2)对于python 3.x的同好,while 1和while True的速度是一样的,但是在python 2.x里,while True是相比较要慢一丢丢,因为python 2.x里True不是关键词,是可以赋值的,这样程序每次启动都会先检查True/False是不是一个变量,这样会耽误那么半秒的时间。So,为了多省那么几秒钟,直接就while 1吧。

===================================分割线=========================================

这里有一个重要补充!!

try语句是一个try搭配一个动作,然后except一下,然后try搭配另一个动作,再except一下。如果一个try搭配好几十个动作,但是这好几十个动作里有一个出了错,导致系统卡死,单纯的依靠finally是没法补救的,因为之前的动作都已经打开了。

1
2
3
4
5
6
7
8
for  instance:
     try
         f = open ( "E:/Python/AAA/12345.txt" )
         do something
     except (对应的Error):
         do something
     finally :
         f.close()

这个程序就是很标准的案例,虽然很常见但是他是错误的。因为一个try里有两个动作:“打开文件”和“do something”,若是do something出了问题,可以f.close()保存,但是若是在"打开文件"出了问题,如何F.close()?因为文件压根就没打开!

所以正确的代码如下:

   

1
2
3
4
5
6
7
8
9
10
11
try :
     =  open ( 'xxx' )
except :
     print  'fail to open'
     exit( - 1 )
try :
     do something
except :
     do something
finally :
     f.close()