hao1nan 发表于 2018-8-8 10:21:57

python 流程控制

  Python 用冒号: 作为程序块标记关键字。
  注意:每个用冒号':'标记的程序块内的代码必须有相同的缩进
  if/elif/else 判断语句
  # cat test.py
  #!/usr/bin/env python
  # -- coding:utf-8 --
  if name =="main":
  print "Hello"
  print "World"
  # ./test.py
  Hello
  World
  Python中可以使用pass语句来定义作用域,但不做任何操作
  # -- coding:utf-8 --
  if name =="main":
  pass
  技巧 : pass用于需要写代码,但实际什么也不做的场合

判断语句3种
  if expression1:
  block_for_True

if expression1:
  block_for_True
  else:
  block_for_False

  if expression1:
  block_for_expression1
  elifexpression2:
  block_for_expression2
  ....
  elif   expression3:
  block_for_expression3
  else:
  block_for_False
  实例:
  #!/usr/bin/env python
  # -- coding:utf-8 --
  import sys
  param=None
  if len(sys.argv) > 1:
  param=int(sys.argv)
  if param is None:
  print "Alert"
  print "please input a number."
  elif param < -10:
  print 'too small'
  elif param > 10:
  print 'too big'
  else:
  print &quot;so good&quot;
  注意: None   可以”=“赋值None,在条件判断中 用 isNone
  sys.argv 是一个系统List变量,sys.argv为程序名,从第二个(索引1)开始的其他元素为字符串类型的控制台输入参数。
  循环语句
  1.
  whileexpression:
  repeat_block
  2.
  forelement in iteralbe:
  repeat_block


[*]break    continue  实例:列表pop()动态删除元素,len()动态判断列表元素个数
  #!/usr/bin/env python
  # -- coding:utf-8 --

  fruits=['apple','banana','orange','egg']
  while len(fruits)>0:
  print &quot;pop element out&quot;,fruits.pop()
  # ./test.py
  pop element out egg
  pop element out orange
  pop element out banana
  pop element out apple
  #
  #!/usr/bin/env python
  # -- coding:utf8 --
  import random
  while True:
  x=random.randint(1,6)
  print (x)
  if x==6:break
  注释:True:用于死循环。 break 退出循环
  列表
  #!/usr/bin/env python
  # -- coding:utf-8 --
  myList=['Englis','chinese','Japanese','German','France']

for element in myList:
  print &quot;current language is &quot;,element
  # ./test.py
  current language isEnglis
  current language ischinese
  current language isJapanese
  current language isGerman
  current language isFrance
  -----------等同以下效果-------------------
  #!/usr/bin/env python
  # -- coding:utf-8 --
  myList=['Englis','chinese','Japanese','German','France']
  i=0
  for element in myList:
  print &quot;current language is &quot;,i,myList
  i=i+1

#!/usr/bin/env python
  # -- coding:utf-8 --
  myList=['Englis','chinese','Japanese','German','France']
  for i,element in enumerate(myList):
  print &quot;current language is &quot;,i,myList

  #!/usr/bin/env python
  # -- coding:utf-8 --
  def pick(x):
  myList=['Englis','chinese','Japanese','German','France']
  return myList
  alist=
  choices=map(pick,alist)
  for choice in choices:
  print choice
  解释:
  map(执行用的函数,容器变量)
  此函数会自动把每一个在容器变量中的元素都读去出来,放到执行用函数中当作参数,在把返回值合并到一个容器变量中。
  map函数中设置pick和alist,它把alist中的每一个数值都放入pick中执行,在搜集pick所返回来的每一个值,最后都放到choices容器变量中
  实例
  #!/usr/bin/env python
  # -- coding:utf8 --
  alist=range(1,9)
  y=map(lambda x:x3,alist)
  for i,element in enumerate(y,1):
  print &quot;{}3 ={}&quot;.format(i,element)
  # ./test.py
  13 =3
  23 =6
  33 =9
  43 =12
  53 =15
  63 =18
  73 =21
  83 =24
  迭代器enumerate   map   filter
  例外处理
  在处理数据时,经常遇到例外,使程序产生错误信息并突然中断程序执行。把例外都拦截下来,加以处理,就是所谓的例外处理
  #!/usr/bin/env python
  # -- coding:utf8 --
  while True:
  try:
  age=int(input(&quot;Please input age:&quot;))
  break
  except:
  print &quot;please enter a number&quot;
  if age < 15:
  print 'you are too yong'
  凡是在try之内的语句只要有任何异常,程序控制流程就会自动跑到except之下的语句在程序中处理例外的情况。
  处理不同种类的例外
  # cat test.py
  #!/usr/bin/env python
  # -- coding:utf8 --
  import os,sys
  try:
  os.remove('filename')
  except Exception as e:
  print(e)
  

e_type,e_value,e_tb=sys.exc_info()  
print("种类:{}\n消息:{}\n信息:{}".format(e_type,e_value,e_tb))
  

  # ./test.py
   No such file or directory: 'filename'
  种类:<type 'exceptions.OSError'>
  消息: No such file or directory: 'filename'
  信息:<traceback object at 0x7f9d99c6fb00>
  说明:需要导入os,sys
  先通过Exception 来捕捉所有的例外,并把例外事件以e当作是记录的对象,使用print(e)把例外的信息打印出来。
页: [1]
查看完整版本: python 流程控制