Python:08、条件判断

条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。

elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>

 

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:

age = 20

if age >= 18: print('your age is', age) print('adult')

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了:

age = 3

if age >= 18: print('your age is', age) print('adult') else: print('your age is', age) print('teenager')

注意不要少写了冒号:。

当然上面的判断是很粗略的,完全可以用elif做更细致的判断:

age = 3

if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')

 

if判断条件还可以简写,比如写:

if x: print('True')

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

 

input陷阱

最后看一个有问题的条件判断。很多同学会用input()读取用户的输入,这样可以自己输入,程序运行得更有意思:

birth = input('birth: ') if birth < 2000: print('00前') else: print('00后')

输入1982,结果报错:

 

这是因为input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情:

s = input('birth: ') birth = int(s) if birth < 2000: print('00前') else: print('00后')

再次运行,就可以得到正确地结果。但是,如果输入abc呢?又会得到一个错误信息:

Traceback (most recent calllast): File "<stdin>", line 1, in <module> ValueError: invalid literal forint() with base 10: 'abc'

原来int()函数发现一个字符串并不是合法的数字时就会报错,程序就退出了。

如何检查并捕获程序运行期的错误呢?后面的错误和调试会讲到。

 

常用的数据类型转换

函数

说明

int(x [,base ])

将x转换为一个整数

long(x [,base ])

将x转换为一个长整数

float(x )

将x转换到一个浮点数

complex(real [,imag ])

创建一个复数

str(x )

将对象 x 转换为字符串

repr(x )

将对象 x 转换为表达式字符串

eval(str )

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s )

将序列 s 转换为一个元组

list(s )

将序列 s 转换为一个列表

chr(x )

将一个整数转换为一个字符

unichr(x )

将一个整数转换为Unicode字符

ord(x )

将一个字符转换为它的整数值

hex(x )

将一个整数转换为一个十六进制字符串

oct(x )

将一个整数转换为一个八进制字符串

if嵌套的格式

if 条件1: 满足条件1 做的事情1 满足条件1 做的事情2 ...(省略)... if 条件2: 满足条件2 做的事情1 满足条件2 做的事情2 ...(省略)...

  • 说明
    • 外层的if判断,也可以是if-else
    • 内层的if判断,也可以是if-else
    • 根据实际开发的情况,进行选择

 

比较(即关系)运算符

python中的比较运算符如下表

运算符

描述

示例

==

检查两个操作数的值是否相等,如果是则条件变为真。

如a=3,b=3则(a == b) 为 true.

!=

检查两个操作数的值是否相等,如果值不相等,则条件变为真。

如a=1,b=3则(a != b) 为 true.

<>

检查两个操作数的值是否相等,如果值不相等,则条件变为真。

如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符

>

检查左操作数的值是否大于右操作数的值,如果是,则条件成立。

如a=7,b=3则(a > b) 为 true.

<

检查左操作数的值是否小于右操作数的值,如果是,则条件成立。

如a=7,b=3则(a < b) 为 false.

>=

检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。

如a=3,b=3则(a >= b) 为 true.

<=

检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。

如a=3,b=3则(a <= b) 为 true.

逻辑运算符

运算符

逻辑表达式

描述

实例

and 

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

(a and b) 返回 20。

or

x or y

布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。

(a or b) 返回 10。

not

not x

布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

not(a and b) 返回 False

特殊的真和假

真和假

0

非0

“”

None

[]

()

{}

练习

 

1、要求:从键盘输入刀子的长度,如果刀子长度没有超过10cm,则允许上火车,否则不允许上火车

2、小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:

  • 低于18.5:过轻
  • 18.5-25:正常
  • 25-28:过重
  • 28-32:肥胖
  • 高于32:严重肥胖

用if-elif判断并打印结果:

 

3、

情节描述:上公交车,并且可以有座位坐下

要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果空座位的数量大于0,就可以坐下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值