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

[经验分享] 【循序渐进学Python】5.Python常用流程控制及其他语句

[复制链接]

尚未签到

发表于 2015-4-19 07:39:18 | 显示全部楼层 |阅读模式
1. 赋值语句常用技巧
  通过序列解包(sequence unpacking)可以将多个值的序列解开,让后一一放置到变量的序列中。解包的序列中的元素必须和等号左边变量数量一致。如下:




1 values = 1,2,3
2
3 print values # output: (1, 2, 3)
4
5 x,y,z = values # output: 1 2 3
6 print x,y,z
7
8 bob_Info = {'name':'Bob','email':'bob@gmail.com'}
9 key,value = bob_Info.popitem()
10
11 print value # output: Bob

  

1.2 链式赋值
  通过使用链式赋值(chained assignment)可以将一个值同时赋给多个变量,如下:




x = y = z = 1
print x,y,z # output: 1 1 1

  

1.3 增量赋值
  将表达式运算符(+、-、*、%、/等)放置在赋值运算符(=)的左边,这些写法被称为增量赋值(augmented assignment),如下:




1 x = 6
2
3 x += 1
4 print x # output: 7
5
6 x *= 6
7 print x # output: 42

  

2. 缩进 —— Python语言的风格
  Python和其他语言有一个很大的区别在于:Python 使用硬回车来分割语句,使用冒号(:)和缩进来分割代码块。同一层次的语句必须有相同的缩进(每一组这样的语句称为一个块),而C语言风格的编程语言(Java/C#/C++)则使用分号来分割语句,花括号来分割代码块。
  正确的缩进

  不要混合使用tab键和空格来进行缩进,这会使程序在跨平台时不能正常的工作。官方推荐的做法是使用四个空格

  如下:




1 # --- coding: utf-8 ---
2
3 age = 20
4 if age < 21:
5     print '不能买酒'
6     print '但是你可以来块口香糖'
7
8 print '这句话处于If语句的外部'

  

3. 条件和条件语句
  在Python中解释器认为标准值False、None和所有类型的数字0(浮点型,长整型等)、空序列(字符串、字典、列表等)都为假(False),如下所示:




1 print bool(False) # False
2 print bool(None)  # False
3 print bool(0)     # False
4 print bool("")    # False
5 print bool(())    # False
6 print bool([])    # False
7 print bool({})    # False

  

3.2 条件执行和if语句
  和C#中的If语句类似,如果if内的条件判定为真,则执行后面的语句块:




1 # -- coding: utf-8 --
2 age = 18
3
4 if age >= 18:
5     print '年龄超过18岁了'

  

3.3 else子句
  else子句作为if语句的一部分,如果if语句的条件被判定为“False”则执行else子句后的语句块,如下:




1 # -- coding: utf-8 --
2 age = 16
3
4 if age >= 18:
5     print '年龄超过18岁了'
6 else:
7     print '未成年人'

  

3.4 elif子句
  elif子句是“else if”的简写,通过elif子句可以检查更多的条件,如下:




1 num = input('Enter a number: ')
2
3 if num > 0:
4     print 'The number is positive'
5 elif num < 0:
6     print 'The number is negative'
7 else:
8     print 'The number is zero'

  

3.5 嵌套代码块
  有时候我们需要更加复杂的条件分支判定,这时可以嵌套使用if语句来实现,如下:




1 num = raw_input('Enter a number: ')
2
3 if name.endswith('Gumby'):
4     if name.startswith('Mr.'):
5         print 'Hello. Mr.Gumby'
6     elif name.startswith('Mrs.'):
7         print 'Hello, Mrs. Gumby'
8     else:
9         print 'Hello,Gumby'
10 else:
11     print 'Hello,Stranger'

  

3.6 更复杂的条件
  比较运算符
  比较运算符时条件中最基本的运算符,详见下表:

[table]

[tr]
[td]表达式[/td]
[td]描述[/td]
[/tr]
[tr]
[td]x == y[/td]
[td]x等于y[/td]
[/tr]
[tr]
[td]x < y[/td]
[td]x小于y[/td]
[/tr]
[tr]
[td]x > y[/td]
[td]x大于y[/td]
[/tr]
[tr]
[td]x >= y[/td]
[td]x大于等于y[/td]
[/tr]
[tr]
[td]x  [1,[2,4,5]] # False

  
  布尔运算符
  常用的布尔运算符有:


  • and(&&)
  • or(||)
  • not(!)
  和在C#这些语言中不同,在Python中直接通过它们对应的单词使用,如:




1 age = 12
2
3 if age > 6 and age = 1
4 mylist.pop()
5 assert len(mylist) >= 1 '断言失败,程序终止运行'

  

5. 循环
  while循环中的表达式如果为True就会一直执行其后的语句块,如下打印0-100的值:




1 x = 0
2 while x  6 and age >> eval(raw_input("Enter an arithmetic expression: +"))
Enter an arithmetic expression: +16+16
32
>>>

  我们在程序中输入了:16+16的表达式,通过eval执行后返值:32
  为了提高程序的安全性,我们可以为exec语句和eval语句增加一点包装,将这些语句限制在特定的作用域中,如下:




1 scope = {}
2 exec 'sqrl = 6' in scope
3 print scope['sqrl'] # output: 6
4
5 scope = {}
6 scope['x'] = 2
7 scope['y'] = 3
8
9 print eval('x * y',scope) # output: 6

  
  警告

  在Python中使用exec执行Python代码字符串和通过eval语句计算Python表达式,这样的做法并不推荐,因为这样会有潜在的严重漏洞。 因为可能会有用户提供一些恶意的字符串作为代码或表达式来执行,这样程序会有潜在失去控制的危险。记住:在python中并没有任何执行不可信任代码的安全方式。

  

参考资料&进一步阅读
  Python基础教程(第二版)
  简明Python教程
  深入 Python :Dive Into Python 中文版
  Python 维基百科

运维网声明 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-58536-1-1.html 上篇帖子: Python中函数式编程 下篇帖子: 从C#到Python —— 4 类及面向对象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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