Python学习(四)if语句

if语句

编程时经常需要检查一系列的条件,并据此决定采取什么措施。在python中,if语句让能够检查程序的当前状态,并据此采取相应的措施。

1.一个简单的示例

fruits = ["apple","banana","pear"]
for fruit in fruits:
    if fruit == "apple":
        print (fruit.upper())
    else:
        print (fruit.title())

结果

APPLE
Banana
Pear

在这个示例中循环检查当前的水果名称是否是"apple",如果是,就以全大写的方式打印它。否则就以首字母大写的方式打印。

2.条件测试

每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码。如果为False,Python就忽略这些代码。

2.1 检查是否相等

大多数条件测试都将一个变量的当前值同特定的值进行比较。最简单的条件测试检查变量的值是否与特定的值相等。

fruit = "apple"
print (fruit == "apple")

结果

True

使用两个等号(==)检查fruit的值是否为"apple"。这个相等运算符在它两边的值相等时返回True,否则返回False。

一个等号是陈述,两个等号是发问。大多数编程语言使用等号的方式大都如此。

2.2 检查是否相等时不考虑大小写

在Python中检查是否相等时区分大小写。

fruit = "apple"
print (fruit == "Apple")

结果

False

如果大小写很重要,这种行为是有优点的。但是如果大小写无关紧要,而只是想检查变量的值,可将变量的值转换为小写,再进行比较。

fruit = "Apple"
print (fruit.lower() == "apple")

结果

True

在今后的编程中,对变量的转换为大写或者小写转换之后进行比较。用到的是非常多的。

2.3 检查是否不相等

要判断两个值是否不相等,可结合使用叹号和等号(!=),其中叹号表示不,在很多编程语言中都是如此。

fruit = "Apple"
print (fruit.lower() != "apple")

结果

False

编写的大多数条件表达式都检查两个值是否相等,但有时候检查两个值是否不相等的效率更高。

2.4 比较数字

检查数值是非常简单的。

age = 16
print (age == 16)

结果

True

条件语句中可包含各种数学比较,比如大于,大于等于,小于,小于等于

age = 16
print (age > 16)
print (age >= 16)
print (age < 16)
print (age <= 16)

结果

False
True
False
True

在if语句中可使用各种数字进行比较。

2.5 检查多个条件

同时检查多个条件,有时候需要在两个条件都为True时才执行相应的操作,有时候只要求一个条件为True时就执行相应的操作。关键字and和or可以实现这一功能。

2.5.1 使用and检查多个条件
age = 16
name = "dana"
print (age > 20 and name == "dana")

结果

False

可以看到,第一个判断的位置是不满足的,第二个条件是满足的。and连接的两个判断,只有两个判断都满足整个表达式才会返回True。

2.5.2 使用or检查多个条件
age = 16
name = "dana"
print (age > 20 or name == "dana")

结果

True

or其中一个条件满足了,整个表达式就返回了true。

为了改善可读性,可将每个条件都分别放在一对括号内,但并非必须要这样做。

age = 16
name = "dana"
print ((age > 20) or (name == "dana"))
2.5.3 检查特定值是否包含在列表中

有时候,执行操作前必须检查列表是否包含特定的值。

要判断特定的值是否已包含在列表中,可使用关键字in。

fruits = ["apple","banana","pear"]
print ("apple" in fruits)
print ("strawberry" in fruits)

结果

True
False

这很有用,它让能够在创建一个列表后,轻松的检查其中是否包含特定的值。

2.5.4 布尔表达式

布尔表达式,它不过是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为True,要么为False。

布尔值通常用于记录条件

active = True

在跟踪程序状态或者程序中重要的条件方面,布尔值提供了一种高效的方式。

3.if语句

if语句有很多种,选择哪种取决于要测试的条件数。

3.1 简单的if语句
if conditional:
  do something

在第一行代码中,可以包含任何条件测试,在紧跟在条件语句后面的夺金代码块中,可执行任何操作。如果条件为True,Python就会执行紧跟在if语句后面的代码。否则Python将忽略这些代码。

age = 18
if age >= 18:
    print ("You are an adult")

结果

You are an adult

在if语句中,缩进的作用与for循环中相同。如果通过了,将执行if语句后面所有缩进的代码行,否则将忽略它们。

3.2 if-else语句

经常需要在条件通过时执行一个操作,并在没有通过的时候执行另一种操作。在这种情况下,可使用Python中的if-else语句。if-else语句块类似简单的if语句,但其中的else的语句能够指定条件未通过时要执行的操作。

age = 16
if age >= 18:
    print ("You are an adult")
else:
    print ("You are not an adult")

结果

You are not an adult

if-else结构非常适合用于让Python执行两种操作之一的情景。在这种简单的if-else结构中,总会执行两个操作中的一种。

3.3 if-elif-else结构

经常需要判断超过两种情形,Python提供了if-elif-else结构。Python只执行if-elif-else结构中的代码块,它依次判定每一个条件,直到通过了的条件。条件通过后,Python将执行紧跟在它后面的代码,并跳过余下的条件。

score = 400
if score >= 500:
    print ("You have passed the undergraduate line")
elif 500 > score >= 300:
    print ("You have passed the undergraduate line but not the specialist line")
else:
    print ("You didn't cross the specialty line")

结果

You have passed the undergraduate line but not the specialist line
3.4 使用多个elif代码块

可根据需要使用任意数量的elif代码块。

score = 299
if score >= 500:
    print ("You have passed the undergraduate line")
elif 500 > score >= 300:
    print ("You have passed the undergraduate line but not the specialist line")
elif 300 > score >= 100:
    print ("You are admitted to the junior college")
else:
    print ("You are not admitted")

结果

You are admitted to the junior college
3.5 省略else代码块

Python并不要求if-elif结构后面必须有else代码块。在有些情况下,else代码块很有用。而在其它一些情况下,使用一条elif语句来处理特定的情形会更清晰。

age = 16
if age <= 18:
    print ("You are a minor")
elif age > 60:
    print ("You are an old man")

结果

You are a minor

else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果最终要测试的条件,应该考虑使用一个elif代码块来代替else代码块。

3.6 测试多个条件

If-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况

有时候必须检查关心的所有条件。在这种情况下,应使用一系列不包含elif和else代码块的简单if语句。

fruit = ["apple","pear"]
if "apple" in fruit:
    print ("I like apple")
if "banana" in fruit:
    print ("I like banana")
if "pear" in fruit:
    print ("I like pear")

结果

I like apple
I like pear
fruit = ["apple","pear"]
if "apple" in fruit:
    print ("I like apple")
elif "banana" in fruit:
    print ("I like banana")
elif "pear" in fruit:
    print ("I like pear")

结果

I like apple

总之,如果想执行一个代码块,就使用if-elif-else结构。如果要运行多个代码块,就使用一系列独立的if语句。

4.使用if语句处理列表

结合使用if语句和列表。

4.1 检查特殊元素
fruits = ["apple","pear","banana"]
for fruit in fruits:
    if fruit == "apple":
        print ("I don't like apple")
    else:
        print ("I like " + fruit)

结果

I don't like apple
I like pear
I like banana
4.2 确定列表不是空的

在之前处理列表的时候都作了一个假设,那就是列表里面都是有元素的。现在假设列表是空的,没有任何一个元素,要循环处理列表中的数据,先判定列表中是否有元素是很重要的。因为在可能的情况下,为空要做一些其他的事情。

fruits = []
if fruits:
    print ("The list is not empty")
else:
    print ("The list is empty")

结果

The list is empty

Python将在列表至少包含一个元素的时候返回True,并在列表为空的时候返回False。

4.3 使用多个列表
fruits = ['apple', 'banana', 'pear', 'strawberry']
like_fruits = ['apple', 'banana']
for fruit in fruits:
    if fruit in like_fruits:
        print ("I like " + fruit)
    else:
        print ("I don't like " + fruit)

结果

I like apple
I like banana
I don't like pear
I don't like strawberry

可以看到,可以高效的打印出我喜欢的水果和不喜欢的水果。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值