像其它语言一样,Python也有条件分支。

例如,输入用户年龄,可能需要判断是否成年,并做出不同反应。这就需要用到条件分支。

if条件分支

if条件分支的一般格式如下:

if condition:

  statements

它的含义是:如果condition为True,则执行statements。通常condition都是一个结果为bool的表达式(前面说过,bool类型在条件判断中很常用)。

例如,有一个表示年龄的变量age,需要通过它判断是否成年(age>=18)。如果成年,输出信息。

if age >= 18:
print('You\'re an adult.')

这里有一个小知识:对于'包裹的字符串,如果字符串里含有',为了让Python将'看作普通字符而不是字符串的结束标识,需要用\'。

要判断是否未成年也很简单,把条件age>=18改成age<18就可以了:

if age < 18:
print('You\'re a teenager.')

if else条件分支

还是上面的例子,可能你希望在age>=18时,输出一些信息,在age<18时,输出一些其它信息。你可能想这么做:

if age >= 18:
print('You\'re an adult.')
if age < 18:
print('You\'re a teenager.')

然而,Python(和其它编程语言)提供了更简洁的途径——if else条件分支。其格式如下:

if condition:

  statements1

else:

  statements2

if age >= 18:
print('You\'re an adult.')
else:
print('You\'re a teenager.')

if elif else条件分支

可能你还觉得不够,需要判断该年龄是成人、青少年还是儿童。你可能想,可以这样写:

if age >= 18:
print('You\'re an adult.')
else
if age >= 13:
print('You\'re a teenager.')
else:
print('You\'re a child.')

首先,如果age>=18为True,输出"You're an adult.";否则,如果age>=13为True,输出"You're a teenager";否则,输出"You're a child"。

但如果判断再多一些,缩进也会更多,就会很不美观。因此Python提供了if...elif...else...条件分支:

if age >= 18:
print('You\'re an adult.')
elif age >= 13:
print('You\'re a teenager.')
else:
print('You\'re a child.')

elif是else if的简写。注意这里的else是可选的。

如果还需要判断是否是婴儿呢?没关系,继续加elif:

if age >= 18:
print('You\'re an adult.')
else if age >= 13:
print('You\'re a teenager.')
else if age >= 3:
print('You\'re a child.')
else:
print('You\'re a baby.')

交互模式下的条件分支

如果你在交互模式下输入条件分支:

>>> age = 15
>>> if age >= 18:

现在按enter,你会发现命令提示符变了:

...

一般情况下,交互模式的提示符为>>>;如果出现代码块(例如if、if else、if elif else这些),提示符就会变为...。

在Python中,>>>被称为第一提示符(primary prompt),...被称为第二提示符(secondary prompt)。(注:中文是我自己翻译的)

注意在...后面打代码,需要至少一个空格的缩进(我习惯上打一个tab):

>>> if a == 0:
... print('zero')

如果像下面这样:

>>> if a == 0:
... print('zero')

就会有(类似)如下错误:

  File "<stdin>", line 2
print('zero')
^
IndentationError: expected an indented block

注意打elif和else时是不使用缩进的:

>>> if a != 0:
... print('non zero')
... else:
... print('zero')

要结束一个条件分支,直接在...后面按下enter就可以了:

>>> if a != 0:
... print('non zero')
...
>>>

注意第三行是个空行,第四行已经出了条件分支了。

注意

Python条件分支的条件也可以是非bool的类型。这种情况下,Python会将条件的值转换成bool类型。例如:

if a:
print('non zero')
else:
print('zero')

这里a会被转换成bool,如果a不为0,转换为True,否则为False。

小结

1. if条件分支:如果条件为True,则执行if后面的代码块,否则不执行。

2. if else条件分支:如果条件为True,则执行if后面的代码块,否则执行else后面的代码块。

3. if elif else条件分支:执行第一个为True的条件后面的代码块,如果没有为True则执行else后面的代码块(如果有)。

4. Python的两种提示符分别为>>>和...。

5. 在交互模式下,条件分支中的代码需要缩进,但if/elif/else不用。

Python教程(2.7)——条件分支的更多相关文章

  1. Python 工匠:编写条件分支代码的技巧

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 作者:朱雷 | 腾讯IEG高级工程师 『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』 ...

  2. 初学python(print使用、条件分支、循环、模块引用)

    import random """ #查看源代码日后爬虫用 import urllib.request # coding=utf-8 url = "http:/ ...

  3. Python 编程语言要掌握的技能之一:编写条件分支代码的技巧

    Python 里的分支代码 Python 支持最为常见的 if/else 条件分支语句,不过它缺少在其他编程语言中常见的 switch/case 语句. 除此之外,Python 还为 for/whil ...

  4. Python :编写条件分支代码的技巧

    『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也有 ...

  5. python学习笔记04-了解操作符与条件分支

    先来了解一下条件操作符: 运算符 描述 示例 == 检查两个操作数的值是否相等,如果是则条件变为真. 如a=3,b=3则(a == b) 为 true. != 检查两个操作数的值是否相等,如果值不相等 ...

  6. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  7. (原+转)简明 Python 教程:总结

     简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容 ...

  8. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  9. 从零开始学习PYTHON3讲义(七)条件分支和哥德巴赫猜想

    <从零开始PYTHON3>第七讲 人生是由无数个选择组成,每个选择都有不同的限定条件.现在来说人生有点早是吧:)不过事实的确是这样的. 程序也充满着选择,满足不同的条件,则运行不同的运算. ...

随机推荐

  1. 【zzulioj 2127】 tmk射气球

    比较简单的题,直接求空间中一个点到直线的距离而已,这道题说了直线和水平的平面 平行,我们可以先求投影到直线的距离,然后再算当前点到直线的距离. Description 有一天TMK在做一个飞艇环游世界 ...

  2. jmeter读取执行case插入DB生成报表和备份记录

    前言:由于通过jmeter写的接口自动化木有数据导入和统计分析功能,因此做了2次开发,目的是读取每条case获取接口名称和用例名称,通过获取的case执行结果进行计算,得到详细接口的用例通过率存入DB ...

  3. php7 redis扩展编译安装

    提示:php7版本不支持redis2点几的扩展 上正文: wget -c https://github.com/phpredis/phpredis/archive/php7.zip unzip php ...

  4. 解决md5不是windows平台FIPS验证的加密算法的一部分的怪异问题

    一. 发生问题 临近下班时间的下午,领导一句话:项目先上到测试服吧,我明早来看看. 我想项目还没做完,先上到测试服务器,简单看下应该是没什么问题,部署也只是一会儿的事嘛,随后把手头的项目编译,发布,拷 ...

  5. java spring mvc 全注解

    本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...

  6. 蓝桥杯-写日志-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  7. JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎

    上篇博客我们聊了<JavaEE开发之SpringBoot工程的创建.运行与配置>,从上篇博客的内容我们不难看出SpringBoot的便捷.本篇博客我们继续在上篇博客的基础上来看一下Spri ...

  8. javascript的面向对象详解

    每次说到javascript到面向对象,总感觉自己心里懂,但是却不知道该怎么说,这就是似懂非懂到表现,于是乎,每次一说,就要到处去查找资料,零零碎碎到看了一些,感觉有懂了,但是过段时间,好像又不知道是 ...

  9. 访问servlet的路径问题

    一.url-pattern的三种配置 在web.xml配置文件中配置有关Servlet的时候,<url-pattern>标签是用于配置当前Servlet拦截的路径,也就是说,客户端浏览器访 ...

  10. SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程

    在上一篇<Spring--Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)>中说到了Web应用中的IoC容器创建过程.这一篇主要讲Sprin ...