python输出语句print_if语句(三)

4. if语句

4.1 简单if语句

之前的实例中所有if语句可以概括为以下这种形式:


if conditional_test:

    do something


也就是当if后的条件通过测试时,会接着执行下一行缩进的代码。具体的实例可以参考前几节中的内容。

4.2 if-else语句

我们经常需要在条件测试通过时执行一项操作,并在没有通过时执行另一项操作,这种情况下可使用Python提供的if-else语句。if-else语句类似于简单if语句,其中的区别在于当测试条件未通过会执行else后缩进的语句。我们通过实例直观的了解这种语句:


age = 17
if age >= 18:
    print("You are old enough to vote!")
    print("Have you registered to vote yet?")
else:
    print("Sorry, you are too young to vote.")
    print("Please register as soon as you turn 18!")


输出结果为:


Sorry, you are too young to vote.

Please register as soon as you turn 18!


通过上述实例可以看出,当if后的测试条件不能通过时,Python会忽略if下缩进的语句,接着会直接执行else下缩进的语句,这在很多情况下是非常实用的,在同时存在两种可能结果的情景下你可以很轻松的处理。

4.3 if-elif-else结构

当需要检查超过两个的情景时,可以使用Python提供的if-elif-else结构。Python只执行if-elif-else结构中的一个代码块,它依次检查每个测试条件,直到遇到了通过了的条件测试。测试通过后,Python将执行紧接在它后面的代码,并跳过余下的测试。

例如,游乐场的收费按照年龄分段如下:

(1)4岁以下免费;

(2)4~18岁收费5美元

(3)18岁(含)以上收费10美元

我们用以下程序实现收费过程:

amusement_park.py


age = 12

①if age < 4:

    print("Your admission cost is $0.")

②elif age < 18:

    print("Your admission cost is $5.")

③else:

    print("Your admission cost is $10.")


①处首先检查一个人的年龄是否不满4岁,如果是,Python会打印出下一行缩进的语句,如果不是则继续检查下一个条件。②处在这个人年龄不小于4岁的基础上检查他(她)年龄是否小于18岁,显然这是成立的,因此Python直接执行elif下缩进的语句。当上一代码块成功执行以后,Python会直接跳过下一代码块,不会检查或者执行else后的条件和缩进代码。最终,输出结果为:


Your admission cost is $5.


4.4 使用多个elif代码块

可以根据需要使用任意数量的elif代码块,例如我们在上面三种情形之后再加入第四种情形:假设上述游乐场要给老年人打折,可以再添一个测试条件,判断顾客年龄是否大于65岁(含),是则符合半价打折优惠的条件。


age = 66

if age < 4:

    print("Your admission cost is $0.")

elif age < 18:

    print("Your admission cost is $5.")

①elif age < 65:

    print("Your admission cost is $10.")

②else: 

    print("Your admission cost is $5.")


①处判断一个人年龄是否在18~64岁之间,②处表示当前面三个条件都不满足,也就是顾客年龄不小于65岁时执行其后缩进的语句。

最后的输出结果为:


Your admission cost is $5.


可以看出当情况比较复杂、同时存在多个可能的结果时,使用多个elif代码块是非常非常方便的,只要灵活运用就可以极大的提高效率。

4.5 省略else代码块

Python中并不要求if-else结构中必须有else代码块,有时候使用一条elif语句代替else语句会使程序更加明了。也就是说4.4节中的程序可以改为这样一种只包含if语句和elif语句的形式:


age = 66

if age < 4:

    print("Your admission cost is $0.")

elif age < 18:

    print("Your admission cost is $5.")

elif age < 65:

    print("Your admission cost is $10.")

①elif age >= 65:

    print("Your admission cost is $5.")


①处的elif代码块在顾客年龄不低于65岁时输出门票价格为5美元,这比起直接使用else语句更加清晰。else语句的范围是非常广的,只要不满足前面所有测试条件时就会执行else下缩进的代码,这种特性使得使用else语句会减少一些繁琐的分类过程,但是它的弊端也是很明显的,例如用户的输入是无意义的字符甚至是恶意的数据,就很容易触发else语句的通过条件,从而造成一些不必要错误甚至损失。如果使用elif语句就会很清晰的为不同的输入规划相应的范围,这样不仅减少了错误发生的概率,阅读程序时也会更加方便直观。

4.6 测试多个条件

上面我们详细分析了if-elif-else结构,对于一个特定条件它可以高效的分析并执行相应的操作,但是这也存在一个弊端,那就是当一个测试条件通过时,Python会直接跳过余下的测试。当我们需要测试多个条件,并在每个条件为True时采取相应的措施,应该如何去做呢?

其实方法很简单,就是使用一系列if语句。例如,顾客在披萨店点了一些配料,每当配料存在于菜单中时就输出一条语句:

toppings.py


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("\nFinished making your pizza!")


我们创建了一个披萨店菜单的列表,使用了三个if语句检查顾客所点的配料是否在菜单之中,是则输出相应的语句。这是一个很简单的程序,这个程序中会检查每一个测试条件,并在条件满足以后做出不同的操作,输出结果为:


Adding mushrooms.

Adding extra cheese.

Finished making your pizza!


当我们把三个if语句改为if-elif-else结构以后,程序如下:


requested_toppings = ['mushrooms', 'extra cheese']

if 'mushrooms' in requested_toppings:

    print("Adding mushrooms.")

elif 'pepperoni' in requested_toppings:

    print("Adding pepperoni.")

else 'extra cheese' in requested_toppings:

    print("Adding extra cheese.")

print("\nFinished making your pizza!")


这时任何一个测试条件满足时其他代码块都会被直接忽略,输出结果如下所示:


Adding mushrooms.

Finished making your pizza!


总而言之,如果你只想执行一个代码块,就使用if-elif-else结构;当多个测试条件是并列关系时,需要根据情况执行多个代码块,就使用一系列独立的if语句。

在本节中使用多种不同结构灵活解决问题,你是否感受到Python独特的逻辑魅力了呢?

我们下次再见,拜拜~

aec74df45c004c24892ef5c08e0bad27.gif

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值