python (第四章 函数与模块)

第2周学习计划:函数与模块

目标:掌握函数定义与调用、模块的使用,以及文件读写基础。

学习内容总览
  1. 函数:定义、参数、返回值、匿名函数(lambda)。
  2. 模块:导入标准库、创建自定义模块。
  3. 文件操作:读写文本文件。
  4. 实践:优化之前的计算器程序,用函数封装功能。

第一部分:函数

1. 函数基础
  • 定义:用 def 关键字创建函数,封装可重用代码。
  • 语法
def 函数名(参数):
    # 代码块
    return 返回值
  • 示例
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出:8
2. 参数与返回值
  • 默认参数:给参数设置默认值。
  • 多返回值:用逗号分隔多个返回值。
  • 示例
def greet(name, message="你好"):
    return f"{message}{name}!", len(name)

greeting, name_len = greet("小明")
print(greeting)  # 输出:你好,小明!
print(name_len)  # 输出:2
3. 匿名函数(lambda)
  • 定义:简洁的单行函数,用 lambda 创建。
  • 示例
double = lambda x: x * 2
print(double(5))  # 输出:10

第二部分:模块

  • 定义:模块是一个包含函数、变量等的 Python 文件,可以被其他文件导入。
  • 导入方式
    • import 模块名
    • from 模块名 import 函数名
  • 示例
import math
print(math.sqrt(16))  # 输出:4.0

from random import randint
print(randint(1, 10))  # 输出:1-10 之间的随机数
  • 自定义模块
    • 创建文件 my_module.py,写一个函数:
# my_module.py
def say_hello():
    print("Hello from my module!")
  • 在另一个文件导入:
import my_module
my_module.say_hello()  # 输出:Hello from my module!

第三部分:文件操作

  • 基本操作
    • 读取:open(文件名, 'r')
    • 写入:open(文件名, 'w')
    • 追加:open(文件名, 'a')
  • 示例
# 写入文件
with open("test.txt", "w") as file:
    file.write("Hello, Python!\n")

# 读取文件
with open("test.txt", "r") as file:
    content = file.read()
    print(content)  # 输出:Hello, Python!

实践任务:优化计算器程序

目标
用函数重构之前的计算器程序,添加文件记录功能,每次计算结果保存到文件中。

代码实现

以下是优化后的版本:

def calculate(num1, operator, num2):
    """执行计算并返回结果"""
    if operator == '+':
        return num1 + num2
    elif operator == '-':
        return num1 - num2
    elif operator == '*':
        return num1 * num2
    elif operator == '/':
        if num2 == 0:
            raise ZeroDivisionError("除数不能为零!")
        return num1 / num2
    else:
        raise ValueError("无效的运算符!")

def save_result(num1, operator, num2, result):
    """将计算结果保存到文件"""
    with open("calc_history.txt", "a") as file:
        file.write(f"{num1} {operator} {num2} = {result}\n")

def main():
    valid_operators = ['+', '-', '*', '/']
    while True:
        try:
            num1 = float(input("请输入第一个数字:"))
            operator = input("请输入运算符(+、-、*、/):")
            if operator not in valid_operators:
                print("错误:运算符必须是 +、-、*、/ 之一!")
                continue
            num2 = float(input("请输入第二个数字:"))

            result = calculate(num1, operator, num2)
            print(f"{num1} {operator} {num2} = {result}")
            save_result(num1, operator, num2, result)

        except ValueError as e:
            if str(e) == "无效的运算符!":
                print(e)
            else:
                print("错误:请输入有效的数字!")
        except ZeroDivisionError as e:
            print(f"错误:{e}")

        choice = input("是否继续计算?(y/n):")
        if choice.lower() != 'y':
            print("谢谢使用!")
            break

if __name__ == "__main__":
    main()

代码讲解
  1. 函数封装

    • calculate():处理计算逻辑,返回结果。
    • save_result():将结果追加到文件。
    • main():主程序循环,调用其他函数。
  2. 异常处理

    • calculate() 中抛出异常,由 main() 捕获。
    • 区分 ValueError(数字输入错误或运算符错误)。
  3. 文件操作

    • with open("calc_history.txt", "a") 追加写入,每次计算记录一行。

动手实践
  1. 新建文件 calculator_v2.py,复制代码。
  2. 运行程序,试试:
    • 输入 5 + 3,结果显示并记录。
    • 输入 6 / 0,提示除零错误。
    • 检查 calc_history.txt,看看记录。
  3. 输入 n 退出。

小挑战
  1. 读取历史:加个功能,显示 calc_history.txt 中的记录。
  2. 默认参数:给 calculate() 加默认参数。
  3. 模块化:把 calculatesave_result 放入自定义模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值