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

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()