200字
Python学习笔记
2025-10-12
2025-10-12

1. Python 基础语法

1.1 变量和数据类型

# 基本数据类型
name = "Alice"          # 字符串类型
age = 25               # 整数类型  
height = 1.75          # 浮点数类型
is_student = True      # 布尔值类型

# 类型转换
str_age = str(age)     # 整数转换为字符串
int_height = int(height) # 浮点数转换为整数(向下取整)
float_age = float(age) # 整数转换为浮点数
bool_name = bool(name) # 字符串转换为布尔值(非空字符串为True)

1.2 输入输出

# 输入函数
name = input("请输入你的名字:")  # 获取用户输入,返回字符串
age = int(input("请输入你的年龄:"))  # 将输入转换为整数

# 输出函数
print("你好,", name)  # 打印多个值,默认用空格分隔
print(f"你今年{age}岁")  # f-string格式化字符串,推荐用法
print("姓名:{},年龄:{}".format(name, age))  # format方法格式化
print("姓名:%s,年龄:%d" % (name, age))  # %格式化,旧式写法

1.3 运算符

# 算术运算符
a = 10
b = 3
print(a + b)  # 加法,输出13
print(a - b)  # 减法,输出7  
print(a * b)  # 乘法,输出30
print(a / b)  # 除法,输出3.333...
print(a // b) # 整除,输出3
print(a % b)  # 取余,输出1
print(a ** b) # 幂运算,输出1000

# 比较运算符
print(a == b)  # 等于,输出False
print(a != b)  # 不等于,输出True
print(a > b)   # 大于,输出True
print(a < b)   # 小于,输出False
print(a >= b)  # 大于等于,输出True
print(a <= b)  # 小于等于,输出False

# 逻辑运算符
print(True and False)  # 与运算,输出False
print(True or False)   # 或运算,输出True
print(not True)        # 非运算,输出False

2. 数据结构

2.1 列表 (List)

# 创建列表
fruits = ["apple", "banana", "orange"]  # 字符串列表
numbers = [1, 2, 3, 4, 5]  # 整数列表
mixed = [1, "hello", 3.14, True]  # 混合类型列表

# 列表操作
fruits.append("grape")      # 在末尾添加元素
fruits.insert(1, "pear")    # 在索引1位置插入元素
fruits.remove("banana")     # 删除第一个匹配的元素
last_fruit = fruits.pop()   # 删除并返回最后一个元素
second_fruit = fruits.pop(1) # 删除并返回索引1的元素

# 列表切片
print(fruits[1:3])     # 切片,索引1到3(不包括3)
print(fruits[:2])      # 从开始到索引2(不包括2)
print(fruits[2:])      # 从索引2到结束
print(fruits[-1])      # 最后一个元素
print(fruits[::2])     # 步长为2,每隔一个取一个

# 列表推导式
squares = [x**2 for x in range(10)]  # 生成0-9的平方列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]  # 带条件的列表推导式

2.2 字典 (Dictionary)

# 创建字典
student = {
    "name": "Alice",
    "age": 20,
    "major": "Computer Science"
}  # 键值对集合,键必须是不可变类型

# 字典操作
print(student["name"])           # 通过键访问值
student["grade"] = "A"          # 添加新的键值对
student["age"] = 21             # 修改已有的键值对
del student["major"]            # 删除键值对
value = student.get("name")     # 安全获取值,键不存在返回None
value = student.get("phone", "N/A")  # 键不存在返回默认值

# 遍历字典
for key in student:             # 遍历所有键
    print(key)
    
for value in student.values():  # 遍历所有值
    print(value)
    
for key, value in student.items():  # 遍历所有键值对
    print(f"{key}: {value}")

2.3 元组 (Tuple) 和集合 (Set)

# 元组(不可变序列)
coordinates = (10, 20)  # 创建元组
x, y = coordinates      # 元组解包
single_tuple = (42,)    # 单元素元组,注意逗号不能省略
empty_tuple = ()        # 空元组

# 集合(无序、不重复元素)
set1 = {1, 2, 3, 4}    # 创建集合
set2 = {3, 4, 5, 6}    # 另一个集合
print(set1 | set2)      # 并集,输出{1,2,3,4,5,6}
print(set1 & set2)      # 交集,输出{3,4}
print(set1 - set2)      # 差集,输出{1,2}
print(set1 ^ set2)      # 对称差集,输出{1,2,5,6}

3. 控制流

3.1 条件语句

# if-elif-else 结构
score = 85

if score >= 90:          # 如果条件成立
    grade = "A"          # 执行这个代码块
elif score >= 80:        # 否则如果这个条件成立
    grade = "B"          # 执行这个代码块
elif score >= 70:        # 否则如果这个条件成立
    grade = "C"          # 执行这个代码块
else:                    # 以上条件都不成立
    grade = "D"          # 执行这个代码块

print(f"成绩等级:{grade}")  # 输出:成绩等级:B

# 嵌套if语句
if score >= 60:
    if score >= 90:
        print("优秀")
    else:
        print("及格")
else:
    print("不及格")

3.2 循环

# for 循环
for i in range(5):        # 循环5次,i从0到4
    print(i)              # 打印0,1,2,3,4

for i in range(2, 10, 2): # 从2开始,到10结束(不包括10),步长为2
    print(i)              # 打印2,4,6,8

# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:      # 遍历列表中的每个元素
    print(fruit)          # 依次打印每个水果

# while 循环
count = 0
while count < 5:          # 当条件为True时循环
    print(count)          # 打印当前计数
    count += 1            # 计数器加1

# break 和 continue
for i in range(10):
    if i == 3:
        continue          # 跳过本次循环的剩余代码,继续下一次循环
    if i == 7:
        break             # 完全终止循环
    print(i)              # 输出0,1,2,4,5,6

4. 函数

4.1 函数定义

def greet(name, greeting="Hello"):
    """简单的问候函数
    参数:
        name: 姓名
        greeting: 问候语,默认为'Hello'
    返回:
        问候字符串
    """
    return f"{greeting}, {name}!"  # 返回格式化字符串

# 调用函数
print(greet("Alice"))              # 使用默认参数
print(greet("Bob", "Hi"))          # 提供所有参数

# 返回多个值
def calculate(a, b):
    return a + b, a - b, a * b  # 返回元组,可以解包

sum_result, diff_result, product_result = calculate(10, 5)  # 解包返回值
print(f"和:{sum_result}, 差:{diff_result}, 积:{product_result}")

4.2 参数类型

# 位置参数
def func1(a, b, c):      # a, b, c是位置参数
    return a + b + c     # 必须按顺序传递

# 关键字参数
def func2(name, age, city):
    return f"{name} from {city}, age {age}"
    
result = func2(name="Alice", age=25, city="Beijing")  # 使用参数名传递

# 默认参数
def func3(message, times=1):  # times有默认值
    return message * times    # 可以只传一个参数

# 可变位置参数
def func4(*args):             # *args接收任意数量的位置参数
    return sum(args)          # args是元组

# 可变关键字参数  
def func5(**kwargs):          # **kwargs接收任意数量的关键字参数
    for key, value in kwargs.items():  # kwargs是字典
        print(f"{key}: {value}")

5. 文件操作

# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:  # 以写入模式打开文件
    f.write("Hello, World!\n")    # 写入内容,\n表示换行
    f.write("这是第二行\n")        # 继续写入

# 读取文件
with open("example.txt", "r", encoding="utf-8") as f:  # 以读取模式打开文件
    content = f.read()           # 读取整个文件内容
    print(content)

# 逐行读取
with open("example.txt", "r", encoding="utf-8") as f:
    for line in f:               # 逐行迭代
        print(line.strip())      # strip()去除首尾空白字符

# 读取所有行到列表
with open("example.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()        # 返回包含所有行的列表
    for line in lines:
        print(line.strip())

6. 异常处理

try:
    num = int(input("请输入一个数字:"))  # 可能引发ValueError
    result = 10 / num                   # 可能引发ZeroDivisionError
    print(f"结果是:{result}")
except ValueError:                      # 捕获数值转换错误
    print("输入的不是有效数字!")
except ZeroDivisionError:               # 捕获除零错误
    print("不能除以零!")
except Exception as e:                  # 捕获所有其他异常
    print(f"发生未知错误:{e}")
else:                                   # 没有异常时执行
    print("计算成功!")
finally:                                # 无论是否异常都会执行
    print("程序执行完毕")

# 手动抛出异常
def check_age(age):
    if age < 0 or age > 150:
        raise ValueError("年龄必须在0-150之间")  # 主动抛出异常
    return age

7. 面向对象编程

7.1 类和对象

class Student:
    # 类属性(所有实例共享)
    school = "ABC University"
    
    def __init__(self, name, age, major):
        # 实例属性(每个实例独有)
        self.name = name      # 学生姓名
        self.age = age        # 学生年龄
        self.major = major    # 学生专业
    
    # 实例方法
    def introduce(self):      # self指向实例本身
        return f"我叫{self.name},学习{self.major}专业"
    
    # 类方法
    @classmethod              # 装饰器,表示类方法
    def get_school_info(cls): # cls指向类本身
        return f"学校:{cls.school}"
    
    # 静态方法
    @staticmethod             # 装饰器,表示静态方法
    def is_adult(age):        # 不需要self或cls参数
        return age >= 18

# 创建对象
student1 = Student("Alice", 20, "计算机科学")  # 创建实例
print(student1.introduce())                    # 调用实例方法
print(Student.get_school_info())               # 调用类方法
print(Student.is_adult(20))                    # 调用静态方法

7.2 继承

class Person:                            # 父类/基类
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def speak(self):
        return f"我是{self.name}"

class Teacher(Person):                   # 子类/派生类,继承Person
    def __init__(self, name, age, subject):
        super().__init__(name, age)      # 调用父类的构造方法
        self.subject = subject           # 子类特有的属性
    
    def teach(self):                     # 子类特有的方法
        return f"我教{self.subject}"
    
    def speak(self):                     # 重写父类方法
        return f"我是老师{self.name}"

# 使用子类
teacher = Teacher("张老师", 35, "数学")
print(teacher.speak())    # 调用重写后的方法
print(teacher.teach())    # 调用子类特有方法

8. 常用模块

8.1 内置模块

import math                # 数学模块
import random              # 随机数模块  
import datetime            # 日期时间模块
import os                  # 操作系统接口模块

# math 模块
print(math.sqrt(16))       # 平方根,输出4.0
print(math.pi)             # 圆周率π
print(math.ceil(4.2))      # 向上取整,输出5
print(math.floor(4.8))     # 向下取整,输出4

# random 模块
print(random.randint(1, 10))     # 1-10的随机整数
print(random.choice(["a", "b", "c"]))  # 随机选择列表中的元素
print(random.random())            # 0-1的随机浮点数
random.shuffle([1,2,3,4,5])      # 随机打乱列表

# datetime 模块
now = datetime.datetime.now()           # 当前时间
print(now.strftime("%Y-%m-%d %H:%M:%S"))  # 格式化时间
today = datetime.date.today()           # 今天日期
one_week_later = today + datetime.timedelta(days=7)  # 一周后的日期

8.2 第三方模块

# 需要先安装:pip install requests
import requests

# 发送HTTP GET请求
response = requests.get("https://api.github.com")
print(response.status_code)    # 状态码,200表示成功
print(response.json())         # 解析JSON响应

# 发送带参数的请求
params = {"q": "python", "page": 1}
response = requests.get("https://api.github.com/search/repositories", params=params)

9. 实用技巧

9.1 列表排序和查找

numbers = [3, 1, 4, 1, 5, 9, 2]

# 排序
sorted_numbers = sorted(numbers)  # 返回新列表,原列表不变
numbers.sort()                   # 原地排序,修改原列表
numbers.sort(reverse=True)       # 降序排序

# 查找
if 5 in numbers:                 # 检查元素是否存在
    print("找到5")

index = numbers.index(4)         # 返回元素的第一个索引
count = numbers.count(1)         # 统计元素出现次数

# 复杂排序
students = [("Alice", 20), ("Bob", 18), ("Charlie", 22)]
students.sort(key=lambda x: x[1])  # 按年龄排序

9.2 字符串操作

text = " Hello, World! "

# 常用字符串方法
print(text.strip())           # 去除两端空白字符
print(text.lower())           # 转为小写
print(text.upper())           # 转为大写
print(text.replace("World", "Python"))  # 替换子串
print(text.split(","))        # 按逗号分割,返回列表
print(text.startswith(" Hello"))  # 检查是否以指定字符串开头
print(text.endswith("! "))        # 检查是否以指定字符串结尾
print(text.find("World"))         # 查找子串位置,返回索引

# 字符串连接
words = ["Hello", "World", "Python"]
result = " ".join(words)      # 用空格连接列表中的字符串
print(result)                 # 输出:Hello World Python

10. 学习建议

  1. 多练习:编程是实践技能,多写代码才能熟练掌握

  2. 阅读文档:学会查阅Python官方文档和库文档

  3. 调试技巧:使用print调试,学习使用pdb调试器

  4. 项目驱动:通过实际项目学习,解决真实问题

  5. 参与社区:阅读他人代码,参与开源项目,学习最佳实践

  6. 理解原理:不仅要会用,还要理解背后的原理

  7. 代码规范:遵循PEP8编码规范,写出可读性高的代码


评论