Python之if语句

devtools/2025/3/16 17:46:17/

闲暇之余,学学Python,整理成笔记分享给大家。

注:本文内容来源于《Python编程从入门到实践第3版》一书。

主要内容: 

python"># 一个简单的示例
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())
print()
# 条件测试
"""
每条 if 语句的核心都是一个值为 True 或 False 的表达式,这种表达式称为条件测
试。Python 根据条件测试的值是 True 还是 False 来决定是否执行 if 语句中的代
码。如果条件测试的值为 True,Python 就执行紧跟在 if 语句后面的代码;如果为
False,Python 就忽略这些代码。
"""
# 如何在检查是否相等时忽略大小写
## 方法 1:统一转换为小写或大写
str1 = "Hello"
str2 = "HELLo"# 转换为小写比较
if str1.lower() == str2.lower():print("忽略大小写后相等")
else:print("不相等")# 转换为大写比较
if str1.upper() == str2.upper():print("忽略大小写后相等")
# 方法 2:使用 casefold() 方法(更严格)
# casefold() 方法比 lower() 更激进,能处理更多语言的特殊字符(如德语 ß 会转换为 ss):
str3 = "straße"      # 德语 "street"
str4 = "STRASSE"if str3.casefold() == str4.casefold():print("严格忽略大小写后相等")  # 输出此结果
print()
# 检查是否不等
requested_topping = 'mushrooms'
if requested_topping != 'anchovies':print("Hold the anchovies!")
print()
# 数值比较
age = 18
print(age == 18)
answer = 17
if answer != 42:print("That is not the correct answer. Please try again!")
# 条件语句可包含各种数学比较,如小于、小于等于、大于、大于等于
# 检查多个条件
# 使用 and 检查多个条件
"""
要检查两个条件是否都为 True,可使用关键字 and 将两个条件测试合而为一。
如果每个条件测试都通过了,整个表达式就为 True;如果至少一个条件测试没有
通过,整个表达式就为 False。
"""
# 要检查两个人是否都不小于 21 岁,可使用下面的条件测试:
age_0,age_1 = 22, 18
print(age_0 >= 21 and age_1 >= 21)
age_1 = 22
print(age_0 >= 21 and age_1 >= 21)
# 使用 or 检查多个条件
"""
关键字 or 也能够让你检查多个条件,但只要满足其中一个条件,就能通过整个条
件测试。仅当所有条件测试都没有通过时,使用 or 的表达式才为 False。
"""
age_0 = 22
age_1 = 18
print(age_0 >= 21 or age_1 >= 21)
age_0 = 18
print(age_0 >= 21 or age_1 >= 21)
print()
# 检查特定的值是否在列表中
# 要判断特定的值是否在列表中,可使用关键字 in
requested_toppings = ['mushrooms', 'onions', 'pineapple']
print('mushrooms' in requested_toppings)
print('pepperoni' in requested_toppings)
print()
# 检查特定的值是否不在列表中
"""
有些时候,确定特定的值不在列表中很重要。在这种情况下,可使用关键字 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.")
print()# 布尔表达式:布尔表达式的结果要么为 True,要么为 False。
# 布尔值通常用于记录条件,如游戏是否正在运行或用户是否可以编辑网站的特定内容:
game_active = True
can_edit = False
print()
# if 语句
# 简单的 if 语句
"""
最简单的 if 语句只有一个条件测试和一个操作:
if conditional_test:do something
第一行可包含任意条件测试,而在紧跟在测试后面的缩进代码块中,可执行任意操
作。如果条件测试的结果为 True,Python 就会执行紧跟在 if 语句后面的代码,否则
Python 将忽略这些代码。
"""
# 假设有一个表示某个人年龄的变量,而你想知道这个人是否到了投票的年龄
age = 19
if age >= 18:print("You are old enough to vote!")
print()
# 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!")
print()
# if-elif-else 语句
# 在现实世界中,需要考虑的情形通常会超过两个。例如,来看一个根据年龄段收费的游乐场。
"""
4 岁以下免费。
4(含)~18 岁收费 25 美元。
年满 18 岁收费 40 美元。
"""
age = 20
if age < 4:print("Your admission cost is $0.")
elif age < 18:print("Your admission cost is $25.")
else:print("Your admission cost is $40.")
print()
"""
为了让代码更简洁,可不在 if-elif-else 代码块中打印门票价格,而是只在其中设
置门票价格,并在它后面添加一个函数调用 print():
"""
age = 12
if age < 4:price = 0
elif age < 18:price = 25
else:price = 40
print(f"Your admission cost is ${price}.")
# 使用多个 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}.")
print()
# 省略 else 代码块
"""
Python 并不要求 if-elif 结构后面必须有 else 代码块。在一些情况下,else 代码
块很有用;而在其他情况下,使用一条 elif 语句来处理特定的情形更清晰:
"""
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}.")
"""
else 是一条包罗万象的语句,只要不满足任何 if 或 elif 中的条件测试,其中的代
码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑
使用一个 elif 代码块来代替 else 代码块。这样就可以肯定,仅当满足相应的条件
时,代码才会执行。
"""
print()
# 测试多个条件
"""
有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含 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("\nFinished making your pizza!")
print()
"""
如果像下面这样转而使用 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("\nFinished making your pizza!")
print()
# 使用 if 语句处理列表
# 检查特殊元素
"""
比萨店在制作比萨时,每添加一种配料都打印一条
消息。要以极高的效率编写这样的代码,可以创建一个包含顾客所点配料的列表,并
使用一个循环来指出添加到比萨中的配料:
"""
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
print()
# 如果比萨店的青椒(green peppers)用完了,该如何处理呢?为了妥善地处理这种情况,可在 for 循环中包含一条 if 语句:
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")else:print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
print()
# 确定列表非空
'''
制作比萨前检查顾客点的配料列表是否为空。如果列表为空,就向顾客确认是
否要点原味比萨(plain pizza);如果列表非空,就像前面的示例那样制作比萨:
'''
requested_toppings = []
if requested_toppings:for requested_topping in requested_toppings:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")
else:print("Are you sure you want a plain pizza?")
print()
"""
对于数值 0、空值 None、单引号空字符串 ''、双引号空字符串 ""、空列表 []、空元组 ()、空字典 {},
Python 都会返回 False
"""
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}.")
print("\nFinished making your pizza!")
print()

 练习:

python">"""
条件测试 编写一系列条件测试,将每个条件测试以及你对其结果的预
测和实际结果都打印出来。你编写的代码应类似于下面这样:
"""
# 测试1:字符串相等性
animal = 'cat'
print("测试1: animal == 'cat'? 我预测 True")
print(animal == 'cat')# 测试2:字符串不等性
print("\n测试2: animal == 'dog'? 我预测 False")
print(animal == 'dog')# 测试3:数值比较
age = 25
print("\n测试3: age > 20? 我预测 True")
print(age > 20)# 测试4:数值范围判断
print("\n测试4: 10 <= age < 20? 我预测 False")
print(10 <= age < 20)# 测试5:列表包含检查
fruits = ['apple', 'banana', 'orange']
print("\n测试5: 'banana' 在列表中? 我预测 True")
print('banana' in fruits)# 测试6:列表不包含检查
print("\n测试6: 'grape' 不在列表中? 我预测 True")
print('grape' not in fruits)# 测试7:大小写敏感检查
car = 'Audi'
print("\n测试7: car == 'audi'? 我预测 False")
print(car == 'audi')# 测试8:忽略大小写检查
print("\n测试8: car.lower() == 'audi'? 我预测 True")
print(car.lower() == 'audi')# 测试9:多条件与运算
temperature = 28
weather = 'sunny'
print("\n测试9: 温度>25且天气晴朗? 我预测 True")
print(temperature > 25 and weather == 'sunny')# 测试10:布尔值判断
has_license = True
print("\n测试10: 有驾驶执照? 我预测 True")
print(has_license is True)# 测试11:类型检查
value = 3.14
print("\n测试11: 值是字符串? 我预测 False")
print(isinstance(value, str))# 测试12:空值检查
empty_list = []
print("\n测试12: 列表不为空? 我预测 False")
print(bool(empty_list))"""
你并非只能创建 10 个条件测试。如果想尝试做更多的
比较,可再编写一些条件测试,并将它们加入 conditional_tests.py。对于下面列出
的各种情况,至少编写两个条件测试,结果分别为 True 和 False。
检查两个字符串是否相等和不等。
使用 lower() 方法的条件测试。
涉及相等、不等、大于、小于、大于等于和小于等于的数值比较。
使用关键字 and 和 or 的条件测试。
测试特定的值是否在列表中。
测试特定的值是否不在列表中。
"""
# 定义测试用变量
str1 = 'Hello'
str2 = 'WORLD'
num = 15
age = 25
temperature = -5
has_license = True
fruits = ['apple', 'banana', 'orange']
colors = ['red', 'blue', 'green']print("---------- 字符串相等性测试 ----------")
# 测试1: 字符串相等
print("测试1: str1 == 'Hello'? 预测 True")
print(str1 == 'Hello')  # True# 测试2: 字符串不等
print("\n测试2: str1 != str2? 预测 True")
print(str1 != str2)  # Trueprint("\n---------- 大小写转换测试 ----------")
# 测试3: 转换小写后相等
print("测试3: str2.lower() == 'world'? 预测 True")
print(str2.lower() == 'world')  # True# 测试4: 未转换大小写不等
print("\n测试4: str1 == 'HELLO'? 预测 False")
print(str1 == 'HELLO')  # Falseprint("\n---------- 数值比较测试 ----------")
# 测试5: 大于等于
print("测试5: num >= 15? 预测 True")
print(num >= 15)  # True# 测试6: 不等于
print("\n测试6: num != 15? 预测 False")
print(num != 15)  # False# 测试7: 复数比较
print("\n测试7: temperature < 0? 预测 True")
print(temperature < 0)  # Trueprint("\n---------- 逻辑运算符测试 ----------")
# 测试8: and运算符
print("测试8: age>20 且 has_license? 预测 True")
print(age > 20 and has_license)  # True# 测试9: or运算符
print("\n测试9: num<10 或 temperature>0? 预测 False")
print(num < 10 or temperature > 0)  # Falseprint("\n---------- 列表包含性测试 ----------")
# 测试10: 存在检查
print("测试10: 'banana' 在水果列表? 预测 True")
print('banana' in fruits)  # True# 测试11: 不存在检查
print("\n测试11: 'grape' 不在颜色列表? 预测 True")
print('grape' not in colors)  # True# 测试12: 错误存在检查
print("\n测试12: 'yellow' 在颜色列表? 预测 False")
print('yellow' in colors)  # Falseprint("\n---------- 边界值测试 ----------")
# 测试13: 等于边界值
print("测试13: age == 25? 预测 True")
print(age == 25)  # True# 测试14: 列表空值检查
print("\n测试14: 颜色列表不为空? 预测 True")
print(bool(colors))  # True
# 增加浮点数精度比较示例
pi = 3.1415926
print("\n浮点数比较: abs(pi - 3.1416) < 0.0001? 预测 True")
print(abs(pi - 3.1416) < 0.0001)  # 处理浮点精度问题# 增加正则表达式匹配测试
import re
email = "test@example.com"
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
print("\n邮箱格式验证: 匹配正则表达式? 预测 True")
print(bool(re.match(pattern, email)))
print()
"""
假设玩家在游戏中消灭了一个外星人,请创建一个名为alien_color 的变量,并将其赋值为 'green'、'yellow' 或 'red'。
编写一条 if 语句,测试外星人是否是绿色的。如果是,就打印一条消息,指出玩家获得了 5 分。
编写这个程序的两个版本,上述条件测试在其中的一个版本中通过,在另一个版本中未通过(未通过条件测试时没有输出)。
"""
# 消灭绿色外星人
alien_color = 'green'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
alien_color = 'red'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
print()
"""
编写一个 ifelse 结构。
如果外星人是绿色的,就打印一条消息,指出玩家因消灭该外星人获得了 5分。
如果外星人不是绿色的,就打印一条消息,指出玩家获得了 10 分。
编写这个程序的两个版本,在一个版本中将执行 if 代码块,在另一个版本中将执行 else 代码块。
"""
alien_color = 'green'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
else:print("玩家消灭了其他颜色外星人,获得10分!")
print()
alien_color = 'yellow'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
else:print("玩家消灭了其他颜色外星人,获得10分!")
print()
"""
将练习上面的 if-else 结构改为 if-elif-else 结
构。
如果外星人是绿色的,就打印一条消息,指出玩家获得了 5 分。
如果外星人是黄色的,就打印一条消息,指出玩家获得了 10 分。
如果外星人是红色的,就打印一条消息,指出玩家获得了 15 分。
编写这个程序的三个版本,分别在外星人为绿色、黄色和红色时打印一条消
息。
"""
alien_color = 'yellow'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
elif alien_color == 'yellow':print("玩家消灭了黄色外星人,获得10分!")
elif alien_color == 'red':print("玩家消灭了红色外星人,获得15分!")
print()
alien_color = 'green'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
elif alien_color == 'yellow':print("玩家消灭了黄色外星人,获得10分!")
elif alien_color == 'red':print("玩家消灭了红色外星人,获得15分!")
print()
alien_color = 'red'
if alien_color == 'green':print("玩家消灭了绿色外星人,获得5分!")
elif alien_color == 'yellow':print("玩家消灭了黄色外星人,获得10分!")
elif alien_color == 'red':print("玩家消灭了红色外星人,获得15分!")
print()
"""
人生的不同阶段 设置变量 age 的值,再编写一个 if-elif-else 结
构,根据 age 的值判断这个人处于人生的哪个阶段。
如果年龄小于 2 岁,就打印一条消息,指出这个人是婴儿。
如果年龄为 2(含)~4 岁,就打印一条消息,指出这个人是幼儿。
如果年龄为 4(含)~13 岁,就打印一条消息,指出这个人是儿童。
如果年龄为 13(含)~18 岁,就打印一条消息,指出这个人是少年。
如果年龄为 18(含)~65 岁,就打印一条消息,指出这个人是中青年人。
如果年龄达到 65 岁,就打印一条消息,指出这个人是老年人。
"""
age = 25
if 0 < age < 2:print("这个人是婴儿")
elif age < 4:print("这个人是幼儿")
elif age < 13:print("这个人是儿童")
elif age < 18:print("这个人是少年")
elif age < 65:print("这个人是中青年人")
elif age >= 65:print("这个人是老年人")
else:print("输入年龄有误")
"""
创建一个列表,其中包含你喜欢的水果,再编写一系列独立的 if 语句,检查列表中是否包含特定的水果。
将该列表命名为 favorite_fruits,并让其包含三种水果。
编写 5 条 if 语句,每条都检查某种水果是否在列表中。如果是,就打印一条
像下面这样的消息。
You really like bananas!
"""
print()
favorite_fruits = ["苹果","橙子","火龙果","油桃"]
if "水蜜桃" in favorite_fruits:print("我喜欢吃水蜜桃")
if "梨" in favorite_fruits:print("我喜欢吃梨")
if "苹果" in favorite_fruits:print("我喜欢吃苹果")
if "柚子" in favorite_fruits:print("我喜欢吃柚子")
if "橙子" in favorite_fruits:print("我喜欢吃橙子")
if "油桃" in favorite_fruits:print("我喜欢吃油桃")
if "火龙果" in favorite_fruits:print("我喜欢吃油桃")
print()
"""
以特殊方式跟管理员打招呼 创建一个至少包含 5 个用户名的列表,并
且其中一个用户名为 'admin'。想象你要编写代码,在每个用户登录网站后都打
印一条问候消息。遍历用户名列表,向每个用户打印一条问候消息。
如果用户名为 'admin',就打印一条特殊的问候消息,如下所示。
Hello admin, would you like to see a status report?
否则,打印一条普通的问候消息,如下所示。
Hello Jaden, thank you for logging in again.
"""
usernames = ['eric', 'willie', 'admin', 'erin', 'ever']
for username in usernames:if username == 'admin':print("Hello admin, would you like to see a status report?")else:print(f"Hello {username}, thank you for loggin in again!")
print()"""
在为完成练习 5-8 编写的程序中,添加一条 if 语句,检查用户名列表是否为空。
 如果为空,就打印消息 We need to find some users!。
 删除列表中的所有用户名,确定将打印正确的消息。
"""
usernames = []
if usernames:for username in usernames:if username == 'admin':print("Hello admin, would you like to see a status report?")else:print(f"Hello {username}, thank you for loggin in again!")
else:print("We need to find some users!")
print()"""
检查用户名 按照下面的说明编写一个程序,模拟网站如何确保每个用户的用户名都独一无二。
·创建一个至少包含 5 个用户名的列表,并将其命名为 current_users。
·再创建一个包含 5 个用户名的列表,将其命名为 new_users,并确保其中有
一两个用户名也在列表 current_users 中。
·遍历列表 new_users,检查其中的每个用户名是否已被使用。如果是,就打
印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用
户名未被使用。
·确保比较时不区分大小写。换句话说,如果用户名 'John' 已被使用,应拒
绝用户名 'JOHN'。(为此,需要创建列表 current_users 的副本,其中
包含当前所有用户名的全小写版本。)
"""
current_users = ['卡卡西', '自来也', '鸣人', '春野樱', '佐助']
new_users = ['波风水门', '自来也', '鸣人', '猿飞日斩', '袁飞木叶丸']
for new_user in new_users:if new_user in current_users:print(f"抱歉 {new_user} 这个名字已经被使用了。")else:print(f"不错, {new_user} 没有被使用.")
print()
"""
序数表示顺序位置,如 1st 和 2nd。序数大多以 th 结尾,只有
1st、2nd、3rd 例外。
在一个列表中存储数字 1~9。
遍历这个列表。
在循环中使用一个 if-elif-else 结构,打印每个数字对应的序数。输出内
容应为 "1st 2nd 3rd 4th 5th 6th 7th 8th 9th",每个序数都独占
一行。
"""
numbers = list(range(1,10))
for number in numbers:if number == 1:print("1st")elif number == 2:print("2nd")elif number == 3:print("3rd")else:print(f"{number}th")
print()


http://www.ppmy.cn/devtools/167613.html

相关文章

Java泛型是什么?有什么作用?

Java泛型&#xff08;Generics&#xff09;是Java语言中一种类型参数化的机制&#xff0c;允许在类、接口、方法中使用类型参数&#xff0c;使代码能够处理多种数据类型&#xff0c;同时保证类型安全。泛型的主要目的是增强代码的复用性和安全性&#xff0c;避免类型转换错误。…

【Tools】Visual Studio Code安装保姆级教程(2025版)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code配置05. 附录 01. Visual Studio Code概述 Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款免费、开源且跨平台…

每日一题---数组中两个字符串的最小距离

数组中两个字符串的最小距离 给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 链接&#xff1a;数组中两个字符串的最小距离__牛…

MySQL 8 主从同步安装与配置

拟机&#xff0c;由 CentOS 换成了 Ubuntu&#xff0c;用 Xteminal 连接之后&#xff0c;为了方便改配置文件&#xff0c;把文件权限改成 666 了&#xff0c;结果因为这个调半天&#xff0c;一直以为是网络问题或者是配置问题。要注意为了防止配置文件被未经授权的用户修改&…

STM32 单片机常见的 8 种输入输出模式

STM32 单片机常见的 8 种输入输出模式 文章目录 STM32 单片机常见的 8 种输入输出模式1. 浮空输入模式 (GPIO_Mode_IN_FLOATING)介绍使用场景示例代码 2. 上拉输入模式 (GPIO_Mode_IPU)介绍使用场景示例代码 3. 下拉输入模式 (GPIO_Mode_IPD)介绍使用场景示例代码 4. 模拟输入模…

拥有一台云服务器能做什么呢?

拥有一台云服务器就像拥有了一台24小时在线的远程电脑&#xff0c;你可以通过互联网随时随地管理它。它的用途非常广泛&#xff0c;无论是个人学习、开发测试&#xff0c;还是企业级应用部署&#xff0c;都能发挥重要作用。以下是常见的应用场景&#xff0c;按需求分类整理&…

SwanLab私有化部署教程!

SwanLab私有化部署版面向所有个人用户免费开放&#xff0c;部署方案基于Docker Compose&#xff0c;能非常轻松地部署在 Windows/MacOS/Linux 机器上&#xff0c;希望能成为各位训练师的独门炼丹利器。 下面我们会介绍一下如何安装私有化部署版。 1. SwanLab介绍 SwanLab 是…

Unity 封装一个依赖于MonoBehaviour的计时器(上) 基本功能

灵感来自下面这本书的协程部分,因此我就自己尝试写了一个 我的新书Unity3D游戏开发&#xff08;第3版&#xff09; | 雨松MOMO程序研究院 如果你不知道什么是协程:unity保姆级教程之协同程序_unity协同-CSDN博客 一句话概括:协程就是单线程的异步操作,其作用于Unity的主线程 1…