从零学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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
python实现简易云音乐播放器
Jan 04 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
python excel转换csv代码实例
Aug 26 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
python相对企业语言优势在哪
Jun 12 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
杏林同学录(四)
2006/10/09 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP的PDO连接讲解
2019/01/24 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python抓取网页中的图片示例
2014/02/28 Python
详解Python中的__init__和__new__
2014/03/12 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python出现segfault错误解决方法
2016/04/16 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Django如何自定义分页
2018/09/25 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
python基础梳理(一)(推荐)
2019/04/06 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
采购内勤岗位职责
2013/12/10 职场文书
给领导的致歉信范文
2014/01/13 职场文书
活动新闻稿范文
2015/07/17 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Redis高并发缓存架构性能优化
2022/05/15 Redis