在青训营学习的第一天| 豆包MarsCode AI刷题

38 阅读4分钟

我的学习之旅:AI 在编程中加深对 range 函数理解

在编程学习的过程中,理解常用的控制结构是提升编程能力的关键。range 函数作为 Python 中常用的工具,在进行循环时具有非常广泛的应用。最初,我在使用 range 时,常常感到困惑,不知道如何根据不同的需求来正确地使用它。但随着 AI 的帮助,我逐渐掌握了 range 函数在多种场景下的应用技巧,并通过解决一些实际问题,深化了对它的理解。

AI 提供的优化:解决子串和的整除问题

在刷题的时候,我遇到了一道题目:计算一个序列中有多少个连续子序列的和能够被给定的整数 b 整除。最初,我的解法是通过两重循环来遍历所有可能的子序列,并计算它们的和。而我因为对range函数无法深入理解,所以在遍历子序列的时候遇到了瓶颈。AI 则提供了一个简洁、有效的思路,尤其是让我通过灵活使用 range 来提高代码效率。AI 的优化思路帮助我深入理解了 range 在这种类型的题目中的多种应用,尤其是在两重循环中的控制逻辑。

多种 range 的应用:内层和外层循环的协调

AI 对我的解法进行优化时,主要是通过 range 函数在外层和内层循环中巧妙配合,避免了多次不必要的重复计算。比如,在外层循环中, range 用于遍历所有的起始位置 i,而在内层循环中, range 又帮助我优化了从某个起始位置到终点的遍历。这个优化让我不仅理解了 range 的灵活性,还学到了如何通过调整循环的范围和步长来解决实际问题。

以下是 AI 给出的优化后的代码,它通过一次性遍历所有可能的子序列,计算其和,并在每次计算后判断是否能够被给定的数 b 整除:

python
def solution(n, b, sequence):
    count = 0  # 用于统计符合条件的子序列数量
    
    # 遍历所有可能的子序列
    for i in range(n):
        total_sum = 0  # 用于计算当前子序列的和
        for j in range(i, n):
            total_sum += sequence[j]
            if total_sum % b == 0:
                count += 1
    
    return count

在这个优化版本的代码中,AI 强调了如何在内外循环中调整 range 的应用。外层循环使用 range(n) 遍历所有的起始位置 i,内层循环则通过 range(i, n) 确保每次从一个新的起始位置 i 开始,逐步扩展到序列的结尾。在每次扩展过程中,我们将当前子序列的和累加,并在每次判断时验证其是否能被 b 整除。

学到的 range 函数技巧

通过 AI 的帮助,我逐渐掌握了如何在不同场景下使用 range。以下是一些我学到的技巧:

  1. 控制起始点和终止点: range(start, end) 使得我们能够灵活控制循环的起始点和终止点,确保我们遍历的范围精确到每个需要计算的子序列。
  2. 优化多重循环: 在解决连续子序列问题时,通过灵活使用 range 控制内外循环的范围,可以有效避免不必要的重复计算,从而提高程序效率。
  3. 调整步长: range(start, end, step) 允许我们控制步长,虽然在当前问题中并未使用步长,但它在一些问题中非常有用,能够帮助我们以更灵活的方式遍历序列。

结语:AI 的加速学习之旅

通过 AI 的帮助,我不仅提升了对 range 函数的理解,还在实际的编程问题中应用了这些技巧,优化了我的代码。AI 不仅为我提供了正确的解题思路,更重要的是,它让我意识到如何灵活运用编程中的常见工具,从而提高代码的效率和可读性。