第四天

83 阅读3分钟

在Python编程中,函数和模块是组织代码、提高代码复用性和可维护性的重要手段。今天,我深入学习了Python的函数和模块。

函数是一段可重用的代码块,它接受输入参数并返回结果。我学习了如何定义和使用函数,包括函数的命名规则、参数传递方式(值传递和引用传递)、返回值等。通过编写一些示例函数,我加深了对函数的理解,如计算两个数的最大值、判断一个数是否为素数等。

模块则是将相关的函数、类和变量组织在一起的文件。通过导入模块,我们可以使用其他程序员编写的代码,从而避免重复造轮子。我学习了如何创建和使用模块,包括模块的命名规则、导入模块的方式(import语句)、使用模块中的函数和类等。

在学习过程中,我还了解到Python提供了许多标准库和第三方库,这些库包含了大量的函数和模块,可以帮助我们快速实现各种功能。我尝试了一些常用的标准库模块,如math模块(用于数学计算)、datetime模块(用于处理日期和时间)等。

通过今天的学习,我掌握了Python的函数和模块的使用方法,为后续学习更高级的编程技巧打下了坚实的基础。同时,我也深刻体会到了代码复用和模块化编程的重要性。

问题理解

我们需要通过对字符串 S 进行若干次操作,使其变成字符串 T 的一个前缀。操作可以是修改 S 的某一个字符,或者删除 S 末尾的字符。目标是计算出最少需要多少次操作。

解题思路

  1. 比较字符串长度:首先,比较 ST 的长度。如果 S 的长度大于 T 的长度,那么 S 必须删除多余的尾部字符,直到长度与 T 相同。
  2. 逐字符比较:从字符串的开头逐字符比较 ST,直到 S 的某个字符与 T 不匹配。
  3. 计算操作次数
    • 如果 S 的某个字符与 T 不匹配,需要进行修改操作。
    • 如果 S 的长度大于 T 的长度,需要进行删除操作。

代码提示

以下是一些代码提示,帮助你实现这个逻辑:

def solution(S: str, T: str) -> int:
    # 初始化操作次数
    operations = 0
    
    # 获取两个字符串的最小长度
    min_length = min(len(S), len(T))
    
    # 逐字符比较
    for i in range(min_length):
        if S[i] != T[i]:
            # 如果字符不匹配,增加操作次数
            operations += 1
    
    # 如果 S 的长度大于 T 的长度,需要删除多余的尾部字符
    if len(S) > len(T):
        operations += len(S) - len(T)
    
    return operations

if __name__ == '__main__':
    print(solution("aba", "abb") == 1)
    print(solution("abcd", "efg") == 4)
    print(solution("xyz", "xy") == 1)
    print(solution("hello", "helloworld") == 0)
    print(solution("same", "same") == 0)

关键步骤注释

  1. 初始化操作次数operations = 0
  2. 获取两个字符串的最小长度min_length = min(len(S), len(T))
  3. 逐字符比较for i in range(min_length):
  4. 字符不匹配时增加操作次数if S[i] != T[i]: operations += 1
  5. 处理多余尾部字符if len(S) > len(T): operations += len(S) - len(T)