跳到主要内容
Python 编程起步:变量、数据结构与面向对象实例 | 极客日志
Python
Python 编程起步:变量、数据结构与面向对象实例 从变量、数据类型到控制流、数据结构,再到函数与面向对象,这份 Python 基础整理用示例代码和易懂类比,覆盖了入门必需的核心概念。
灵魂伴侣 发布于 2026/6/30 更新于 2026/8/22 19 浏览编程就是告诉计算机一步一步做什么。Python 之所以适合入门,因为它读起来像英语,代码量少,还免费。一个程序大概分三步:准备数据,处理数据,输出结果。
变量和数据类型
变量就像贴了标签的储物盒。赋值就是把东西放进盒子,然后通过标签来用。
name = "小明"
age = 18
height = 1.75
is_student = True
print (name)
Python 里常见的数据类型:
整数 int:没有小数,比如苹果的个数
浮点数 float:带小数,比如身高、价格
字符串 str:用引号包围的文字
布尔值 bool:只有 True 和 False,像开关
student_count = 45
price = 19.99
name = "李华"
is_raining = True
print (type (age))
print (type (price))
有时候需要把一种类型转换成另一种:
text_number = "123"
real_number = int (text_number)
print (real_number)
score = 95
score_text = str (score)
print ("我的分数是:" + score_text)
price = 19.99
whole_price = int (price)
print (whole_price)
运算符
算术运算 a = 10
b = 3
print (a + b)
print (a - b)
print (a * b)
print (a / b)
print (a // b)
print (a % b)
print (a ** b)
比较运算 x = 10
y = 5
print (x == y)
print (x != y)
print (x > y)
print (x < y)
print (x >= y)
print (x <= y)
逻辑运算 and 需要两个条件都成立,or 只要一个成立,not 取反。
is_weekend = True
has_money = True
can_shopping = is_weekend and has_money
is_holiday = False
can_rest = is_holiday or is_weekend
print (not is_raining)
输入与输出 input() 让程序停下来等用户输入,print() 把结果展示出来。
name = input ("请输入你的名字:" )
age = input ("请输入你的年龄:" )
print ("你好," + name + "!" )
print ("你今年" + age + "岁了" )
price = 19.99
quantity = 3
total = price * quantity
print (f"单价:{price} 元,数量:{quantity} ,总价:{total:.2 f} 元" )
条件判断 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)
for i in range (5 ):
print (i)
for i in range (2 , 6 ):
print (i)
for i in range (1 , 11 , 2 ):
print (i)
循环控制:break 和 continue
for i in range (10 ):
if i == 5 :
break
print (i)
for i in range (10 ):
if i % 2 == 0 :
continue
print (i)
数据结构
列表 (list) shopping_list = ["苹果" , "牛奶" , "面包" ]
mixed_list = [1 , "苹果" , 3.14 , True ]
fruits = ["苹果" , "香蕉" , "橙子" , "草莓" , "葡萄" , "芒果" ]
print (fruits[0 ])
print (fruits[-1 ])
numbers = [0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ]
print (numbers[2 :6 ])
print (numbers[:4 ])
print (numbers[5 :])
print (numbers[::2 ])
fruits = ["苹果" , "香蕉" ]
fruits.append("橙子" )
fruits.extend(["草莓" , "葡萄" ])
fruits.insert(1 , "梨" )
del fruits[1 ]
removed = fruits.pop(2 )
fruits.remove("梨" )
fruits[1 ] = "葡萄"
fruits[0 :2 ] = ["芒果" , "菠萝" ]
fruits[1 :1 ] = ["西瓜" , "哈密瓜" ]
numbers = [1 ,3 ,5 ,3 ,7 ,9 ,3 ,1 ]
print (len (numbers))
print (numbers.count(3 ))
print (numbers.index(5 ))
print (5 in numbers)
元组 (tuple) 与列表类似,但创建后不能修改。适合存放不该变的数据。
colors = ("红色" , "绿色" , "蓝色" )
print (colors[0 ])
student_info = ("张三" , 18 , "清华大学" )
name, age, school = student_info
print (f"{name} 今年{age} 岁,在{school} 上学" )
字典 (dict) contacts = {
"张三" : "13800138000" ,
"李四" : "13900139000"
}
print (contacts["张三" ])
contacts["赵六" ] = "13600136000"
contacts["张三" ] = "13800138001"
del contacts["李四" ]
print (student.get("name" ))
print (student.get("address" , "未知" ))
print ("name" in student)
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 ))
print (make_tea(sugar_level=5 , tea_type="乌龙茶" ))
参数 位置参数必须按顺序传,关键字参数可以按名字传,默认参数可以不传。
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 ))
pairs = [(1 , 'one' ), (2 , 'two' ), (3 , 'three' )]
pairs.sort(key=lambda pair: pair[1 ])
模块 把代码按功能放进不同的文件,就是模块。导入方式有好几种:
import math
print (math.sqrt(16 ))
from math import sqrt, pi
print (sqrt(25 ))
import math as m
from datetime import datetime as dt
print (m.sqrt(36 ))
print (dt.now())
module_name = "math"
math_module = __import__ (module_name)
print (math.ceil(3.2 ))
print (math.floor(3.8 ))
print (math.gcd(48 , 18 ))
import random
print (random.randint(1 ,100 ))
print (random.choice(["苹果" ,"香蕉" ]))
random.shuffle(fruits)
from datetime import datetime, timedelta
now = datetime.now()
print (now.strftime("%Y-%m-%d %H:%M:%S" ))
tomorrow = now + timedelta(days=1 )
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())
print (student1.study(2 ))
封装 把内部细节藏起来,只通过公开方法访问。用双下划线前缀表示私有属性。
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())
继承 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():.2 f} " )
接下来学什么 基础语法只是开始。理解了变量、循环、函数和类之后,可以试着写几个小项目:计算器、猜数字、通讯录管理。练手过程中你会自然而然碰到文件读写、异常处理、第三方库,到时候再根据需要去查。编程就像学骑自行车,摔几跤,然后突然就能跑起来了。
相关免费在线工具 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