学习进度条

每日总结

今日统计

  • 时间:1小时
  • 代码量:约100行
  • 博客:1篇(总结实验内容与心得)
  • 知识点:Python环境配置、数据结构、算法设计、数学与编程结合。

今日学习内容

  1. Python环境配置与扩展库安装

    • 学习了如何安装Python解释器,并配置Eclipse+PyDev开发环境。
    • 掌握了常用扩展库(如numpypandasmatplotlib等)的安装方法,通过pip安装并验证。
    • 示例
      pip install numpy pandas matplotlib
      
  2. Python基础语法与数据结构

    • 复习了Python的基本控制结构(条件语句、循环语句)和函数定义。
    • 深入学习了列表、元组、字典、集合和字符串的特性及操作。
    • 示例
      # 列表操作
      lst = [1, 2, 3]
      lst.append(4)  # 添加元素
      print(lst)     # 输出: [1, 2, 3, 4]
      
  3. 算法实现与问题解决

    • 完成了多个编程任务,包括排列组合序列生成、蒙特·卡罗法计算圆周率、验证6174猜想等。
    • 实现了LRU页面调度算法、动态规划解决爬楼梯问题、杨辉三角形生成等。
    • 示例(蒙特·卡罗法计算圆周率):
      import random
      def estimate_pi(n):
          count = 0
          for _ in range(n):
              x, y = random.uniform(-1, 1), random.uniform(-1, 1)
              if x**2 + y**2 <= 1:
                  count += 1
          return 4 * count / n
      print(estimate_pi(100000))  # 输出近似π值
      
  4. 数学与编程结合

    • 通过牛顿迭代法求解方程实根,筛法求素数等任务,理解了数学算法在编程中的应用。
    • 示例(筛法求素数):
      def sieve(n, m):
          is_prime = [True] * (m + 1)
          is_prime[0] = is_prime[1] = False
          for i in range(2, int(m**0.5) + 1):
              if is_prime[i]:
                  for j in range(i*i, m+1, i):
                      is_prime[j] = False
          return [i for i in range(n, m+1) if is_prime[i]]
      print(sieve(10, 50))  # 输出[11, 13, 17, ..., 47]
      

代码功能解析

  1. 排列组合序列生成

    • 使用itertools.permutationscombinations生成排列和组合。
    • 输入n个字母,输出所有可能的m个字母的排列和组合。
  2. LRU页面调度算法

    • 模拟缺页时淘汰最近最少使用的页面,统计缺页次数。
    • 通过队列管理页面访问顺序,实现淘汰逻辑。
  3. 动态规划解决爬楼梯问题

    • 定义状态转移方程ways[i] = ways[i-1] + ways[i-2] + ways[i-3],计算上楼梯的方法数。
  4. 杨辉三角形生成

    • 使用二维列表动态生成杨辉三角形,格式化输出。

今日收获

  • 技术掌握:熟悉了Python开发环境配置、数据结构操作和常用算法实现。
  • 问题解决:通过调试和优化代码,解决了LRU算法和动态规划问题中的逻辑难点。
  • 数学应用:将数学方法(如蒙特·卡罗、牛顿迭代法)转化为代码,提升算法设计能力。

明日计划

  • 学习Python面向对象编程(类与对象)。
  • 探索更多算法(如排序、搜索)的实现。
  • 尝试用Python解决实际项目中的问题。

posted @ 2025-04-27 21:37  haoyinuo  阅读(16)  评论(0)    收藏  举报