Skip to content

第16章:基础实战

实战1:简单计算器

16.1 需求分析

实现一个简单的计算器,具有以下功能:

  • 支持加减乘除、取余、幂运算
  • 支持用户重复输入
  • 捕获输入错误异常
  • 友好的用户交互

16.2 核心实现

  • 输入输出:使用input()获取用户输入,使用print()显示结果
  • 运算符:使用算术运算符和**运算符
  • 条件判断:使用if-elif-else结构处理不同运算符
  • 循环:使用while循环实现重复计算
  • 异常处理:使用try-except捕获输入错误和除数为0的异常

16.3 实操

python
"""
简单计算器
功能:实现加减乘除、取余、幂运算,支持重复计算,捕获异常
"""

def calculate():
    """计算器主函数"""
    print("=== 简单计算器 ===")
    print("支持的运算:+", "-", "*", "/", "%", "**")
    print("输入 'exit' 退出计算器")
    print("=================")
    
    while True:
        # 获取第一个数
        num1_input = input("请输入第一个数:")
        if num1_input.lower() == "exit":
            print("计算器已退出")
            break
        
        # 获取运算符
        operator = input("请输入运算符(+、-、*、/、%、**):")
        if operator.lower() == "exit":
            print("计算器已退出")
            break
        
        # 获取第二个数
        num2_input = input("请输入第二个数:")
        if num2_input.lower() == "exit":
            print("计算器已退出")
            break
        
        try:
            # 转换为数字
            num1 = float(num1_input)
            num2 = float(num2_input)
            
            # 执行运算
            if operator == "+":
                result = num1 + num2
                print(f"{num1} + {num2} = {result}")
            elif operator == "-":
                result = num1 - num2
                print(f"{num1} - {num2} = {result}")
            elif operator == "*":
                result = num1 * num2
                print(f"{num1} * {num2} = {result}")
            elif operator == "/":
                if num2 == 0:
                    print("错误:除数不能为0")
                else:
                    result = num1 / num2
                    print(f"{num1} / {num2} = {result}")
            elif operator == "%":
                if num2 == 0:
                    print("错误:除数不能为0")
                else:
                    result = num1 % num2
                    print(f"{num1} % {num2} = {result}")
            elif operator == "**":
                result = num1 ** num2
                print(f"{num1} ** {num2} = {result}")
            else:
                print("错误:不支持的运算符")
        except ValueError:
            print("错误:请输入有效的数字")
        except Exception as e:
            print(f"错误:{e}")
        finally:
            print("-----------------")

# 运行计算器
if __name__ == "__main__":
    calculate()

运行结果

=== 简单计算器 ===
支持的运算:+ - * / % **
输入 'exit' 退出计算器
=================
请输入第一个数:10
请输入运算符(+、-、*、/、%、**):+
请输入第二个数:5
10.0 + 5.0 = 15.0
-----------------
请输入第一个数:10
请输入运算符(+、-、*、/、%、**):/
请输入第二个数:0
错误:除数不能为0
-----------------
请输入第一个数:abc
请输入运算符(+、-、*、/、%、**):+
请输入第二个数:5
错误:请输入有效的数字
-----------------
请输入第一个数:exit
计算器已退出

实战2:学生信息管理系统

16.4 需求分析

实现一个学生信息管理系统,具有以下功能:

  • 添加学生信息(姓名、学号、年龄、成绩)
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 展示所有学生信息
  • 支持退出系统

16.5 核心实现

  • 列表:使用列表存储学生信息
  • 字典:使用字典存储每个学生的详细信息
  • 函数:将不同功能封装为函数
  • 循环:使用while循环实现菜单选择
  • 条件判断:使用if-elif-else结构处理不同操作

16.6 实操

python
"""
学生信息管理系统
功能:添加、删除、修改、查询、展示学生信息
"""

# 存储学生信息的列表
students = []


def display_menu():
    """显示菜单"""
    print("\n=== 学生信息管理系统 ===")
    print("1. 添加学生信息")
    print("2. 删除学生信息")
    print("3. 修改学生信息")
    print("4. 查询学生信息")
    print("5. 展示所有学生信息")
    print("6. 退出系统")
    print("========================")


def add_student():
    """添加学生信息"""
    print("\n=== 添加学生信息 ===")
    name = input("请输入姓名:")
    student_id = input("请输入学号:")
    age = input("请输入年龄:")
    score = input("请输入成绩:")
    
    # 验证输入
    try:
        age = int(age)
        score = float(score)
    except ValueError:
        print("错误:年龄必须是整数,成绩必须是数字")
        return
    
    # 检查学号是否已存在
    for student in students:
        if student['id'] == student_id:
            print("错误:学号已存在")
            return
    
    # 添加学生信息
    student = {
        'name': name,
        'id': student_id,
        'age': age,
        'score': score
    }
    students.append(student)
    print("添加成功!")


def delete_student():
    """删除学生信息"""
    print("\n=== 删除学生信息 ===")
    student_id = input("请输入要删除的学生学号:")
    
    for student in students:
        if student['id'] == student_id:
            students.remove(student)
            print("删除成功!")
            return
    
    print("错误:未找到该学号的学生")


def update_student():
    """修改学生信息"""
    print("\n=== 修改学生信息 ===")
    student_id = input("请输入要修改的学生学号:")
    
    for student in students:
        if student['id'] == student_id:
            print(f"当前信息:姓名={student['name']}, 年龄={student['age']}, 成绩={student['score']}")
            
            # 修改信息
            name = input("请输入新姓名(按回车保持不变):")
            age = input("请输入新年龄(按回车保持不变):")
            score = input("请输入新成绩(按回车保持不变):")
            
            if name:
                student['name'] = name
            if age:
                try:
                    student['age'] = int(age)
                except ValueError:
                    print("错误:年龄必须是整数")
                    return
            if score:
                try:
                    student['score'] = float(score)
                except ValueError:
                    print("错误:成绩必须是数字")
                    return
            
            print("修改成功!")
            return
    
    print("错误:未找到该学号的学生")


def search_student():
    """查询学生信息"""
    print("\n=== 查询学生信息 ===")
    student_id = input("请输入要查询的学生学号:")
    
    for student in students:
        if student['id'] == student_id:
            print(f"姓名:{student['name']}")
            print(f"学号:{student['id']}")
            print(f"年龄:{student['age']}")
            print(f"成绩:{student['score']}")
            return
    
    print("错误:未找到该学号的学生")


def display_all_students():
    """展示所有学生信息"""
    print("\n=== 所有学生信息 ===")
    if not students:
        print("暂无学生信息")
        return
    
    print(f"{'姓名':<10}{'学号':<15}{'年龄':<5}{'成绩':<10}")
    print("-" * 40)
    
    for student in students:
        print(f"{student['name']:<10}{student['id']:<15}{student['age']:<5}{student['score']:<10}")


def main():
    """主函数"""
    while True:
        display_menu()
        choice = input("请输入选择(1-6):")
        
        if choice == "1":
            add_student()
        elif choice == "2":
            delete_student()
        elif choice == "3":
            update_student()
        elif choice == "4":
            search_student()
        elif choice == "5":
            display_all_students()
        elif choice == "6":
            print("系统已退出")
            break
        else:
            print("错误:请输入有效的选择")

# 运行系统
if __name__ == "__main__":
    main()

运行结果

=== 学生信息管理系统 ===
1. 添加学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 展示所有学生信息
6. 退出系统
========================
请输入选择(1-6):1

=== 添加学生信息 ===
请输入姓名:张三
请输入学号:2023001
请输入年龄:18
请输入成绩:95
添加成功!

=== 学生信息管理系统 ===
1. 添加学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 展示所有学生信息
6. 退出系统
========================
请输入选择(1-6):5

=== 所有学生信息 ===
姓名      学号            年龄  成绩
----------------------------------------
张三      2023001         18   95.0

=== 学生信息管理系统 ===
1. 添加学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 展示所有学生信息
6. 退出系统
========================
请输入选择(1-6):6
系统已退出

实战3:文本文件处理

16.7 需求分析

实现一个文本文件处理程序,具有以下功能:

  • 读取文本文件中的内容
  • 统计文本长度
  • 统计单词数量
  • 将统计结果写入新的文本文件

16.8 核心实现

  • 文件读写:使用open()函数和with语句
  • 字符串操作:使用字符串方法处理文本
  • 异常处理:捕获文件不存在、编码错误等异常

16.9 实操

python
"""
文本文件处理
功能:读取文本文件,统计文本长度和单词数量,将结果写入新文件
"""

def process_text_file(input_file, output_file):
    """处理文本文件"""
    try:
        # 读取文件
        with open(input_file, "r", encoding="utf-8") as f:
            content = f.read()
        
        # 统计文本长度
        text_length = len(content)
        
        # 统计单词数量(简单处理,按空格分割)
        words = content.split()
        word_count = len(words)
        
        # 生成统计结果
        result = f"文本文件:{input_file}\n"
        result += f"文本长度:{text_length} 字符\n"
        result += f"单词数量:{word_count}\n"
        result += f"\n原文本内容:\n{content}"
        
        # 写入结果到新文件
        with open(output_file, "w", encoding="utf-8") as f:
            f.write(result)
        
        print(f"处理完成!统计结果已写入 {output_file}")
        print(f"文本长度:{text_length} 字符")
        print(f"单词数量:{word_count} 个")
        
    except FileNotFoundError:
        print(f"错误:文件 {input_file} 不存在")
    except UnicodeDecodeError:
        print(f"错误:文件 {input_file} 编码错误,请确保文件是UTF-8编码")
    except Exception as e:
        print(f"错误:{e}")

# 测试
if __name__ == "__main__":
    input_file = "test.txt"  # 替换为实际的输入文件路径
    output_file = "result.txt"  # 输出文件路径
    process_text_file(input_file, output_file)

运行结果

假设test.txt文件内容为:

Hello, Python!
Welcome to text file processing.
This is a test file.

运行结果:

处理完成!统计结果已写入 result.txt
文本长度:63 字符
单词数量:11 个

result.txt文件内容:

文本文件:test.txt
文本长度:63 字符
单词数量:11 个

原文本内容:
Hello, Python!
Welcome to text file processing.
This is a test file.

实战4:随机验证码生成器

16.10 需求分析

实现一个随机验证码生成器,具有以下功能:

  • 生成6位随机验证码(包含数字、大写字母、小写字母)
  • 支持用户刷新验证码
  • 验证用户输入是否正确

16.11 核心实现

  • random模块:使用random模块生成随机数
  • 字符串操作:使用字符串方法处理验证码
  • 循环:使用while循环实现验证码验证
  • 条件判断:使用if-else结构处理验证结果

16.12 实操

python
"""
随机验证码生成器
功能:生成6位随机验证码,支持刷新,验证用户输入
"""

import random
import string

def generate_captcha(length=6):
    """生成随机验证码"""
    # 定义验证码字符集
    characters = string.ascii_letters + string.digits  # 包含大小写字母和数字
    
    # 生成指定长度的验证码
    captcha = ''.join(random.choice(characters) for _ in range(length))
    return captcha

def verify_captcha():
    """验证码验证"""
    while True:
        # 生成验证码
        captcha = generate_captcha()
        print(f"\n验证码:{captcha}")
        
        # 获取用户输入
        user_input = input("请输入验证码(输入 'refresh' 刷新验证码,输入 'exit' 退出):")
        
        if user_input.lower() == "exit":
            print("验证码验证已退出")
            break
        elif user_input.lower() == "refresh":
            print("正在刷新验证码...")
            continue
        
        # 验证输入
        if user_input == captcha:
            print("验证码正确!")
            # 验证码正确后可以执行后续操作
            break
        else:
            print("验证码错误,请重新输入")

# 运行验证码验证
if __name__ == "__main__":
    print("=== 验证码验证系统 ===")
    verify_captcha()

运行结果

=== 验证码验证系统 ===

验证码:3Ab7Yz
请输入验证码(输入 'refresh' 刷新验证码,输入 'exit' 退出):3Ab7Yz
验证码正确!

另一种情况:

=== 验证码验证系统 ===

验证码:X5pQ2R
请输入验证码(输入 'refresh' 刷新验证码,输入 'exit' 退出):X5pQ2
验证码错误,请重新输入

验证码:X5pQ2R
请输入验证码(输入 'refresh' 刷新验证码,输入 'exit' 退出):refresh
正在刷新验证码...

验证码:7Tf9Gh
请输入验证码(输入 'refresh' 刷新验证码,输入 'exit' 退出):7Tf9Gh
验证码正确!

© 2026 编程马·菜鸟教程 版权所有