当前位置: 首页 > news >正文

Python星球日记 - 第15天:综合复习(回顾前14天所学知识)

🌟引言

上一篇:Python星球日记 - 第14天:异常处理与调试

名人说:不要人夸颜色好,只留清气满乾坤(王冕《墨梅》)
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

目录

    • 一、前两周知识点回顾
      • 1. 第一周内容回顾
        • 1.1 Python环境搭建
        • 1.2 基础数据类型
        • 1.3 运算符
        • 1.4 控制流结构
      • 2. 第二周内容回顾
        • 2.1 复合数据类型
        • 2.2 函数
        • 2.3 模块和包
        • 2.4 文件操作
    • 二、常见问题解答
      • 1. Python中的变量作用域
      • 2. 列表和元组的区别
      • 3. Python中的深拷贝与浅拷贝
      • 4. 如何处理异常
    • 三、练习项目:简易计算器
      • 1. 需求分析
      • 2. 代码实现
      • 3. 程序流程图
      • 4. 知识点分析
    • 四、学习路线图
    • 五、总结与展望
      • 1. 学习总结
      • 2. 后续学习方向

专栏介绍: Python星球日记专栏介绍(持续更新ing)
更多Python知识,请关注我、订阅专栏《 Python星球日记》,内容持续更新中…

欢迎来到Python星球🪐的第15天!

在这个编程宇宙中,我们已经完成了一段精彩的旅程,掌握了从变量、数据类型到函数、模块的各种Python基础知识。就像宇航员需要定期回顾飞行日志一样,学习编程也需要停下脚步,回头审视我们已经走过的路。

今天,我们将对前两周学习的内容进行全面梳理,解决你可能遇到的疑惑,并通过构建一个简易计算器项目,将所学知识融会贯通。系好安全带,让我们开始这次知识巩固之旅吧!

一、前两周知识点回顾

1. 第一周内容回顾

第一周我们从Python的安装配置开始,逐步学习了变量类型基本运算控制流结构等基础内容。

1.1 Python环境搭建
  • Python解释器的安装与配置
  • 集成开发环境(IDE)的选择:PyCharm、VS Code等
  • 编写并运行第一个print("Hello, Python!")程序
1.2 基础数据类型
  • 数值类型int(整数)、float(浮点数)、complex(复数)
  • 字符串(str):文本数据类型,支持多种操作和方法
  • 布尔类型(bool)TrueFalse,用于逻辑判断
  • 空值(None):表示没有值或缺少值

以下是Python基本数据类型的简要对比:

# 数值类型示例
integer_num = 10      # 整数
float_num = 3.14      # 浮点数
complex_num = 1+2j    # 复数

# 字符串示例
text = "Python星球日记"  

# 布尔值示例
is_learning = True

# 空值示例
empty_value = None

# 类型查看
print(type(integer_num))  # <class 'int'>
print(type(text))         # <class 'str'>
print(type(is_learning))  # <class 'bool'>
print(type(empty_value))  # <class 'NoneType'>

在这里插入图片描述

1.3 运算符
类型运算符描述示例结果
算术运算符+加法5 + 38
-减法5 - 32
*乘法5 * 315
/除法5 / 31.6666...
//整除(向下取整)5 // 31
%取余(模运算)5 % 32
**幂(次方)5 ** 3125
比较运算符==等于5 == 3False
!=不等于5 != 3True
>大于5 > 3True
<小于5 < 3False
>=大于等于5 >= 5True
<=小于等于5 <= 3False
逻辑运算符and逻辑与(两者都为真才为真)True and FalseFalse
or逻辑或(至少一个为真则为真)True or FalseTrue
not逻辑非(取反)not TrueFalse
赋值运算符=简单赋值x = 5x 的值变为 5
+=加法赋值x += 3等同于 x = x + 3
-=减法赋值x -= 3等同于 x = x - 3
*=乘法赋值x *= 3等同于 x = x * 3
/=除法赋值x /= 3等同于 x = x / 3
//=整除赋值x //= 3等同于 x = x // 3
%=取余赋值x %= 3等同于 x = x % 3
**=幂赋值x **= 3等同于 x = x ** 3
1.4 控制流结构
  • 条件语句ifelifelse
  • 循环结构for循环和while循环
  • 控制语句breakcontinuepass
# 条件语句示例
score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

# for循环示例
for i in range(5):
    print(i, end=" ")  # 输出:0 1 2 3 4

# while循环示例
count = 0
while count < 5:
    print(count, end=" ")  # 输出:0 1 2 3 4
    count += 1

2. 第二周内容回顾

第二周我们深入学习了复合数据类型函数模块文件操作等更进阶的内容。

2.1 复合数据类型
  • 列表(list):有序、可变的序列
  • 元组(tuple):有序、不可变的序列
  • 字典(dict):键值对的无序集合
  • 集合(set):无序、不重复元素的集合
# 列表示例
fruits = ["苹果", "香蕉", "橙子"]
fruits.append("葡萄")  # 添加元素
print(fruits[0])      # 访问元素:苹果

# 元组示例
coordinates = (10, 20)
# coordinates[0] = 15  # 错误!元组不可修改

# 字典示例
student = {"name": "小明", "age": 18, "score": 95}
print(student["name"])  # 访问值:小明

# 集合示例
unique_numbers = {1, 2, 3, 3, 4, 4, 5}
print(unique_numbers)  # 输出:{1, 2, 3, 4, 5}

在这里插入图片描述

2.2 函数
  • 内置函数:Python自带的函数,如print()len()
  • 自定义函数:使用def关键字定义
  • 参数类型:位置参数、关键字参数、默认参数、可变参数
  • 返回值:使用return语句返回数据
# 自定义函数示例
def calculate_area(length, width=1):
    """计算矩形面积的函数
    
    Args:
        length: 长度
        width: 宽度,默认为1
        
    Returns:
        矩形的面积
    """
    area = length * width
    return area

# 函数调用
print(calculate_area(5, 3))  # 输出:15
print(calculate_area(5))     # 使用默认参数,输出:5
2.3 模块和包
  • 模块导入:使用import语句
  • 常用标准库mathrandomdatetime
  • 第三方模块:通过pip安装,如numpypandas
# 模块导入示例
import math
import random
from datetime import datetime

# 使用模块函数
print(math.pi)                      # 圆周率
print(random.randint(1, 10))        # 1-10的随机整数
print(datetime.now().strftime("%Y-%m-%d"))  # 当前日期
2.4 文件操作
  • 文件打开与关闭open()函数和close()方法
  • 文件读写read()write()等方法
  • 上下文管理器with语句自动管理资源
# 文件写入示例
with open("example.txt", "w", encoding="utf-8") as file:
    file.write("Python星球日记\n")
    file.write("第15天:综合复习")

# 文件读取示例
with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

二、常见问题解答

1. Python中的变量作用域

变量作用域是指变量在程序中的可见范围。Python中主要有局部作用域全局作用域两种。

# 全局变量
global_var = "我是全局变量"

def test_scope():
    # 局部变量
    local_var = "我是局部变量"
    print(global_var)  # 可以访问全局变量
    print(local_var)   # 可以访问局部变量

test_scope()
print(global_var)      # 可以访问全局变量
# print(local_var)     # 错误!局部变量在函数外不可访问

如果要在函数内修改全局变量,需要使用global关键字:

counter = 0

def increase_counter():
    global counter
    counter += 1
    print(f"计数器值:{counter}")

increase_counter()  # 输出:计数器值:1
increase_counter()  # 输出:计数器值:2

2. 列表和元组的区别

尽管列表和元组都是有序集合,但它们有几个关键区别:

特性列表(List)元组(Tuple)
可变性可变不可变
语法[元素1, 元素2](元素1, 元素2)
性能较低较高
适用场景需要经常修改的数据不变的数据集,如坐标点
# 列表可以修改
my_list = [1, 2, 3]
my_list[0] = 10
print(my_list)  # 输出:[10, 2, 3]

# 元组不可修改
my_tuple = (1, 2, 3)
# my_tuple[0] = 10  # 这会引发TypeError

3. Python中的深拷贝与浅拷贝

当我们复制复合数据类型时,需要注意浅拷贝深拷贝的区别:

  • 浅拷贝(Shallow Copy):只复制对象的第一层引用
  • 深拷贝(Deep Copy):复制对象及其包含的所有嵌套对象
import copy

# 原始列表
original = [1, 2, [3, 4]]

# 赋值操作(引用相同对象)
reference = original

# 浅拷贝
shallow = copy.copy(original)

# 深拷贝
deep = copy.deepcopy(original)

# 修改嵌套列表
original[2][0] = 30

print("原始列表:", original)      # [1, 2, [30, 4]]
print("引用:", reference)        # [1, 2, [30, 4]]
print("浅拷贝:", shallow)        # [1, 2, [30, 4]]
print("深拷贝:", deep)           # [1, 2, [3, 4]]

在这里插入图片描述

4. 如何处理异常

Python中使用 try-except 语句处理异常:

try:
    # 可能引发异常的代码
    num = int(input("请输入一个数字:"))
    result = 10 / num
    print(f"结果是:{result}")
except ValueError:
    # 处理ValueError异常
    print("输入必须是数字!")
except ZeroDivisionError:
    # 处理除零异常
    print("不能除以零!")
except Exception as e:
    # 处理其他所有异常
    print(f"发生错误:{e}")
else:
    # 如果没有异常发生会执行
    print("计算成功完成!")
finally:
    # 无论是否有异常都会执行
    print("异常处理结束。")

在这里插入图片描述

三、练习项目:简易计算器

现在,让我们通过构建一个简易计算器来综合应用前两周学到的知识。

1. 需求分析

我们要实现一个具有以下功能的计算器

  • 基本算术运算:加、减、乘、除
  • 支持浮点数运算
  • 用户友好的界面
  • 异常处理

2. 代码实现

def add(x, y):
    """加法函数"""
    return x + y

def subtract(x, y):
    """减法函数"""
    return x - y

def multiply(x, y):
    """乘法函数"""
    return x * y

def divide(x, y):
    """除法函数"""
    if y == 0:
        raise ValueError("除数不能为零!")
    return x / y

def calculator():
    """简易计算器主函数"""
    # 显示欢迎信息
    print("=" * 30)
    print("欢迎使用Python简易计算器")
    print("=" * 30)
    
    while True:
        # 显示操作菜单
        print("\n请选择运算:")
        print("1. 加法")
        print("2. 减法")
        print("3. 乘法")
        print("4. 除法")
        print("5. 退出")
        
        try:
            # 获取用户选择
            choice = input("请输入选项(1/2/3/4/5): ")
            
            # 检查是否退出
            if choice == '5':
                print("感谢使用,再见!")
                break
            
            # 验证选择是否有效
            if choice not in ('1', '2', '3', '4'):
                print("无效的选择,请重试。")
                continue
            
            # 获取操作数
            num1 = float(input("请输入第一个数字: "))
            num2 = float(input("请输入第二个数字: "))
            
            # 执行选择的运算
            if choice == '1':
                print(f"{num1} + {num2} = {add(num1, num2)}")
            elif choice == '2':
                print(f"{num1} - {num2} = {subtract(num1, num2)}")
            elif choice == '3':
                print(f"{num1} × {num2} = {multiply(num1, num2)}")
            elif choice == '4':
                try:
                    result = divide(num1, num2)
                    print(f"{num1} ÷ {num2} = {result}")
                except ValueError as e:
                    print(f"错误:{e}")
        
        except ValueError:
            print("错误:请输入有效的数字。")
        except Exception as e:
            print(f"发生未知错误:{e}")

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

在这里插入图片描述

3. 程序流程图

下面是这个简易计算器的流程图,用于展示程序的执行逻辑:

在这里插入图片描述

4. 知识点分析

这个简易计算器项目涵盖了我们前两周学习的多个重要概念:

  • 函数定义与调用:为每种运算创建独立函数
  • 条件语句:使用if-elif-else结构进行选择
  • 循环结构:使用while循环持续提供计算服务
  • 异常处理:通过try-except捕获并处理可能的错误
  • 输入与输出:通过input()print()与用户交互
  • 模块化设计:通过if __name__ == "__main__":判断实现主函数入口

四、学习路线图

通过前两周的学习,我们已经掌握了Python的基础知识。下面是一张Python学习方向图,帮助你规划思考的学习方向:

在这里插入图片描述

  • 数据分析:学习NumPy、Pandas等库
  • Web开发:学习Django、Flask等框架
  • 人工智能:学习机器学习、深度学习等
  • 自动化脚本:学习系统管理、网络爬虫等

五、总结与展望

1. 学习总结

经过15天的学习,我们已经掌握了Python的基础知识,包括:

  • 基本语法数据类型
  • 控制流循环结构
  • 函数定义与调用
  • 模块的使用
  • 文件操作
  • 异常处理

通过简易计算器的实践项目,我们将这些知识点进行了综合应用,巩固了学习成果。

2. 后续学习方向

根据你的兴趣和目标,可以选择以下几个方向继续深入学习:

  • 数据分析:学习NumPy、Pandas等库
  • Web开发:学习Django、Flask等框架
  • 人工智能:学习机器学习、深度学习等
  • 自动化脚本:学习系统管理、网络爬虫等

无论你选择哪个方向,坚持编码实践项目驱动学习的方式,将有助于更快提升你的Python技能。

🌟 学习提示:编程学习最有效的方式是 “做中学”。每学习一个新概念,就尝试编写一个小程序来应用它。通过解决实际问题,你将更牢固地掌握编程知识。

感谢阅读《Python星球日记》第15天的内容!如果你有任何问题或建议,欢迎在评论区留言交流。

创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
如果你对今天的内容有任何问题,或者想分享你的学习心得,欢迎在评论区留言讨论!

相关文章:

  • git命令自动拉去远程分支到本地
  • 基于RoboTwin的数据训练RDT开源VLA模型
  • 牛客华为机试--HJ48 从单向链表中删除指定值的节点C++
  • 典型反模式深度解析及重构方案
  • 什么是 Git?为什么要用版本控制?
  • Python爬虫第三战(使用session登录小说网获取书单)
  • 蓝桥备赛指南(14):树的直径与重心
  • 判断矩阵A和矩阵B是否相似?
  • 解决使用PendingIntent.getBroadcast时出现java.lang.IllegalArgumentException异常的问题
  • (四十)Dart 中的空安全(Null Safety)教程
  • Web品质 - 重要的HTML元素
  • Linux 命令清单(Linux Command List)
  • MySQL随机获取记录之方法(The Method of Randomly Obtaining Records in MySQL)
  • 【python3】关于等额本金和等额本息计算
  • Activiti(二)- 基于SpringBoot开发配置activiti相关配置项
  • 深入理解C++面向对象特性之一 多态
  • Linux驱动开发进阶(六)- 多线程与并发
  • Redis到底能不能做主数据库?
  • xv6-labs-2024 lab1
  • QML面试笔记--UI设计篇03导航控件
  • 阿里上季度营收增7%:淘天营收创新高,AI产品营收连续七个季度三位数增长
  • 巴菲特谈卸任CEO:开始偶尔失去平衡,但仍然保持敏锐的头脑,仍打算继续工作
  • 当番茄霸总遇上晋江古言,短剧IP小变局
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩
  • 上海浦东机场1号、2号航站楼均推出国内出发安检24小时服务