从零学Python之入门(五)缩进和选择


Posted in Python onMay 27, 2014

缩进

Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件,如果条件成立,则执行归属于if的一个代码块。

先看C语言的表达方式(注意,这是C,不是Python!)

if ( i > 0 )
{
    x = 1;
    y = 2;
}

如果i > 0的话,我们将进行括号中所包括的两个赋值操作。括号中包含的就是块操作,它隶属于if。

在Python中,同样的目的,这段话是这样的

if i > 0:
    x = 1
    y = 2

在Python中, 去掉了i > 0周围的括号,去除了每个语句句尾的分号,表示块的花括号也消失了。

多出来了if ...之后的:(冒号), 还有就是x = 1 和 y =2前面有四个空格的缩进。通过缩进,Python识别出这两个语句是隶属于if。

Python这样设计的理由纯粹是为了程序好看。

if语句

写一个完整的程序,命名为ifDemo.py。这个程序用于实现if结构。

i = 1
x = 1
if i > 0:
    x = x+1
print x

$python ifDemo.py  # 运行

程序运行到if的时候,条件为True,因此执行x = x+1,。

print x语句没有缩进,那么就是if之外。

如果将第一句改成i = -1,那么if遇到假值 (False), x = x+1隶属于if, 这一句跳过。 print x没有缩进,是if之外,不跳过,继续执行。

这种以四个空格的缩进来表示隶属关系的书写方式,以后还会看到。强制缩进增强了程序的可读性。

复杂一些的if选择:

i = 1
if i > 0:
    print 'positive i'
    i = i + 1
elif i == 0:
    print 'i is 0'
    i = i * 10
else:
    print 'negative i'
    i = i - 1
print 'new i:',i

这里有三个块,分别属于if, elif, else引领。
Python检测条件,如果发现if的条件为假,那么跳过后面紧跟的块,检测下一个elif的条件; 如果还是假,那么执行else块。
通过上面的结构将程序分出三个分支。程序根据条件,只执行三个分支中的一个。

整个if可以放在另一个if语句中,也就是if结构的嵌套使用:

i  = 5
if i > 1:
    print 'i bigger than 1'
    print 'good'
    if i > 2:
        print 'i bigger than 2'
        print 'even better'

if i > 2 后面的块相对于该if缩进了四个空格,以表明其隶属于该if,而不是外层的if。

总结

if语句之后的冒号

以四个空格的缩进来表示隶属关系, Python中不能随意缩进

if  <条件1>:
    statement
elif <条件2>:
    statement
elif <条件3>:
    statement
else:
    statement
Python 相关文章推荐
python实现的阳历转阴历(农历)算法
Apr 25 Python
Python全局变量用法实例分析
Jul 19 Python
django开发教程之利用缓存文件进行页面缓存的方法
Nov 10 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
python drf各类组件的用法和作用
Jan 12 Python
详解Python openpyxl库的基本应用
Feb 26 Python
从零学Python之入门(四)运算
May 27 #Python
一则python3的简单爬虫代码
May 26 #Python
从零学Python之入门(三)序列
May 25 #Python
从零学Python之入门(二)基本数据类型
May 25 #Python
Python tempfile模块学习笔记(临时文件)
May 25 #Python
Python logging模块学习笔记
May 24 #Python
Python学习笔记之常用函数及说明
May 23 #Python
You might like
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php的hash算法介绍
2014/02/13 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
JS实现简易计算器
2020/02/14 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python中的元组介绍
2019/01/28 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
药物学专业学生的自我评价
2013/10/27 职场文书
安全生产实施方案
2014/02/23 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
回复函格式及范文
2015/07/14 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技