关于 Python 的条件控制技巧

开发
Python 提供了多种方式来实现条件控制,包括 if 语句、elif 语句和 else 语句等。掌握这些基础可以帮助你写出更加灵活和智能的程序。

在编程中,条件控制是实现逻辑判断的基础。Python 提供了多种方式来实现条件控制,包括 if 语句、elif 语句和 else 语句等。掌握这些基础可以帮助你写出更加灵活和智能的程序。

基本的条件控制语句

1. if 语句

用途:用于基于某个条件执行一段代码块。

语法:

if condition:
    # 条件为真时执行的代码

示例:编写一个程序,判断一个数字是否大于 10。

number = 15

if number > 10:
    print("这个数字大于 10")

输出:

这个数字大于 10

解释:这里 number > 10 是一个条件表达式。如果这个表达式的值为 True,那么打印语句就会被执行。

技巧:在判断之前可以先检查变量是否已经定义,避免运行时错误。

number = input("请输入一个数字:")

if number.isdigit():  # 检查输入是否为数字
    number = int(number)
    if number > 10:
        print("这个数字大于 10")
else:
    print("请输入有效的数字")

注意事项:确保在使用条件语句时考虑所有可能的情况,避免遗漏。

2. if-else 语句

用途:用于在条件为真或假时分别执行不同的代码块。

语法:

if condition:
    # 条件为真时执行的代码
else:
    # 条件为假时执行的代码

示例:判断一个年份是否为闰年。

year = 2024

if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(year, "是闰年")
else:
    print(year, "不是闰年")

输出:

2024 是闰年

解释:闰年的规则是能被 4 整除但不能被 100 整除,或者能被 400 整除。

技巧:可以将复杂的条件拆分成多个简单的条件组合。

is_divisible_by_4 = year % 4 == 0
is_not_divisible_by_100 = year % 100 != 0
is_divisible_by_400 = year % 400 == 0

if is_divisible_by_4 and is_not_divisible_by_100 or is_divisible_by_400:
    print(year, "是闰年")
else:
    print(year, "不是闰年")

注意事项:在处理多个条件时,注意运算符的优先级。

3. if-elif-else 语句

用途:用于根据多个条件选择执行不同的代码块。

语法:

if condition1:
    # 条件 1 为真时执行的代码
elif condition2:
    # 条件 2 为真时执行的代码
else:
    # 其他情况执行的代码

示例:根据成绩等级输出评语。

score = 85

if score >= 90:
    print("优秀")
elif score >= 70:
    print("良好")
else:
    print("加油")

输出:

良好

解释:首先检查 score >= 90,如果为真,则打印“优秀”。否则,再检查 score >= 70,如果为真,则打印“良好”。否则,打印“加油”。

技巧:可以根据实际情况添加更多的 elif 分支。

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("合格")
elif score >= 60:
    print("及格")
else:
    print("不及格")

注意事项:在编写多个条件分支时,注意顺序的重要性,确保每个条件都能正确地被评估。

进阶的条件控制技术

1. 嵌套 if 语句

用途:在一个 if 语句内部再包含另一个 if 语句,实现更复杂的逻辑判断。

语法:

if outer_condition:
    if inner_condition:
        # 条件为真时执行的代码
    else:
        # 内部条件为假时执行的代码
else:
    # 外部条件为假时执行的代码

示例:判断一个用户是否成年以及是否有驾驶资格。

age = 20
has_driving_license = True

if age >= 18:
    if has_driving_license:
        print("你可以开车")
    else:
        print("你需要考取驾照")
else:
    print("你还未成年")

输出:

你可以开车

解释:首先检查年龄是否大于等于 18 岁,如果为真,则进一步检查是否有驾驶执照。否则,打印“你还未成年”。

技巧:嵌套 if 语句可以用来处理多个层次的逻辑关系。

if age >= 18:
    if has_driving_license:
        print("你可以开车")
    elif age >= 16:
        print("你可以申请驾照")
    else:
        print("你需要等到 16 岁才能申请驾照")
else:
    print("你还未成年")

注意事项:嵌套层数过多可能会导致代码难以阅读和维护,尽量保持简洁。

2. 使用逻辑运算符

用途:通过逻辑运算符(如 and、or 和 not)来组合多个条件,实现更复杂的逻辑判断。

示例:判断用户是否满足特定条件。

age = 25
is_student = False

if age >= 18 and not is_student:
    print("你可以申请信用卡")
else:
    print("你不满足条件")

输出:

你可以申请信用卡

解释:这里使用了 and 运算符和 not 运算符。只有当年龄大于等于 18 岁并且不是学生时,才会打印“你可以申请信用卡”。

技巧:合理使用逻辑运算符可以使条件判断更加简洁明了。

if age >= 18 and (not is_student or income >= 20000):
    print("你可以申请信用卡")
else:
    print("你不满足条件")

注意事项:在使用逻辑运算符时,要注意运算符的优先级,必要时使用括号来明确优先级。

3. 使用条件表达式

用途:条件表达式是一种简化形式的 if-else 语句,可以在一行内实现条件判断。

语法:

value = some_value if condition else another_value

示例:根据年龄返回相应的评价。

age = 25

result = "成年人" if age >= 18 else "未成年人"
print(result)

输出:

成年人

解释:这里使用了条件表达式 age >= 18,如果条件为真,则 result 被赋值为 "成年人",否则赋值为 "未成年人"。

技巧:条件表达式适用于简单的条件判断,可以使代码更加简洁。

score = 85
grade = "优秀" if score >= 90 else ("良好" if score >= 70 else "加油")
print(grade)

注意事项:条件表达式虽然简洁,但嵌套过多会降低代码的可读性,要适度使用。

4. 使用列表推导式和条件表达式

用途:通过列表推导式结合条件表达式来简化循环和条件判断。

语法:

result = [expression for item in iterable if condition]

示例:找出一个列表中所有偶数的平方。

numbers = [1, 2, 3, 4, 5, 6]

squares = [num ** 2 for num in numbers if num % 2 == 0]
print(squares)

输出:

[4, 16, 36]

解释:这里使用了列表推导式 [num ** 2 for num in numbers if num % 2 == 0],只有当 num 是偶数时,才会计算其平方并加入到结果列表中。

技巧:列表推导式结合条件表达式可以使代码更加简洁。

even_squares = [num ** 2 if num % 2 == 0 else num for num in numbers]
print(even_squares)

注意事项:列表推导式虽然简洁,但嵌套过多会降低代码的可读性,要适度使用。

5.实战案例:成绩管理系统

假设我们已经实现了基本的成绩管理系统,现在将进一步完善系统功能,使其能够处理更多的场景。

需求: 1. 输入学生的姓名、年龄和分数。 2. 根据分数输出相应的评价(优秀、良好、合格、及格、不及格)。 3. 记录学生的基本信息,并保存到文件中。 4. 提供查询功能,允许用户查询学生的成绩和评价。

步骤:

(1) 输入学生信息:

获取学生的姓名、年龄和分数。

检查输入的有效性。

import json

def get_student_info():
    name = input("请输入学生姓名:")
    age = input("请输入学生年龄:")
    score = input("请输入学生成绩:")

    if not name.strip() or not age.isdigit() or not score.isdigit():
        print("输入有误,请重新输入!")
        return None

    age = int(age)
    score = int(score)

    return {"name": name, "age": age, "score": score}

(2) 根据分数输出评价:

判断分数范围并输出相应的评价。

def evaluate_score(score):
    if score >= 90:
        return "优秀"
    elif score >= 80:
        return "良好"
    elif score >= 70:
        return "合格"
    elif score >= 60:
        return "及格"
    else:

(3) 记录学生信息:

将学生信息保存到 JSON 文件中。

def save_student_info(student_info):
    with open("students.json", "a") as file:
        json.dump(student_info, file)
        file.write("\n")

(4) 查询学生信息:

读取文件中的学生信息,并根据姓名查询成绩和评价。

def query_student_info(name):
    with open("students.json", "r") as file:
        students = [json.loads(line) for line in file]

    for student in students:
        if student["name"] == name:
            evaluation = evaluate_score(student["score"])
            print(f"{name} 的成绩为 {evaluation}")
            return

    print(f"没有找到 {name} 的信息")

(5) 主程序:

  • 输入学生信息。
  • 输出评价。
  • 保存学生信息。
  • 查询学生信息。
def main():
    while True:
        print("请选择操作:")
        print("1. 添加学生信息")
        print("2. 查询学生信息")
        print("3. 退出")
        choice = input("请输入选项:")

        if choice == "1":
            student_info = get_student_info()
            if student_info:
                evaluation = evaluate_score(student_info["score"])
                print(f"{student_info['name']} 的成绩为 {evaluation}")
                save_student_info(student_info)
        elif choice == "2":
            name = input("请输入学生姓名:")
            query_student_info(name)
        elif choice == "3":
            break
        else:
            print("无效的选项,请重新输入!")

if __name__ == "__main__":
    main()

运行结果:

请选择操作:
**1.** 添加学生信息
**2.** 查询学生信息
**3.** 退出
请输入选项:1
请输入学生姓名:张三
请输入学生年龄:20
请输入学生成绩:85
张三 的成绩为 良好
请选择操作:
**1.** 添加学生信息
**2.** 查询学生信息
**3.** 退出
请输入选项:2
请输入学生姓名:张三
张三 的成绩为 良好
请选择操作:
**1.** 添加学生信息
**2.** 查询学生信息
**3.** 退出
请输入选项:3

分析:

  • 输入检查:在获取学生信息时,检查了姓名、年龄和分数的有效性,避免了无效输入。
  • 条件判断:使用了嵌套的 if-elif-else 语句来判断分数范围,并输出相应的评价。
  • 数据保存:将学生信息以 JSON 格式保存到文件中,方便后续查看和管理。
  • 查询功能:通过读取文件中的数据,并根据姓名查询学生的成绩和评价。

技巧和注意事项:

  • 在输入检查时,使用了字符串和整数类型的转换函数,确保数据类型的一致性。
  • 条件判断时,合理安排了条件的顺序,使得逻辑更加清晰。
  • 数据保存时,使用了文件操作函数,确保数据的安全性和持久性。
  • 查询功能时,使用了列表推导式来读取文件中的数据,并通过循环查找指定的学生信息。
责任编辑:赵宁宁 来源: 手把手PythonAI编程
相关推荐

2024-09-23 10:30:00

Python编程条件控制

2024-05-28 14:45:00

2010-03-18 16:37:13

Python 程序流程

2011-09-20 15:19:15

Python

2020-06-10 08:37:21

JavaScript重构技巧

2023-10-31 08:15:51

2017-03-13 16:48:05

Git技巧

2023-07-25 11:22:31

2019-06-27 10:35:40

JavaScript条件式匹配条件

2022-11-04 15:56:41

2011-04-07 16:46:09

Solaris

2023-02-02 14:06:00

history命令技巧

2024-06-03 09:00:00

Python代码

2022-07-04 08:51:43

条件语句JavaScript

2010-05-20 16:49:18

2020-11-16 11:56:57

机器学习技术工具

2022-04-02 09:56:44

pipPython

2017-09-06 12:42:45

AndroidGradle开发技巧

2011-07-11 13:52:45

Windows控制台

2024-03-06 10:50:30

云计算云实例云提供商
点赞
收藏

51CTO技术栈公众号