前言
写代码的时候,我们经常需要检查一系列条件,根据条件的判断结果来决定分支走向。if条件判断在所有的编程语言当中都存在,少数有的或许不叫if,但是分支判断的语法是一定存在的。在Python中也是使用if来控制程序流程,下面就让我们一起开始学习新的内容吧!
一、简单的if条件示例
# 使用list函数创建汽车列表,从元组转换
cars = list(('BMW', 'Audi', 'Toyota', 'Honda'))
for car in cars:
if car == 'BMW':
print('I like BMW!')
else:
print(car.title() + ', nice car!')
打印结果可以看出,当遇到元素为BMW时,走了不同的分支
二、条件测试
检查是否相等
car = "Toyota"
print(car == "Toyota")
先给car赋值,再使用 == 判断car是不是那个值 Toyota,结果是显而易见的:返回 True
忽略大小写
car = "Toyota"
print(car == "BMW")
car = 'bmw'
print(car == 'BMW')
car = "Audi"
print(car.lower() == 'audi')
检查是否不等
car = "Toyota"
if car != 'bmw':
print("Hello World")
在Python中检查两个值是否不相等 使用 != ,大部分开发中都是判断两个值是否相等,但有时检查两个值是否不等效率更高
数值比较
num = 10
print(num == '10')
print(num == 10)
print(num > 10)
print(num > 8)
print(num < 9)
这块内容比较简单,没有什么需要过多解释的。
检查多个条件
num = 10
value = 7
print(7 <= num <= 10 and value > 6)
再比如 or 条件
num = 10
value = 7
print(num > 10 or value > 6)
or条件可连接多个,只要有一个返回True,则整个条件表达式为True,并且是短路算法,即第一个值为True,后面的就不需要再去判断。
num = 10
value = 7
print(num > 10 or value > 6)
检查多特定值是否在列表中
使用关键字 in
cars = ["Ford", "BMW", "Fiat"]
print("Ford" in cars)
print("Toyota" in cars)
检查多特定值是否不包含在列表中
用关键字 not in
cars = ['bmw', 'audi', 'toyota', 'subaru']
if "benz" not in cars:
print("benz is not in the list")
else:
print("benz is in the list")
if "bmw" not in cars:
print("bmw is not in the list")
else:
print("bmw is in the list")
打印结果如下
布尔表达式
success = True
print(success)
success = False
print(success)
这里 True 和 False 是 Python 中的两个特殊关键字,它们分别代表布尔类型的两个值。在 Python 中,布尔类型是一种特殊的整型,True 实际上等于整数 1,而 False 等于整数 0。不过,在大多数情况下,你不需要关心这个底层实现细节,直接使用 True 和 False 即可。
三、if语句
Python中的if语句就是基于某个条件来执行不同的代码块。基本格式如下
简单if语句
if conditional_test:
do something
比如根据年龄判断这个人有没有成年
age = 20
if age>=18:
print('你已经成年啦,可以搞对象啦!')
age = 16
if age<18:
print('你还不是成年人,要守身如玉!')
if-else语句
age = 19
if age >= 18:
print("你成年了,可以找女朋友了!")
else:
print("未成年人禁止谈恋爱!")
显然代码会走第一个分支,如果age为16,则会走else分支
if-elif-else结构
上面的例子是二选一,如果我们有多个逻辑分支,可以使用if-elif-else结构
age = 45
if age < 13:
print("儿童")
elif age < 18:
print("青少年")
elif age < 30:
print("年轻成人")
elif age < 60:
print("成年")
else:
print("老年人")
if-elif-else 结构,可以看到elif是可以有多个存在的。
省略else代码块
对上面的代码稍作修改,省略else,使用elif代替,达到相同的判断效果
age = 61
if age < 13:
print("儿童")
elif age < 18:
print("青少年")
elif age < 30:
print("年轻成人")
elif age < 60:
print("成年")
elif age >60:
print("老年")
使用多个条件
if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高,让你能够测试一个特定的条件。但很多时候我们可能需要检测多个条件,每个条件都需要有相应的处理逻辑。
username = input("请输入用户名: ")
password = input("请输入密码: ")
# 假设正确的用户名和密码
correct_username = "admin"
correct_password = "123456"
# 检查用户名是否正确
if username == correct_username:
print("用户名正确")
# 检查密码是否正确
if password == correct_password:
print("密码正确")
# 如果用户名和密码都正确,则允许登录
if username == correct_username and password == correct_password:
print("登录成功")
else:
print("登录失败,请检查用户名和密码")
这个列子是检测用户输入用户名和密码,在控制台实现输入
四、使用if语句处理列表
我们使用for循环处理一个列表,根据列表中的元素类型或值,对其进行判断,做出对应的处理,简单代码如下
检查特殊元素
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
for item in list_1:
if item == '小蜗牛':
print(item + '在家好好睡觉呀')
else:
print('欢迎光临' + item)
确定列表非空
有时候我们需要对列表是否为空进行检测,比如Python中,for循环一个空列表是不会报错的,但是可能会造成我们逻辑上的错误,我们需要检测给出提示。
requested_toppings = ['蘑菇', '额外奶酪'] # 用户请求的配料
if requested_toppings:
for requested_topping in requested_toppings:
print("正在添加 " + requested_topping + "。")
print("\n披萨制作完成!")
else:
print("您确定要一个普通的披萨吗?")
一个添加了两种配料的披萨已制作完成,如果客户没有选择任何配料,有可能是忘记了,我们需要根据用户选择的配料表给出提示
requested_toppings = [] # 用户请求的配料
if requested_toppings:
for requested_topping in requested_toppings:
print("正在添加 " + requested_topping + "。")
print("\n披萨制作完成!")
else:
print("您确定要一个普通的披萨吗?")
使用多个列表
还是以制作奶酪来举例,顾客要求多,万一要的配料没有,我们需要给出提示
# 可提供的配料列表
available_toppings = ['蘑菇', '橄榄', '青椒', '意大利辣香肠', '菠萝', '额外奶酪']
# 用户请求的配料列表
requested_toppings = ['蘑菇', '薯条', '额外奶酪']
for requested_topping in requested_toppings:
if requested_topping in available_toppings:
print("正在添加 " + requested_topping + "。")
else:
print("抱歉,我们没有 " + requested_topping + "。")
print("\n披萨制作完成!")
观察得知,用户要求的薯条配料,我们并没有,所以结果如下
五、设置if语句的格式
总结
在本章中,我们学习了如何编写结果要么为True要么为False的条件测试。学习了如何编写简单的if语句、if-else语句和if-elif-else结构。在程序中,你使用了这些结构来测试特定的条件,以确定这些条件是否满足。我们学习了如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。