跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 编程起步:变量、数据结构与面向对象实例

从变量、数据类型到控制流、数据结构,再到函数与面向对象,这份 Python 基础整理用示例代码和易懂类比,覆盖了入门必需的核心概念。

灵魂伴侣发布于 2026/6/300 浏览

编程就是告诉计算机一步一步做什么。Python 之所以适合入门,因为它读起来像英语,代码量少,还免费。一个程序大概分三步:准备数据,处理数据,输出结果。

变量和数据类型

变量就像贴了标签的储物盒。赋值就是把东西放进盒子,然后通过标签来用。

name = "小明"  # 把"小明"放进 name 这个盒子里
age = 18
height = 1.75
is_student = True

print(name)  # 小明

Python 里常见的数据类型:

  • 整数 int:没有小数,比如苹果的个数
  • 浮点数 float:带小数,比如身高、价格
  • 字符串 str:用引号包围的文字
  • 布尔值 bool:只有 True 和 False,像开关
student_count = 45          # int
price = 19.99                # float
name = "李华"                # str
is_raining = True            # bool

print(type(age))             # <class 'int'>
print(type(price))           # <class 'float'>

有时候需要把一种类型转换成另一种:

text_number = "123"
real_number = int(text_number)    # 字符串 -> 整数
print(real_number)                 # 123

score = 95
score_text = str(score)
print("我的分数是:" + score_text)  # 我的分数是:95

price = 19.99
whole_price = int(price)           # 浮点 -> 整数,直接截断小数
print(whole_price)                  # 19

运算符

算术运算

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 幂运算

比较运算

x = 10
y = 5
print(x == y)  # False  等于?
print(x != y)  # True   不等于?
print(x > y)   # True   大于?
print(x < y)   # False  小于?
print(x >= y)  # True   大于等于?
print(x <= y)  # False  小于等于?

逻辑运算

and 需要两个条件都成立,or 只要一个成立,not 取反。

is_weekend = True
has_money = True
can_shopping = is_weekend and has_money   # True

is_holiday = False
can_rest = is_holiday or is_weekend        # True

print(not is_raining)                      # 若 is_raining 为 True,则输出 False

输入与输出

input() 让程序停下来等用户输入,print() 把结果展示出来。

name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print("你好," + name + "!")
print("你今年" + age + "岁了")

# 格式化输出更清晰
price = 19.99
quantity = 3
total = price * quantity
print(f"单价:{price}元,数量:{quantity},总价:{total:.2f}元")
# 输出:单价:19.99 元,数量:3,总价:59.97 元

条件判断

让程序根据不同情况做不同的事。

age = 18
if age >= 18:
    print("你已经成年了!")

# 二选一
age = 16
if age >= 18:
    print("成年")
else:
    print("未成年")

# 多分支
score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("中等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

# 嵌套判断
age = 20
has_license = True
has_car = False
if age >= 18:
    if has_license:
        if has_car:
            print("可以开车出门")
        else:
            print("有驾照但没车")
    else:
        print("需要先考驾照")
else:
    print("年龄不够,不能开车")

循环

while 循环

当条件满足时一直重复,直到条件不成立为止。常用于不知道具体循环次数的情况。

count = 0
while count < 5:
    print(f"这是第{count + 1}次循环")
    count += 1   # 别忘了改变条件,否则死循环

password = ""
while password != "123456":
    password = input("请输入密码:")
print("密码正确!")

for 循环

遍历一个序列(列表、字符串等)的每个元素,知道要重复多少次。

fruits = ["苹果", "香蕉", "橙子", "草莓"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}")

for char in "Python":     # 逐个字符
    print(char)

range() 可以生成数字序列。

for i in range(5):        # 0 到 4
    print(i)
for i in range(2, 6):     # 2 到 5
    print(i)
for i in range(1, 11, 2): # 1,3,5,7,9 (步长2)
    print(i)

循环控制:break 和 continue

# break:立即结束整个循环
for i in range(10):
    if i == 5:
        break
    print(i)              # 只打到 0~4

# continue:跳过本轮剩下的代码,进入下一轮
for i in range(10):
    if i % 2 == 0:        # 偶数则跳过
        continue
    print(i)              # 只输出奇数

数据结构

列表 (list)

有序、可变的序列,像动态的购物车。

shopping_list = ["苹果", "牛奶", "面包"]
mixed_list = [1, "苹果", 3.14, True]

# 索引(从0开始,负索引从-1开始)
fruits = ["苹果", "香蕉", "橙子", "草莓", "葡萄", "芒果"]
print(fruits[0])    # 苹果
print(fruits[-1])   # 芒果

# 切片 [start:stop:step]
numbers = [0,1,2,3,4,5,6,7,8,9]
print(numbers[2:6])   # [2,3,4,5]
print(numbers[:4])    # [0,1,2,3]
print(numbers[5:])    # [5,6,7,8,9]
print(numbers[::2])   # [0,2,4,6,8]

修改列表:

fruits = ["苹果", "香蕉"]
fruits.append("橙子")               # 末尾添加
fruits.extend(["草莓", "葡萄"])      # 合并另一个列表
fruits.insert(1, "梨")              # 在索引1插入

# 删除
del fruits[1]                       # 按索引删除
removed = fruits.pop(2)             # 弹出索引2的元素
fruits.remove("梨")                 # 删除第一个匹配值

# 修改
fruits[1] = "葡萄"
fruits[0:2] = ["芒果", "菠萝"]      # 切片赋值
fruits[1:1] = ["西瓜", "哈密瓜"]     # 切片插入

常用操作:

numbers = [1,3,5,3,7,9,3,1]
print(len(numbers))          # 8
print(numbers.count(3))      # 3
print(numbers.index(5))      # 2
print(5 in numbers)          # True

元组 (tuple)

与列表类似,但创建后不能修改。适合存放不该变的数据。

colors = ("红色", "绿色", "蓝色")
print(colors[0])   # 红色
# colors[0] = "黄色"  会报错

# 解包
student_info = ("张三", 18, "清华大学")
name, age, school = student_info
print(f"{name}今年{age}岁,在{school}上学")

字典 (dict)

键值对的集合,通过键快速查找值,就像通讯录。

contacts = {
    "张三": "13800138000",
    "李四": "13900139000"
}
print(contacts["张三"])         # 13800138000
contacts["赵六"] = "13600136000" # 添加
contacts["张三"] = "13800138001" # 修改
del contacts["李四"]

# 安全访问
print(student.get("name"))             # 小明
print(student.get("address", "未知"))  # 未知(带默认值)
print("name" in student)               # True
print(student.keys())                   # 所有键
print(student.values())                 # 所有值

集合 (set)

无序、不重复的元素集合,自带去重效果。

fruits = {"苹果", "香蕉", "橙子", "苹果"}  # 重复的苹果自动去掉
print(fruits)  # {'橙子', '香蕉', '苹果'}  顺序不定

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)   # 并集
print(set1 & set2)   # 交集
print(set1 - set2)   # 差集
print(set1 ^ set2)   # 对称差集

函数

函数就是封装好的逻辑块,定义一次可以重复用。

def make_tea(tea_type, sugar_level=1):
    """泡茶函数,返回一杯茶的描述"""
    tea_description = f"一杯{tea_type}"
    if sugar_level > 1:
        tea_description += f",糖度{sugar_level}级"
    return tea_description

print(make_tea("绿茶"))               # 一杯绿茶
print(make_tea("红茶", 3))            # 一杯红茶,糖度3级
print(make_tea(sugar_level=5, tea_type="乌龙茶"))
# 一杯乌龙茶,糖度5级

参数

位置参数必须按顺序传,关键字参数可以按名字传,默认参数可以不传。

def order_coffee(coffee_type, size="中杯", sugar=True, ice=False):
    order = f"{size}{coffee_type}"
    order += ",加糖" if sugar else ",无糖"
    order += ",加冰" if ice else ",热饮"
    return order

print(order_coffee("拿铁"))                       # 中杯拿铁,加糖,热饮
print(order_coffee("美式", "大杯"))               # 大杯美式,加糖,热饮
print(order_coffee("卡布奇诺", sugar=False))       # 中杯卡布奇诺,无糖,热饮

可变参数 *args 和 **kwargs 可以接收任意数量的参数:

def make_smoothie(*fruits, **extras):
    smoothie = "混合果汁包含:" + "、".join(fruits)
    if extras:
        smoothie += ",额外添加:"
        for item, amount in extras.items():
            smoothie += f"{item}{amount}份、"
    return smoothie.rstrip("、")

print(make_smoothie("香蕉", "草莓"))
print(make_smoothie("芒果", "菠萝", "椰子", ice=2, sugar=1))

返回值

可以返回单个值,也可以返回多个值(实际上是个元组),甚至返回字典。

def analyze_scores(scores):
    avg = sum(scores) / len(scores)
    return avg, max(scores), min(scores), len(scores)

def get_student_report(name, scores):
    avg = sum(scores) / len(scores)
    grade = "优秀" if avg >= 90 else "良好" if avg >= 80 else "及格"
    return {
        "姓名": name,
        "平均分": round(avg, 2),
        "最高分": max(scores),
        "最低分": min(scores),
        "等级": grade
    }

avg, high, low, cnt = analyze_scores([85,92,78,96,88])
report = get_student_report("小明", [85,92,78,96,88])

lambda 匿名函数

lambda 可以快速定义一个小函数,通常用在只需要一次的地方。

square = lambda x: x * x
print(square(5))   # 25

# 用在高阶函数里,比如排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1])   # 按字符串排序

模块

把代码按功能放进不同的文件,就是模块。导入方式有好几种:

# 导入整个模块
import math
print(math.sqrt(16))   # 4.0

# 导入特定函数
from math import sqrt, pi
print(sqrt(25))        # 5.0

# 导入并起别名
import math as m
from datetime import datetime as dt
print(m.sqrt(36))      # 6.0
print(dt.now())

# 动态导入(较少用)
module_name = "math"
math_module = __import__(module_name)

常用内置模块:

math 提供数学函数和常量:

print(math.ceil(3.2))      # 4
print(math.floor(3.8))     # 3
print(math.gcd(48, 18))    # 6

random 搞定随机:

import random
print(random.randint(1,100))           # 1~100 的整数
print(random.choice(["苹果","香蕉"]))   # 随机选一个
random.shuffle(fruits)                 # 原地打乱

datetime 处理日期和时间:

from datetime import datetime, timedelta
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
tomorrow = now + timedelta(days=1)

os 模块与操作系统交互:

import os
print(os.getcwd())              # 当前目录
print(os.listdir('.'))          # 列出目录内容
print(os.path.exists('test.txt'))

面向对象编程

类和对象

类像是设计图纸,对象是根据图纸造出来的东西。

class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def introduce(self):
        return f"我叫{self.name},今年{self.age}岁"

    def study(self, hours):
        self.score += hours * 0.5
        return f"学习了{hours}小时,分数提升了{hours * 0.5}"

# 创建对象
student1 = Student("小明", 18, 85)
print(student1.introduce())        # 我叫小明,今年18岁
print(student1.study(2))           # 学习了2小时,分数提升了1.0

封装

把内部细节藏起来,只通过公开方法访问。用双下划线前缀表示私有属性。

class BankAccount:
    def __init__(self, initial_balance=0):
        self.__balance = initial_balance   # 私有

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            return f"存款成功,当前余额:{self.__balance}"
        return "金额必须大于0"

    def get_balance(self):
        return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())   # 1500
# print(account.__balance)     # 报错,无法直接访问

继承

子类继承父类的属性和方法,还能添加自己的东西。

class Animal:
    def __init__(self, name):
        self.name = name
    def eat(self):
        return f"{self.name}在吃东西"

class Dog(Animal):
    def speak(self):
        return "汪汪!"
    def fetch(self):
        return f"{self.name}在接飞盘"

class Cat(Animal):
    def speak(self):
        return "喵喵!"
    def climb(self):
        return f"{self.name}在爬树"

dog = Dog("旺财")
print(dog.speak())    # 汪汪!
print(dog.eat())      # 旺财在吃东西
print(dog.fetch())    # 旺财在接飞盘

多态

不同对象对同一个方法可以有不同的响应。

class Circle:
    def __init__(self, radius):
        self.radius = radius
    def area(self):
        return 3.14 * self.radius ** 2

class Rectangle:
    def __init__(self, width, height):
        self.width, self.height = width, height
    def area(self):
        return self.width * self.height

# 遍历不同类型的图形,各自计算面积
for shape in [Circle(5), Rectangle(4, 6)]:
    print(f"面积:{shape.area():.2f}")

接下来学什么

基础语法只是开始。理解了变量、循环、函数和类之后,可以试着写几个小项目:计算器、猜数字、通讯录管理。练手过程中你会自然而然碰到文件读写、异常处理、第三方库,到时候再根据需要去查。编程就像学骑自行车,摔几跤,然后突然就能跑起来了。

目录

  1. 变量和数据类型
  2. 运算符
  3. 算术运算
  4. 比较运算
  5. 逻辑运算
  6. 输入与输出
  7. 格式化输出更清晰
  8. 输出:单价:19.99 元,数量:3,总价:59.97 元
  9. 条件判断
  10. 二选一
  11. 多分支
  12. 嵌套判断
  13. 循环
  14. while 循环
  15. for 循环
  16. 循环控制:break 和 continue
  17. break:立即结束整个循环
  18. continue:跳过本轮剩下的代码,进入下一轮
  19. 数据结构
  20. 列表 (list)
  21. 索引(从0开始,负索引从-1开始)
  22. 切片 [start:stop:step]
  23. 删除
  24. 修改
  25. 元组 (tuple)
  26. colors[0] = "黄色" 会报错
  27. 解包
  28. 字典 (dict)
  29. 安全访问
  30. 集合 (set)
  31. 函数
  32. 一杯乌龙茶,糖度5级
  33. 参数
  34. 返回值
  35. lambda 匿名函数
  36. 用在高阶函数里,比如排序
  37. 模块
  38. 导入整个模块
  39. 导入特定函数
  40. 导入并起别名
  41. 动态导入(较少用)
  42. 面向对象编程
  43. 类和对象
  44. 创建对象
  45. 封装
  46. print(account.__balance) # 报错,无法直接访问
  47. 继承
  48. 多态
  49. 遍历不同类型的图形,各自计算面积
  50. 接下来学什么
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • CARRY4进位链在TDC中的行为仿真:从抽头延迟到温度计码
  • 从后端到前端:AI Agent 跨语言全栈项目实战记录(Java + Python + Vue3)
  • 在银河麒麟 V10 上使用 Docker 和 Compose 部署 .NET 8 WebAPI
  • 汉诺塔问题的递归与非递归 C++ 解法
  • 7款国内AI助手横评:豆包、元宝、千问、Kimi、DeepSeek、MiniMax、GLM
  • 2026 算法求职:为什么我劝你深耕多模态大模型
  • 2023年网络安全趋势观察:十个绕不开的方向
  • 用 MGeo 和 Neo4j 搭建中文地址语义知识图谱
  • 网络安全学习平台盘点:七个从新手到进阶的资源
  • Python MCP Server 实战:从工具调用到业务数据查询
  • 微信小程序城市公交查询与失物招领系统的开发笔记
  • 链表细节与 Java LinkedList 实战
  • 配置 Spark SQL 访问 Hive 元数据
  • AgentScope Java 实战:构建 LLM 智能体与多智能体协作
  • 微信官方 Bot API 上手:ClawBot 插件的 iLink 协议细节
  • Trae + Figma:设计稿生成前端代码的配置流程与实现原理
  • 达梦数据库 Java 外部函数配置小记
  • 企业自建行业大模型:踩坑与选型
  • 动态规划解斐波那契问题:三步、爬楼梯与解码方法
  • 国内大模型现状:主流模型清单、落地案例与挑战

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online