丰富的else语句
要么怎样,要么不怎样:if...else...
干完了能怎样,干不完就别想怎样
没有问题,那就干吧
一、要么怎样,要么不怎样
常见的if...else...语法
=====
二、干完了能怎样,干不完就别想怎样
例1:while与else之间的break
判断一个数是素数还是合数,如果是合数,则求出
合数的最大约数。
自己求解:
def func(num):
k = num //2 #板除,结果肯定是整数
if(k<1): #如果k是1,2,3,那么肯定是素数,否则进入下面的判断
print '%d是素数' % num
else:
while(k != 1):
if(num % k == 0):
print '%d是合数,它的最大约数是%d' % (num,k)
break
k = k - 1
else:
print '%d是素数' % num
>>> func(3)
3是素数
>>> func(30)
30是合数,它的最大约数是15
正规求解:
def func(num):
k = num // 2
while( k > 1 ):
if num % k == 0:
print ('%d是合数,它的最大约数是:%d' % (num,k))
break
else:
k -= 1
else:
print ('%d是素数' % num)
>>> func(2)
2是素数
>>> func(30)
30是合数,它的最大约数是:15
【重点解释:崭新的知识点】
如果while中,break执行,则不执行else语句中的内容;
如果while循环正常退出,则执行else语句中的内容。
break跳出范围是while循环,连带while...else...语句一并跳出。
因此break跳出后,不会执行else语句中的内容。
例1:for与else之间的break
【注解】for...else...与while...else...用法和含义完全相同
===
三、没有问题,那就干吧
说明:与第二种形式类似,它是与try语句进行搭配的,
即只要try语句中没有发生异常,就会执行else语句中的内容。
例1:
def f1():
try:
int('show') #把字符串强制转为int,会发生ValueError 异常
except ValueError as reason:
print('出错了:'+str(reason))
else:
print('没有任何异常')
>>> f1()
出错了:invalid literal for int() with base 10: 'show'
【注解】在try语句中,如果发生异常,就不会执行try...else...
后面的else语句中的内容。
例2:
def ff():
try:
print('show') #直接打印字符串,不会发生异常
except ValueError as reason:
print('出错了:'+str(reason))
else:
print('没有任何异常')
>>> ff()
show
没有任何异常
【注解】在try语句中,如果不发生异常,就会执行try...else...
后面的else语句中的内容。
+++++++++++++++
+++++++++++++++
+++++++++++++++
+++++++++++++++
简洁的with语句:用于文件操作
http://www.cnblogs.com/ymjyqsx/p/6554817.html
方法一:以前的学习我们常用的文件打开方式
try:
f = open('', '')
print(f.read())
finally:
if f:
f.close()
【注解】上面的形式太繁琐,不但有try异常处理机制,还有
f.close()语句。因此我们引出下面的语法
方法二:
with open('','') as f:
print(f.read())
这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。