python if条件判断语句
if的基本格式
if语句用来做判断,并选择要执行的语句分支。基本格式如下:
if CONDITION1:
code_block(1)
elif CONDITION2:
code_block(2)
elif CONDITION3:
...
...
else:
code_block_else
其中elif是可选的,可以有任意多个,else是可选的,表示全都不满足条件时该执行的分支。
例如:
a = 4
if a > 3:
print("hello world")
条件表达式Condition部分以运算结果的True、False为if的分支执行依据。在Python中所有数据对象要么是True,要么是False,所以任何一个数据、表达式都可以作为if的Condition。例如:
if 1:
...
if a > b:
...
if 'a':
...
if []:
...
if [[]]:
...
if a and b:
...
至于如何判断True、False,参见布尔值和逻辑运算。
switch/case的替代方案
在python中并没有switch和case的分支选择语句,但是使用if或dict也能轻松实现。
例如,使用dict实现等值的分支选择:
D = {
"apple": 8.0,
"pear": 3.5,
"orange": 2.5,
"banana": 2.5
}
fruit = "banana"
print(D[fruit])
上面没有提供default情况时的分支,但使用get()可以设置dict中找不到key时默认返回的值。例如:
print(D.get("greens","no this fruit"))
还可以通过in的成员测试来设置分支:
if fruit in D:
print(D[fruit])
else:
print("no this fruit")
dict只能做等值比较的分支选择,要提供非等值的分支比较,只能用if语句。
例如:
score = 77
if score >= 90:
print("优秀")
elif 70 <= score < 90:
print("良好")
elif 60 <= score < 70:
print("及格")
else:
print("不及格")
使用if的好处是通俗易懂,使用dict的好处是将数据存储到数据结构中,而存储到数据结构中的数据可以是很复杂的。比如,将函数作为dict的value。
if/else三元表达式
即所谓的三目运算,只不过python中不支持x ? y : z
的方式,而是使用if的另一种表达式语法。
对于if x: xxx; else yyy
这样的两分支语句,可以使用更精简的表达式方式来描述:
xxx if x else yyy
虽然看上去和原始的没什么区别,但很多时候要方便的多。例如赋值:
if x:
a = y
else:
a = z
等价的三元if写法:
a = y if x else z
注意,上面"="表示这整行是一个赋值语句,右边的是评估对象,评估之后赋值给a,也就是等价于a = (y if x else z)
,而不是等价于(a = y) if x else z
。
else不能缺少,否则不是三元运算。另外,if的分支代码体y和z都必须只能是单条语句,不能是多语句。也就是说,不能转换下面的代码格式为三元表达式。
if x:
statement1
statement2
else:
statement3
statement4
实际上,三元运算也能使用and / or来实现,还能使用序列 + bool()
来实现。
例如:
a = ((x and y) or z)
一般比较少用and/or来实现分支,因为可读性不好,而且并不总是能和if等价。但有一种情况使用and/or非常方便:从多个值中选择一个真值。例如:
a = x or y or z or None
下面是使用序列 + bool()
的方式实现的三元运算操作,思路是bool(CONDITION)
作为序列的索引。
a = [y, z][bool(x)]
还是那句话,python中基本总是首选简单的、通俗易懂的方式。所以,用if吧。
python if条件判断语句的更多相关文章
- Python的条件判断语句------if/else语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... Python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...
- python最简洁的条件判断语句写法
这篇文章主要介绍了Python返回真假值(True or False)小技巧,本文探讨的是最简洁的条件判断语句写法,本文给出了两种简洁写法,需要的朋友可以参考下 如下一段代码: def isLen(s ...
- [19/09/16-星期一] Python的运算符和条件判断语句
一.运算符 (1)算术运算符 + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作) a = 10 + 5 计算 a = 'hello' + ' ' + 'world' 拼串 - ...
- python学习_条件判断语句_if
#条件判断语句(if)#语法:if条件表达式:语句# 代码块#执行流程:if语句在执行时,会先对条件表达式进行求值判断#如果为True,则执行if后面的语句#如果为False,则不执行#默认情况下,i ...
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- Python基础——条件判断
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 到目前为止,Python基础系列的文章中的程序都是一条一条语句顺序执行的.在本章中,我会重点介绍让程序选择是否执行语 ...
- Python之条件判断和循环(入门4)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407755.html 本文出自:[Edwin博客园] Python之条件判断和循环 1. Python之if ...
- Python之条件判断
Python之条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age ...
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
题目描述: 求 1+2+...+n, 要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). 分析: 首先想到的是写递归函数,但是遇 ...
随机推荐
- 为创世纪图书馆(Library Genesis)作镜像
简介 Library Genesis的Wikipedia条目中的介绍是: Library Genesis or LibGen is a search engine for articles and b ...
- 【repost】javascript callback
在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...
- IDEA教程
IDE-Intellij IDEA 之前同事一直给我推荐IDEA,说跟eclipse相比就是石器时代的工具,我一直任何一个工具熟练起来都很牛逼,所以一直坚持使用eclipse,不过看了下IDEA的功能 ...
- Py福利,基于uiautomatorviewer 的Python 自动化代码自动生成工具分享(jar已发布GitHub,欢迎Star)
前言做UI自动化无论你用SDK自带的uiautomatorviewer还是Macaca还是Appium自动的inspector,代码最多的就是那些繁琐重复的找元素后点击,输入,长按.....等.现在偷 ...
- ESP32随笔汇总
版权声明:本文为博主原创文章,未经博主本人不得转载.联系邮箱:mynoticeable@gmail.com 1.ubuntu 14.04下搭建esp32开发环境 2.UBUNTU14.0.4安装ecl ...
- 31.Stack
在Java中Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的.每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出,如下: Stack通过 ...
- JS中创建多个相同的变量出现的问题
在做轮播图的时候出现了一个问题:如果定义两个完全相同的变量会发生什么: 1.两个全局变量: var num = 10; var num =100; 这种情况下很明显输出num的话会是100,但是内存中 ...
- eclipse 导入包含子maven项目的maven项目时的正确方式(父子项目)
eclipse 导入包含子maven项目的maven项目时的正确方式(父子项目) NO1 导入时依次选择 import > Maven > Existing Maven Projects ...
- 写在HTTP协议之前
1.网络模型 OSI模型即:开放系统互连参考模型(Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参 ...
- 升讯威微信营销系统开发实践:所见即所得的微官网( 完整开源于 Github)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...