设为首页 收藏本站
查看: 1531|回复: 0

[经验分享] 三、python基础之条件和循环

[复制链接]

尚未签到

发表于 2018-8-15 12:08:26 | 显示全部楼层 |阅读模式
  目录
  一.if语句
  1.1 功能
  1.2 语法
  1.2.1:单分支,单重条件判断
  1.2.2:单分支,多重条件判断
  1.2.3:if+else
  1.2.4:多分支if+elif+else
  1.2.5:if语句小结
  1.3 案例
  1.4 三元表达式
  二.while语句
  2.1 功能
  2.2 语法
  2.2.1:基本语法
  2.2.2:计数循环
  2.2.3:无限循环
  2.2.4:while与break,continue,else连用
  2.2.5:while语句小结
  2.3 案例
  三.for语句
  3.1 功能
  3.2 语法
  3.2.1:基本语法
  3.2.2:遍历序列类型
  3.2.3:遍历可迭代对象或迭代器
  3.2.4:for基于range()实现计数循环
  3.2.5:for与break,continue,else
  3.2.6:for语句小结
  一.if语句
  1.1 功能
  计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)
  if语句就是来控制计算机实现这一功能
  1.2 语法
  1.2.1:单分支,单重条件判断
  if expression:
  expr_true_suite
  注释:expession为真执行代码expr_true_suite
  1.2.2:单分支,多重条件判断
  if not  active or over_time >= 10:
  print('Warning:service is dead')
  warn_tag+=1
  1.2.3:if+else
  if expression:
  expr_true_suite
  else:
  expr_false_suite
  1.2.4:多分支if+elif+else
  if expession1:
  expr1_true_suite
  elif expression2:
  expr2_true_suite
  elif expession3:
  expr3_true_suite
  else:
  none_of_the_above_suite
  1.2.5:if语句小结
  if 后表达式返回值为True则执行其子代码块,然后此if语句到此终结,否则进入下一分支判断,直到满足其中一个分支,执行后终结if
  expression可以引入运算符:not,and,or,is,is not
  多重expression为加强可读性最好用括号包含
  if与else缩进级别一致表示是一对
  elif与else都是可选的
  一个if判断最多只有一个else但是可以有多个elif
  else代表if判断的终结
  expession可以是返回值为布尔值的表达式(例x>1,x is not None)的形式,也可是单个标准对象(例 x=1;if x:print('ok'))
  所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布 尔 True 或 False 值。空对象、值为零的任何数字或者 Null 对象 None 的布尔值都是 False。
  下列对象的布尔值是 False
DSC0000.png

  三元表达式
  语法:
  expr_true_suite if expession else expr_false_suite
  案例一:
  >>> active=1
  >>> print('service is active') if active else print('service is inactive')
  service is active
  案例二:
  >>> x=1
  >>> y=2
  >>> smaller=x if x < y else y
  >>> smaller
  1
  二.while语句
  2.1 功能
  while循环的本质就是让计算机在满足某一条件的前提下去重复做同一件事情(即while循环为条件循环,包含:1.条件计数循环,2条件无限循环)
  这一条件指:条件表达式
  同一件事指:while循环体包含的代码块
  重复的事情例如:从1加到10000,求1-10000内所有奇数,服务等待连接
  2.2 语法
  2.2.1:基本语法
  while expression:
  suite_to_repeat
  注解:重复执行suite_to_repeat,直到expression不再为真
  2.2.2:计数循环
  count=0
  while (count < 9):
  print('the loop is %s' %count)
  count+=1
  2.2.3:无限循环
  count=0
  while True:
  print('the loop is %s' %count)
  count+=1
  tag=True
  count=0
  while tag:
  if count == 9:
  tag=False
  print('the loop is %s' %count)
  count+=1
  while语句小结
  条件为真就重复执行代码,直到条件不再为真,而if是条件为真,只执行一次代码就结束了
  while有计数循环和无限循环两种,无限循环可以用于某一服务的主程序一直处于等待被连接的状态
  break代表跳出本层循环,continue代表跳出本次循环
  while循环在没有被break打断的情况下结束,会执行else后代码
  2.3 案例
  用户登陆验证
  import getpass
  account_dict={'alex':'123','eric':'456','rain':'789'}
  count = 0
  while count < 3:
  name=input('用户名: ').strip()
  passwd=getpass.getpass('密码: ')
  if name in account_dict:
  real_pass=account_dict.get(name)
  if passwd == real_pass:
  print('登陆成功')
  break
  else:
  print('密码输入错误')
  count+=1
  continue
  else:
  print('用户不存在')
  count+=1
  continue
  else:
  print('尝试次数达到3次,请稍后重试')
  三.for语句
  3.1 功能
  for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)
  3.2 语法
  3.2.1:基本语法
  for iter_var in iterable:
  suite_to_repeat
  注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.
  3.2.2:遍历序列类型
  name_list=['alex','eric','rain','xxx']
  #通过序列项迭代
  for i in name_list:
  print(i)
  #通过序列索引迭代
  for i in range(len(name_list)):
  print('index is %s,name is %s' %(i,name_list))
  #基于enumerate的项和索引
  for i,name in enumerate(name_list,2):
  print('index is %s,name is %s' %(i,name))
  3.2.3:遍历可迭代对象或迭代器
  迭代对象:就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容所有内容迭代完后,
  迭代器引发一 个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.
  for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环的操作
  很多时候你根本无法区分for循环的是序列对象还是迭代器
  3.2.4:for基于range()实现计数循环
  range()语法:
  range(start,end,step=1):顾头不顾尾
  range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
  range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]
  注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环
  3.2.5:for与break,continue,else
  同while
  3.2.6:for语句小结
  for循环为迭代循环
  可遍历序列成员(字符串,列表,元组)
  可遍历任何可迭代对象(字典,文件等)
  可以用在列表解析和生成器表达式中
  break,continue,else在for中用法与while中一致
  作业:用户登录验证
  表结构:
  CREATE TABLE `user_login` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  `pwd` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
  代码:
  #!/usr/bin/python
  #-*- coding: utf-8 -*-
  import MySQLdb
  import sys
  sys.path.insert(0,"/etc/dbbin")
  from lib import configgetter
  getter = configgetter.Configuration("conf/mysql.cfg")
  suser = "mysqlha"
  spasswd = getter.passget("mysql",suser)
  def MysqlSelect(host,port,db,sql,charset="utf8"):
  try:
  conn = MySQLdb.connect(host=host,port=port,user=suser,passwd=spasswd,db=db)
  cursor = conn.cursor()
  charsql = "set names %s" %charset
  cursor.execute(charsql)
  cursor.execute(sql)
  result = cursor.fetchall()
  return result
  except Exception,ex:
  print "execute is faild : %s" %sql
  ex_info = str(ex)
  print ex_info
  return 2,ex_info
  def UserLogin():
  errcode = 0
  while True:
  name = raw_input('Please input user name:').strip()
  pwd = raw_input('Please input user password: ').strip()
  namesql = "select name from user_login where name = '%s'" % name
  passwdsql = "select pwd from user_login where name = '%s'" % name
  name_group = MysqlSelect('10.20.8.1',3488,'tt',namesql)
  pwd_group = MysqlSelect('10.20.8.1',3488,'tt',passwdsql)
  print errcode
  if name_group != ():
  if name == name_group[0][0] and errcode == 3:
  print "%s   user has been locked  " % name
  continue
  if name == name_group[0][0]:
  if pwd == pwd_group[0][0]:
  print "%s login sucess" % name
  break
  else:
  print "User password error,Please try again"
  errcode += 1
  else:
  print " %s user not exists" % name
  break
  UserLogin()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552200-1-1.html 上篇帖子: 二、python基础之核心风格 下篇帖子: python-sqlalchemy安装各种细节
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表