实用指南:Python编程基础(四) | if语句

news/2025/10/6 8:13:14/文章来源:https://www.cnblogs.com/wzzkaifa/p/19127250

引言:很久没有写 Python 了,有一点生疏。这是学习《Python 编程:从入门到实践(第3版)》的课后练习记录,主要目的是快速回顾基础知识。

练习1:条件测试

编写一系列条件测试,将每个条件测试以及你对其结果的预测和实际结果都打印出来。你编写的代码应类似于下面这样:

car = 'subaru'
print("is car == 'subaru'? I predict True."
)
print(car == 'subaru'
)
print("\nis car == 'audi'? I predict False."
)
print(car == 'audi'
)
  • 详细研究实际结果,直到你明白它为何为True或False。
  • 创建至少10个条件测试,而且结果为True和False的条件测试分别至少有5个。
# 定义一些变量用于测试
car = 'subaru'
animal = 'dog'
age = 25
temperature = 30.5
colors = ['red'
, 'green'
, 'blue']
is_active = True
username = 'Admin'
# --- 结果为 True 的测试 (5个) ---
# 测试 1: 检查 car 是否等于 'subaru'
print("测试 1: car == 'subaru' 吗? 我预测结果为 True."
)
print(car == 'subaru'
)
# 测试 2: 检查 animal 是否不等于 'cat'
print("\n测试 2: animal != 'cat' 吗? 我预测结果为 True."
)
print(animal != 'cat'
)
# 测试 3: 检查 age 是否大于等于 18
print("\n测试 3: age >= 18 吗? 我预测结果为 True."
)
print(age >= 18
)
# 测试 4: 检查 'green' 是否在 colors 列表中
print("\n测试 4: 'green' in colors 吗? 我预测结果为 True."
)
print('green'
in colors)
# 测试 5: 检查 is_active 是否为 True
print("\n测试 5: is_active 吗? 我预测结果为 True."
) # 直接检查布尔变量
print(is_active)
# --- 结果为 False 的测试 (5个) ---
# 测试 6: 检查 car 是否等于 'audi'
print("\n测试 6: car == 'audi' 吗? 我预测结果为 False."
)
print(car == 'audi'
)
# 测试 7: 检查 age 是否小于 20
print("\n测试 7: age < 20 吗? 我预测结果为 False."
)
print(age <
20
)
# 测试 8: 检查 temperature 是否严格等于 30 (注意浮点数比较)
print("\n测试 8: temperature == 30 吗? 我预测结果为 False."
)
print(temperature == 30
) # 30.5 不等于 30
# 测试 9: 检查 'yellow' 是否在 colors 列表中
print("\n测试 9: 'yellow' in colors 吗? 我预测结果为 False."
)
print('yellow'
in colors)
# 测试 10: 检查 username.lower() 是否等于 'admin' 的同时 age 是否大于 30 (使用 and)
# username.lower() 是 'admin' (True), age > 30 是 False (25 > 30 is False)
# True and False 结果是 False
print("\n测试 10: username.lower() == 'admin' and age > 30 吗? 我预测结果为 False."
)
print(username.lower(
) == 'admin'
and age >
30
)
测试 1: car == 'subaru' 吗? 我预测结果为 True.
True
测试 2: animal != 'cat' 吗? 我预测结果为 True.
True
测试 3: age >= 18 吗? 我预测结果为 True.
True
测试 4: 'green' in colors 吗? 我预测结果为 True.
True
测试 5: is_active 吗? 我预测结果为 True.
True
测试 6: car == 'audi' 吗? 我预测结果为 False.
False
测试 7: age < 20 吗? 我预测结果为 False.
False
测试 8: temperature == 30 吗? 我预测结果为 False.
False
测试 9: 'yellow' in colors 吗? 我预测结果为 False.
False
测试 10: username.lower() == 'admin' and age > 30 吗? 我预测结果为 False.
False

知识点回顾:

  • 变量赋值:为不同类型的变量(字符串 str, 整数 int, 浮点数 float, 列表 list, 布尔值 bool)赋值。
  • 比较运算符
    • == (等于)
    • != (不等于)
    • >= (大于等于)
    • < (小于)
  • 成员运算符in (检查元素是否存在于序列中,如列表)。
  • 布尔值TrueFalse,可以直接用于条件判断。
  • 逻辑运算符and (逻辑与,两边都为 True 时结果才为 True)。
  • 字符串方法.lower() (将字符串转换为小写,常用于不区分大小写的比较)。
  • 浮点数比较:直接用 == 比较浮点数可能因精度问题产生意外结果,但在此例中 30.5 == 30 的比较是明确的 False
  • print() 函数:用于输出文本和表达式的结果。

练习2:外星人颜色1

假设玩家在游戏中消灭了一个外星人,请创建一个名为alien_color的变量,并将其赋值为'green''yellow''red'

alien_color = "green"
if alien_color == "green":
print("You just earned 5 points!"
)
alien_color = "red" # 第二个版本,条件不通过
if alien_color == "green":
print("You just earned 5 points!"
) # 这条不会打印
You just earned 5 points!

知识点回顾:

  • 变量赋值:将字符串 'green''red' 赋给变量 alien_color
  • if 语句:用于执行条件判断。如果 if 后的条件表达式为 True,则执行其下的代码块。
  • 条件表达式alien_color == "green" 使用等于运算符 == 比较变量值和字符串字面量。
  • 代码块缩进:Python 使用缩进来定义代码块的范围。

练习3:外星人颜色2

像练习2那样设置外星人的颜色,并编写一个if-else结构。

# 版本1: 执行 if 代码块
alien_color = "green"
if alien_color == "green":
print("You just earned 5 points!"
)
else:
print("You just earned 10 points!"
)
# 版本2: 执行 else 代码块
alien_color = "yellow"
if alien_color == "green":
print("You just earned 5 points!"
)
else:
print("You just earned 10 points!"
)
You just earned 5 points!
You just earned 10 points!

知识点回顾:

  • if-else 结构:提供两种可能的执行路径。如果 if 条件为 True,执行 if 下的代码块;否则 (条件为 False),执行 else 下的代码块。
  • 互斥条件ifelse 对应的代码块是互斥的,只会执行其中一个。

练习4:外星人颜色3

将练习3中的if-else结构改为if-elif-else结构。

# 版本1: 绿色外星人
alien_color = "green"
if alien_color == "green":
print("You just earned 5 points!"
)
elif alien_color == "yellow":
print("You just earned 10 points!"
)
else: # 假设只有这三种颜色,所以红色会进入else
print("You just earned 15 points!"
)
# 版本2: 黄色外星人
alien_color = "yellow"
if alien_color == "green":
print("You just earned 5 points!"
)
elif alien_color == "yellow":
print("You just earned 10 points!"
)
else:
print("You just earned 15 points!"
)
# 版本3: 红色外星人
alien_color = "red"
if alien_color == "green":
print("You just earned 5 points!"
)
elif alien_color == "yellow":
print("You just earned 10 points!"
)
else: # 也可以写成 elif alien_color == "red": print(...)
print("You just earned 15 points!"
)
You just earned 5 points!
You just earned 10 points!
You just earned 15 points!

知识点回顾:

  • if-elif-else 结构:用于检查多个互斥条件。Python 会按顺序检查每个 ifelif 条件,一旦找到为 True 的条件,就执行其对应的代码块,并跳过其余的 elifelse 子句。
  • elif (else if):允许添加更多的条件分支。
  • else (可选):作为最后的捕获分支,当前面所有 ifelif 条件都为 False 时执行。
  • 代码可读性:对于特定已知颜色的情况,使用 elif alien_color == "red": 可能比直接用 else: 更明确,但在此练习中,else 暗示了“非绿色且非黄色”的情况。

练习5:人生的不同阶段

设置变量age的值,再编写一个if-elif-else结构,根据age的值判断这个人处于人生的哪个阶段。

age = 25 # 可以修改这个值来测试不同阶段
if age <
2:
print("这是一个婴儿"
)
elif age <
4: # 隐含 age >= 2
print("这是一个幼儿"
)
elif age <
13: # 隐含 age >= 4
print("这是一个儿童"
)
elif age <
18: # 隐含 age >= 13
print("这是一个少年"
)
elif age <
65: # 隐含 age >= 18
print("这是一个中青年人"
)
else: # 隐含 age >= 65
print("这是一个老年人"
)
这是一个中青年人

知识点回顾:

  • if-elif-else:用于根据变量的不同数值范围执行不同的操作。
  • 条件顺序的重要性:在 if-elif-else 链中,条件的顺序非常关键。因为Python会按顺序评估,一旦某个条件为真,后续的 elifelse 就会被忽略。例如,如果先判断 age < 13 再判断 age < 2,那么一个1岁的婴儿也会被错误地归类为儿童。
  • 边界条件:注意题目中对年龄区间的“含”与“不含”的描述,并将其正确转换为比较运算符(<, <=, >, >=)。

练习6:喜欢的水果

创建一个列表,其中包含你喜欢的水果,再编写一系列独立的if语句,检查列表中是否包含特定的水果。

favorite_fruits = ["apple"
, "banana"
, "cherry"]
if "apple"
in favorite_fruits:
print("You really like apples!"
)
if "orange"
in favorite_fruits: # 这个条件为 False
print("You really like oranges!"
)
if "banana"
in favorite_fruits:
print("You really like bananas!"
)
if "pear"
in favorite_fruits: # 这个条件为 False
print("You really like pears!"
)
if "cherry"
in favorite_fruits:
print("You really like cherries!"
)
You really like apples!
You really like bananas!
You really like cherries!

知识点回顾:

  • 列表创建:使用方括号 [] 和逗号 , 创建包含多个字符串元素的列表。
  • in 成员运算符:用于检查一个元素是否存在于列表中。"apple" in favorite_fruits 会返回 TrueFalse
  • 独立的 if 语句:与 if-elif-else 不同,这里每个 if 语句都会被独立评估。如果多个条件都为 True,则它们对应的代码块都会执行。

练习7:以特殊方式跟管理员打招呼

创建一个至少包含5个用户名的列表,并且其中一个用户名为'admin'。想象你要编写代码,在每个用户登录网站后都打印一条问候消息。遍历用户名列表,向每个用户打印一条问候消息。

users = ["admin"
, "eric"
, "jaden"
, "carolina"
, "david"] # 题目要求至少5个用户
for user in users:
if user == "admin":
print("Hello admin, would you like to see a status report?"
)
else:
print(f"Hello {
user.title(
)
}, thank you for logging in again."
) # 使用f-string和title()使名字首字母大写
Hello admin, would you like to see a status report?
Hello Eric, thank you for logging in again.
Hello Jaden, thank you for logging in again.
Hello Carolina, thank you for logging in again.
Hello David, thank you for logging in again.

知识点回顾:

  • for 循环:用于遍历列表 users 中的每一个元素(用户名)。
  • if-else 结构在循环中:在每次循环迭代时,根据当前 user 的值执行不同的 print 语句。
  • 字符串比较user == "admin" 检查当前用户名是否为 'admin'
  • f-string (格式化字符串字面量):一种方便的字符串格式化方法,f"Hello {user.title()}..." 将变量 user 的值(经过 .title() 方法处理)嵌入字符串中。
  • 字符串方法 .title():将字符串中每个单词的首字母转换为大写,其余字母小写。

练习8:处理没有用户的情形

在为练习7编写的程序中,添加一条if语句,检查用户名列表是否为空。

users = ["admin"
, "eric"
, "jaden"] # 假设初始有一些用户
# users = [] # 测试列表为空的情况
if users: # 当列表不为空时,users 在布尔上下文中为 True
for user in users:
if user == 'admin':
print('Hello admin, would you like to see a status report?'
)
else:
print(f'Hello {
user.title(
)
}, thank you for logging in again.'
)
else:
print('We need to find some users!'
)
print("\n--- Testing with an empty list ---"
)
users = [] # 删除所有用户
if users:
for user in users:
if user == 'admin':
print('Hello admin, would you like to see a status report?'
)
else:
print(f'Hello {
user.title(
)
}, thank you for logging in again.'
)
else:
print('We need to find some users!'
)
Hello admin, would you like to see a status report?
Hello Eric, thank you for logging in again.
Hello Jaden, thank you for logging in again.
--- Testing with an empty list ---
We need to find some users!

知识点回顾:

  • 列表的布尔值:在Python中,非空列表在布尔上下文中被视为 True,而空列表 [] 被视为 False。因此,可以直接使用 if users: 来检查列表是否为空。
  • 条件执行:整个 for 循环(包括其内部的 if-else)仅在 users 列表不为空时执行。

练习9:检查用户名

按照下面的说明编写一个程序,模拟网站如何确保每个用户的用户名都独一无二。

current_users = ['eMily'
, 'James'
, 'lily'
, 'john'
, 'Michael']
new_users = ['jOhn'
, 'miChael'
, 'Tom'
, 'jack'
, 'rose']
# 创建 current_users 的全小写副本以进行不区分大小写的比较
current_users_lower = [user.lower(
)
for user in current_users]
for new_user in new_users:
if new_user.lower(
)
in current_users_lower:
print(f"Username '{
new_user
}' is already taken. Please enter a new username."
)
else:
print(f"Username '{
new_user
}' is available."
)
Username 'jOhn' is already taken. Please enter a new username.
Username 'miChael' is already taken. Please enter a new username.
Username 'Tom' is available.
Username 'jack' is available.
Username 'rose' is available.

知识点回顾:

  • 列表创建和遍历:创建 current_usersnew_users 列表,并使用 for 循环遍历 new_users
  • 不区分大小写比较
    • 使用字符串方法 .lower() 将用户名转换为全小写进行比较。
    • 为提高效率(避免在内层循环中反复对 current_users 的元素调用 .lower()),先创建 current_users 的全小写版本 current_users_lower
  • 列表推导式:用于构建 current_users_lower 列表。
  • in 成员运算符new_user.lower() in current_users_lower 检查转换后的新用户名是否存在于小写当前用户列表中。
  • f-string:用于清晰地打印提示信息。

练习10:序数

序数表示顺序位置,如1st和2nd。序数大多以th结尾,只有1st、2nd、3rd例外。

numbers = list(range(1
, 10
)
) # 使用 range 创建列表 [1, 2, ..., 9]
for number in numbers:
if number == 1:
print(f"{
number
}st"
)
elif number == 2:
print(f"{
number
}nd"
)
elif number == 3:
print(f"{
number
}rd"
)
else:
print(f"{
number
}th"
)
1st
2nd
3rd
4th
5th
6th
7th
8th
9th

知识点回顾:

  • range() 函数与 list()list(range(1, 10)) 创建一个包含整数 1 到 9 的列表。
  • for 循环遍历列表:迭代 numbers 列表中的每个数字。
  • if-elif-else 结构:根据数字的特定值 (1, 2, 3) 应用不同的序数后缀 (st, nd, rd),其他所有数字应用通用后缀 (th)。
  • f-string:用于将数字和其对应的序数后缀组合成字符串进行打印。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高贵的北上广深,没有父母托举,90后很难成家

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087北上广深,父母不给托举的话,多少人敢结婚?能结婚? 你有没有发现…

视觉设计网站寓意好的公司名字大全免费

什么是Docker&#xff1f;它的主要功能是什么&#xff1f; Docker是一种开源的容器化平台&#xff0c;用于构建、部署和运行应用程序。它的主要功能包括&#xff1a;快速构建、分发和运行应用程序的容器化环境&#xff0c;实现应用程序的可移植性和可扩展性。 Docker和虚拟机…

使用AI图像服务规模化视觉内容生产

本文介绍了某中心云平台中集成的AI图像服务,该服务提供9种专业图像编辑工具,包括对象擦除、背景移除、搜索重着色等功能,帮助创意团队高效生产视觉内容,无需在不同系统间切换即可完成复杂编辑任务。使用AI图像服务…

本地Markdown开源知识库选型指南 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:基于贝叶斯优化神经网络的光伏功率预测综述

实用指南:基于贝叶斯优化神经网络的光伏功率预测综述pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

详细介绍:ROS2与Unitree机器人集成指南

详细介绍:ROS2与Unitree机器人集成指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

长安镇网站建设公司广告公司起名用字大全

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …

外贸网站怎么营销网络营销策略方案

大家好&#xff0c; 在本文中&#xff0c;我们将演示如何正确集成GWT和EJB3 &#xff0c;以实现示例项目&#xff0c;使用maven进行构建并将其部署在JBoss 5.1应用服务器上。 实际上&#xff0c;您可以轻松地更改maven构建文件中的依赖关系&#xff0c;并将项目部署到您喜欢的…

黑龙江农垦建设局网站网络营销网站源码

centos6.4 32位的vps上装了lnmp以后&#xff0c;phpmyadmin无法连接mysql服务器&#xff0c;ssh命令行里mysql -uroot -p 命令后老是出现拒绝连接的情况。php程序里也是拒绝连接。尝试过修改phpmyadmin的config.inc.php文件&#xff0c;尝试过修改my.cnf文件&#xff0c;尝试过…

plexe 通过提示词构建机器学习模型

plexe 通过提示词构建机器学习模型plexe是一个可以通过提示词构建机器模型的框架 内部如何处理的计划,分析用户意图以及数据,开发模型构建测试 代码生成,通过比较知名的库(tensorflow,pytorch,scikit-learn) 创…

如何用docker部署ELK? - 教程

如何用docker部署ELK? - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

国内自建的海淘网站手机上怎么做投票网站

前言 conda与pip是Python开发中常用的两种工具&#xff0c;conda本质是环境、包管理工具&#xff0c;pip是包管理工具&#xff0c;两者的功能有一定的重叠。本文主要记录开发工作中与两者相关的使用说明与注意事项。 推荐用conda创建隔离的虚拟环境&#xff0c;用pip进行包安…

网站开发的分工网站后台能进前台空白

在三维世界中,显示一张图的大小与摄象机的位置有关,近的地方,图片实际象素就大一些,远的地方图片实际象素就会小一些,就要进行一些压缩,例如一张64*64的图,在近处,显示出来可能是50*50,在远处可能显示出来是20*20. 如果只限于简单的支掉某些像素,将会使缩小后的图片损失很多细节…

物流公司网站模版腾讯云 wordpress

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 在这个波澜壮阔的内存地产世界中&#xff0c;malloc、free、calloc和realloc四位主角&#xff0c;共同演绎着一场场精彩绝伦的楼盘开…

想学编程做网站做it公司网站

1 准备 1.已安装好docker环境 2.已申请好域名 2 申请SSL证书 我使用的是腾讯云&#xff0c;申请免费的TrustAsia的SSL证书&#xff0c;阿里云等或者其他平台一般都会提供TrustAsia的SSL证书的 填好域名等相关信息&#xff0c;一般一天就可以下载证书了 3 docker安装Nginx …

网站类型分析设计说明怎么写200字

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 改进1结构图如下: 《YOLOv…

服务器建站教程wordpress 目录菜单

系列目录 上一篇&#xff1a;白骑士的C语言教学高级篇 3.5 性能优化 在本项目中&#xff0c;我们将设计并实现一个简单的计算器程序&#xff0c;涵盖程序设计与实现、用户输入处理、算术运算与结果显示。该计算器可以进行基本的加减乘除运算&#xff0c;并能处理用户的连续输入…

免费的海报模板网站如何设置网站子域名

摘要 随着全球气候变化的加剧&#xff0c;生态保护已成为全球关注的焦点。天气预报API作为一种强大的工具&#xff0c;不仅能够提供实时的气象数据&#xff0c;还能在生态保护领域发挥重要作用。本文将探讨天气预报API如何帮助科学家、环保组织和政策制定者更好地理解和预测环…

罗湖做网站多少钱深圳设计平台

注册商标的时候都是要确定具体的产品或服务的&#xff0c;目前我国商标分类是用《类似商品和服务区分表–基于尼斯分类第十一版》2019年版这本分类书。这本分类表也是全球通用的分类表&#xff0c;商标分类总共有45个类别&#xff0c;1-34类是产品类、35-45类是服务类。这45个大…

企业网站的建设过程个人网站建设小江

在这个数字化快速发展的时代&#xff0c;垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业&#xff0c;本文将分享如何使用第三方制作平台乔拓云网&#xff0c;定制开发搭建垃圾回收系统小程序。 首先&#xff0c;使用乔拓云网账号登录平…