IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 5-if语句(选择结构) -> 正文阅读

[Python知识库]5-if语句(选择结构)

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

5.1 一个简单示例

对于大多数汽车,应以首字母大写的方式打印其名称,但对于汽车名'bmw',应以全大写的方式打印。

cars = ['audi', 'bmw', 'subaru', 'toyota']

for car in cars:
    if car == 'bmw':
        print(car.upper())
    else:
        print(car.title())

5.2 条件测试(即条件表达式)

每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。

5.2.1 检查是否相等

使用相等运算符(==)

5.2.2 检查是否相等时忽略大小写

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

如果大小写无关紧要,只想检查变量的值,可将变量的值转换为小写,再进行比较:

car='Audi'
print(car.lower()=='audi')
print(car)

结果:

True
Audi?

函数lower()不会修改最初赋给变量car的值。

5.2.3 检查是否不相等

要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不。

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

5.2.4 数值比较

检查数值非常简单,可以判断相等、不等。

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

5.2.5 检查多个条件

使用and检查多个条件:条件测试都为Ture,整个表达式为True,否则为False。

age1=20
age2=30
print(age1>18 and age2<40)

为改善可读性,可将每个测试分别放在一对圆括号内。?

使用or检查多个条件:?只要有一个条件测试为True时,结果为True,只有都为False,结果才为False。

5.2.6 检查特定值是否包含在列表中

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

usernames = ['xiaowang','dawang','zhubajie']
print('dawang' in usernames)

5.2.7 检查特定值是否不包含在列表中

使用关键字not in。

banned_users = ['andrew', 'carolina', 'david']
user = 'marie'

if user not in banned_users:
    print(f"{user.title()}, you can post a response if you wish.")

5.2.8 布尔表达式

条件测试的别名。

布尔值通常用于记录条件,如游戏是否正在运行,或者用户是否可以编辑网站的特定内容。

动手试一试

练习5-1:条件测试

编写一系列条件测试,将每个测试以及对其结果的预测和实际结果打印出来。你编写的代码应类似于下面这样:▲ 详细研究实际结果,直到你明白它为何为True或False。

▲ 创建至少10个测试,且其中结果分别为True和False的测试都至少有5个。

?练习5-2:更多条件测试

你并非只能创建10个测试。如果想尝试做更多比较,可再编写一些测试,并将它们加入conditional_tests.py中。对于下面列出的各种情况,至少编写两个结果分别为True和False的测试。

▲ 检查两个字符串相等和不等。

▲ 使用方法lower()的测试。

▲ 涉及相等、不等、大于、小于、大于等于和小于等于的数值测试。

▲ 使用关键字and和or的测试。

▲ 测试特定的值是否包含在列表中。

▲ 测试特定的值是否未包含在列表中。

5.3 if语句

5.3.1 简单的if语句

最简单的if语句只有一个测试和一个操作:

if conditional_test:
    do something

5.3.2 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 to vote as soon as you turn 18!")

if-else结构非常适合用于让Python执行两种操作之一的情形。?

5.3.3 if-elif-else结构

Python只执行if-elif-else结构中的一个代码块。

age = 12

if age < 4:
    price = 0
elif age < 18:
    price = 25
else:
    price = 40

print(f"Your admission cost is ${price}.")

5.3.4 使用多个elif代码块

age = 12

if age < 4:
    price = 0
elif age < 18:
    price = 25
elif age < 65:
    price = 40
else:
    price = 20

print(f"Your admission cost is ${price}.")

5.3.5 省略else代码块

Python并不要求if-elif结构后面必须有else代码块。

age = 12

if age < 4:
    price = 0
elif age < 18:
    price = 25
elif age < 65:
    price = 40
elif age >= 65:
    price = 20

print(f"Your admission cost is ${price}.")

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

如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。

5.3.6 测试每个条件

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

例如:店家提供了一系列披萨配料,每种配料都要去测试下,是否是顾客要求添加的:

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

if 'mushrooms' in requested_toppings:
    print('Adding mushrooms')
if 'french fries' in requested_toppings:
    print('Adding french fries')
if 'extra cheese' in requested_toppings:
    print('Adding extra cheese')

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

动手试一试

练习5-3:外星人颜色

假设在游戏中刚射杀了一个外星人,请创建一个名为alien_color的变量,并将其赋值为'green'、'yellow'或'red'。▲ 编写一条if语句,检查外星人是否是绿色的。如果是,就打印一条消息,指出玩家获得了5分。▲ 编写这个程序的两个版本,在一个版本中上述测试通过了,而在另一个版本中未通过(未通过测试时没有输出)。

练习5-4:外星人颜色2

像练习5-3那样设置外星人的颜色,并编写一个if-else结构。▲ 如果外星人是绿色的,就打印一条消息,指出玩家因射杀该外星人获得了5分。▲ 如果外星人不是绿色的,就打印一条消息,指出玩家获得了10分。▲ 编写这个程序的两个版本,在一个版本中执行if代码块,在另一个版本中执行else代码块。

练习5-5:外星人颜色3

将练习5-4中的if-else结构改为if-elif-else结构。▲ 如果外星人是绿色的,就打印一条消息,指出玩家获得了5分。▲ 如果外星人是黄色的,就打印一条消息,指出玩家获得了10分。▲ 如果外星人是红色的,就打印一条消息,指出玩家获得了15分。▲ 编写这个程序的三个版本,分别在外星人为绿色、黄色和红色时打印一条消息。

练习5-6:人生的不同阶段

设置变量age的值,再编写一个if-elif-else结构,根据age的值判断一个人处于人生的哪个阶段。▲ 如果年龄小于2岁,就打印一条消息,指出这个人是婴儿。▲ 如果年龄为2(含)~4岁,就打印一条消息,指出这个人是幼儿。▲ 如果年龄为4(含)~13岁,就打印一条消息,指出这个人是儿童。▲ 如果年龄为13(含)~20岁,就打印一条消息,指出这个人是青少年。▲ 如果年龄为20(含)~65岁,就打印一条消息,指出这个人是成年人。▲ 如果年龄超过65岁(含),就打印一条消息,指出这个人是老年人。

练习5-7:喜欢的水果

创建一个列表,其中包含你喜欢的水果,再编写一系列独立的if语句,检查列表中是否包含特定的水果。▲ 将该列表命名为favorite_fruits,并在其中包含三种水果。编写5条if语句,每条都检查某种水果是否包含在列表中。如果是,就打印一条消息,下面是一个例子。You really like bananas!

5.4 使用if语句处理列表

5.4.1 检查特殊元素

按前面一个示例的需求,我们只需要这样做,就能打印出顾客想要添加的披萨:

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

for requested_topping in requested_toppings:     
        print(f"Adding {requested_topping}.")

但假如french fries没有了,我们就要检查这个特殊配料,做单独处理:

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

for requested_topping in requested_toppings:
    if requested_topping == 'french fries':
        print(f"Sorry, we don't have {requested_topping}.")
    else:       
        print(f"Adding {requested_topping}.")
        
print("\nFinished making your pizza!")

5.4.2 确定列表不是空的

在if语句中将列表名用作条件表达式时,Python将在列表至少包含一个元素时返回True,并在列表为空时返回False。

requested_toppings = []

if requested_toppings:
    for requested_topping in requested_toppings:     
        print(f"Adding {requested_topping}.")
else:
    print('是否需要原味披萨?')

5.4.3 使用多个列表

打印店家不能提供给顾客要求的配料,同时打印出能提供顾客要求的配料:

available_toppings = ['mushrooms', 'olives', 'green peppers',
                      'pepperoni', 'pineapple', 'extra cheese']

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


for requested_topping in requested_toppings:
    if requested_topping in available_toppings:
        print(f"Adding {requested_topping}.")
    else:
        print(f"Sorry, we don't have {requested_topping}.")

动手试一试

练习5-8:以特殊方式跟管理员打招呼

创建一个至少包含5个用户名的列表,且其中一个用户名为'admin'。想象你要编写代码,在每位用户登录网站后都打印一条问候消息。遍历用户名列表,并向每位用户打印一条问候消息。如果用户名为'admin',就打印一条特殊的问候消息,如下所示。Hello admin, would you like to see a status report?否则,打印一条普通的问候消息,如下所示。Hello Jaden, thank you for logging in again.?

练习5-9:处理没有用户的情形

在为完成练习5-8编写的程序中,添加一条if语句,检查用户名列表是否为空。如果为空,就打印如下消息。We need to find some users!删除列表中的所有用户名,确定将打印正确的消息。?

练习5-10:检查用户名

按下面的说明编写一个程序,模拟网站如何确保每位用户的用户名都独一无二。▲ 创建一个至少包含5个用户名的列表,并将其命名为current_users。▲ 再创建一个包含5个用户名的列表,将其命名为new_users,并确保其中有一两个用户名也包含在列表current_users中。▲ 遍历列表new_users,对于其中的每个用户名,都检查它是否已被使用。如果是,就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用户名未被使用。▲ 确保比较时不区分大小写。换句话说,如果用户名'John'已被使用,应拒绝用户名'JOHN'。(为此,需要创建列表current_users的副本,其中包含当前所有用户名的小写版本。)?

练习5-11:序数

序数表示位置,如1st和2nd。序数大多以th结尾,只有1、2和3例外。▲ 在一个列表中存储数字1~9。▲ 遍历这个列表。▲ 在循环中使用一个if-elif-else结构,以打印每个数字对应的序数。输出内容应为"1st2nd 3rd 4th 5th 6th 7th 8th 9th",但每个序数都独占一行。

5.5 设置if语句的格式

在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如==、>=和<=等比较运算符两边各添加一个空格。

动手试一试

练习5-12:设置if语句的格式

审核你在本章编写的程序,确保正确地设置了条件测试的格式。

练习5-13:自己的想法

与刚拿起本书时相比,现在你是一名能力更强的程序员了。鉴于你对如何在程序中模拟现实情形有了更深入的认识,可以考虑使用程序来解决一些问题了。随着编程技能不断提高,你可能想解决一些问题,请将这方面的想法记录下来。想想你可能想编写的游戏、想研究的数据集以及想创建的Web应用程序。

5.6 小结

在本章中,你学习了:如何编写结果要么为True要么为False的条件测试;如何编写简单的if语句、if-else语句和if-elif-else结构,并且在程序中使用这些结构来测试特定的条件,以确定这些条件是否满足;如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。你还再次学习了Python就代码格式提出的建议,从而确保即便编写的程序越来越复杂,其代码依然易于阅读和理解。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:52:04  更:2022-06-26 16:53:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:05:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码