Python:关于if语句的学习

203 阅读4分钟

if语句

1.简单的if语句

最简单的if语句只有一个测试和一个操作。 假设有一个表示某人年龄的变量,而你想知道这个人是否够投票的年龄,可使用如下代码:

age = 19
if age >= 18:
    print("You are old enough to votel")

Python检查变量age的值是否大于或等于18;答案是肯定的,因此Python执行print语句:

You are old enough to votel

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

age = 19
if age >= 18:
    print("You are old enough to votel")
    print("Good!")

打印结果:

You are old enough to votel
Good!

2.if-else语句

在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else语句。

age = 17
if age >= 18:
    print("You are old enough to votel")
    print("Good!")
else:
    print("Sorry!")

如果if条件测试通过了,就执行第一个缩进的print语句块;如果测试结果为False,就执行else代码块。

输出结果为:
Sorry!

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

3.if-elif-else结构

检查超过两个的情形,为此可使用Python提供的if-elif-else结构。 Python只执行if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。 测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。 例如:

age= 12
if age < 4:
    print("免费")
elif age < 18:
    print("需支付5元")
else:
    print("需支付10元")

打印结果为:

需支付5元

为让代码更简洁,可以在其中设置价格,并在它后面添加一条简单的print语句:

age= 12
if age < 4:
    price = 0
elif age < 18:
    price = 5	
else:
    price = 10 
print("需支付:"+ str(price) + "元")

打印结果为:

需支付:5元

除效率更高外,这些修订后的代码还更容易修改:要调整输出消息的内容,只需修改一条而不是三条print语句。

4.使用多个elif代码块

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

age= 50
if age < 4:
    price = 0
elif age < 18:
    price = 5
elif age < 65:
    price = 10
else:
    price = 5 
print("需支付:"+ str(price) + "元")

打印结果为:

需支付:10元

5.省略else代码块

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

age= 12
if age < 4:
    price = 0
elif age < 18:
    price = 5
elif age < 65:
    price = 10
elif age >=65:
    price = 5 
print("需支付:"+ str(price) + "元")

经过这样的修改后,每个代码块都仅在通过了相应的测试时才会执行。

6.测试多个条件

有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含elif和else代码块的简单if语句。在可能有多个条件为True,且你需要在每个条件为True时都采取相应措施时,适合使用这种方法。 例如:

requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:
    print("Adding mushrooms." )
if 'pepperoni' in requested_toppings:
    print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:
    print("Adding extra cheese.")
print("Finished making your pizza!")

打印结果:

Adding mushrooms.
Adding extra cheese.
Finished making your pizza!

不管前两个测试的结果如何,都会执行这些代码。 每当这个程序运行时,都会进行这三个独立的测试。 在这个示例中,会检查每个条件,因此将在比萨中添加蘑菇并多加芝士。 如果像下面这样转而使用if-elif-else结构,代码将不能正确地运行,因为有一个测试通过后,就会跳过余下的测试:

requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:
    print("Adding mushrooms." )
elif 'pepperoni' in requested_toppings:
    print("Adding pepperoni.")
elif 'extra cheese' in requested_toppings:
    print("Adding extra cheese.")
print("Finished making your pizza!")

第一个测试检查列表中是否包含'mushrooms',它通过了,因此添加。然而,Python将跳过if-elif-else结构中余下的测试,不再检查列表中是否包含'extra cheese'和'pepperoni'。其结果是,直接跳转到最后的print语句输出。 如果你只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。