Python 是一种高级编程语言,由 Guido van Rossum 于 1991 年创建。它以简洁易懂的语法和强大的功能著称,被广泛应用于 Web 开发、数据分析、人工智能、科学计算等领域。
# 交互式模式示例
>>> print("Hello World")
Hello World
# 脚本模式示例 (保存为 hello.py)
# python hello.py
让我们从一个经典的 "Hello World" 程序开始:
print("Hello World")
print():Python 的输出函数,用于向屏幕输出内容"Hello World":字符串,用引号括起来注释用于解释代码,不会被解释器执行。良好的注释习惯是编程的基本素养。
# 这是单行注释
print("Hello") # 也可以放在代码后面
'''
这是多行注释
可以跨越多行
用于较长的说明
'''
"""
也可以使用双引号
"""
Python 提供了简单直观的输入输出方式:
# 输出字符串
print("Hello World")
# 输出数字
print(123)
# 输出多个内容
print("x =", 10)
print("a", "b", "c") # 默认用空格分隔
# 格式化输出
x = 10
print(f"x = {x}") # f-string 格式化(推荐)
print("x = {}".format(x))
print("x = %d" % x)
# input() 返回字符串
name = input("请输入你的名字: ")
print("你好,", name)
# 读取数字需要类型转换
age = int(input("请输入你的年龄: "))
height = float(input("请输入你的身高: "))
input() 返回的是字符串类型。如果需要数字,必须使用 int() 或 float() 进行类型转换。
Python 拥有丰富的标准库,以下是一些常用库:
| 库名 | 功能 |
|---|---|
math | 数学函数 (sqrt, pow, sin 等) |
random | 随机数生成 |
datetime | 日期时间处理 |
json | JSON 数据处理 |
os | 操作系统接口 |
sys | 系统相关功能 |
import math
# 使用数学函数
print(math.sqrt(16)) # 4.0
print(math.pow(2, 10)) # 1024.0
print(math.pi) # 3.141592653589793
变量是程序中用于存储数据的容器。每个变量都有:
a = 10 # 正整数
b = -5 # 负整数
c = 0 # 零
d = 1_000_000 # Python3.6+,下划线分隔(等于 1000000)
x = 3.14
y = -0.5
z = 1e10 # 科学计数法,等于 10000000000.0
flag1 = True
flag2 = False
c = 3 + 4j # 3 是实部,4j 是虚部
| 类型 | 说明 | 示例 |
|---|---|---|
int | 整数 | 10, -5, 0 |
float | 浮点数 | 3.14, -0.5 |
bool | 布尔值 | True, False |
complex | 复数 | 3+4j |
sum 和 Sum 是不同的变量)# 好的命名
student_count = 30 # 小写+下划线(推荐)
studentCount = 30 # 小驼峰
MAX_SIZE = 100 # 常量用大写
# 不好的命名
a, b, c # 无意义的名字
n1, n2, n3 # 难以理解
if = 10 # 错误:使用了关键字
# 字符串转整数
a = int("123") # a = 123
# 整数转字符串
b = str(123) # b = "123"
# 字符串转浮点数
c = float("3.14") # c = 3.14
# 浮点数转整数(截断)
d = int(3.7) # d = 3
# 四舍五入
e = round(3.7) # e = 4
# 类型查询
print(type(123)) # <class 'int'>
print(type(3.14)) # <class 'float'>
ValueError 异常。
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 5 + 3 | 8 |
- | 减法 | 5 - 3 | 2 |
* | 乘法 | 5 * 3 | 15 |
/ | 除法 | 7 / 2 | 3.5(总是浮点数) |
// | 整除 | 7 // 2 | 3 |
% | 取模(求余数) | 7 % 2 | 1 |
** | 幂运算 | 2 ** 10 | 1024 |
/ 除法总是返回浮点数,如需整数除法使用 //。
| 运算符 | 功能 | 示例 |
|---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
print(10 > 5) # True
print(3 == 3.0) # True(值相等)
print(3 is 3.0) # False(身份不同)
| 运算符 | 功能 | 说明 |
|---|---|---|
and | 逻辑与 | 两个条件都为真时结果为真 |
or | 逻辑或 | 至少一个条件为真时结果为真 |
not | 逻辑非 | 取反,真变假,假变真 |
age = 20
has_id = True
# 逻辑与
if age >= 18 and has_id:
print("可以进入")
# 逻辑或
if age < 12 or age > 60:
print("可以享受优惠")
# 逻辑非
is_raining = False
if not is_raining:
print("天气不错")
and 和 or 支持短路求值,并且返回的是实际的值而非布尔值。
| 运算符 | 示例 | 等价于 |
|---|---|---|
= | a = b | 赋值 |
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
//= | a //= b | a = a // b |
**= | a **= b | a = a ** b |
# 检查元素是否在序列中
fruits = ["苹果", "香蕉", "橙子"]
print("香蕉" in fruits) # True
print("葡萄" not in fruits) # True
# 检查两个变量是否引用同一个对象
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True(同一对象)
print(a is c) # False(值相同但不同对象)
print(a == c) # True(值相同)
# 使用单引号
s1 = 'Hello'
# 使用双引号
s2 = "World"
# 使用三引号(可以包含多行)
s3 = '''这是一个
可以跨行的字符串'''
# 空字符串
s4 = ""
s = "Hello World"
# 长度
print(len(s)) # 11
# 访问字符(下标从0开始)
print(s[0]) # 'H'
print(s[-1]) # 'd'(最后一个字符)
# 切片
print(s[0:5]) # 'Hello'
print(s[6:]) # 'World'
print(s[:5]) # 'Hello'
print(s[::2]) # 'HloWrd'(步长为2)
print(s[::-1]) # 'dlroW olleH'(反转)
# 字符串连接
s1 = "Hello"
s2 = "World"
print(s1 + " " + s2) # 'Hello World'
# 重复
print("-" * 20) # '--------------------'
s = "Hello World"
# 大小写转换
print(s.upper()) # 'HELLO WORLD'
print(s.lower()) # 'hello world'
print(s.capitalize()) # 'Hello world'
print(s.title()) # 'Hello World'
# 查找和替换
print(s.find("World")) # 6(找不到返回-1)
print(s.index("World")) # 6(找不到会报错)
print(s.replace("World", "Python")) # 'Hello Python'
print(s.count("o")) # 2
# 判断开头和结尾
print(s.startswith("Hello")) # True
print(s.endswith("World")) # True
# 分割和连接
s2 = "apple,banana,orange"
print(s2.split(",")) # ['apple', 'banana', 'orange']
print("-".join(["a", "b", "c"])) # 'a-b-c'
# 去空格
s3 = " hello "
print(s3.strip()) # 'hello'(去除两端空格)
print(s3.lstrip()) # 'hello '(去除左边)
print(s3.rstrip()) # ' hello'(去除右边)
# 判断类型
print("123".isdigit()) # True
print("abc".isalpha()) # True
print("abc123".isalnum()) # True
name = "小明"
age = 15
score = 95.5
print(f"姓名: {name}, 年龄: {age}")
print(f"成绩: {score:.1f}") # 保留1位小数
print(f"明年年龄: {age + 1}")
print("姓名: {}, 年龄: {}".format("小明", 15))
print("成绩: {:.1f}".format(95.567))
print("姓名: %s, 年龄: %d" % ("小明", 15))
列表是 Python 中最常用的可变序列,可以存储任意类型的数据。
# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
empty = []
nums = [1, 2, 3, 4, 5]
# 访问元素
print(nums[0]) # 1
print(nums[-1]) # 5
# 修改元素
nums[0] = 10 # [10, 2, 3, 4, 5]
# 切片
print(nums[1:4]) # [2, 3, 4]
# 长度
print(len(nums)) # 5
nums = [1, 2, 3]
# 添加元素
nums.append(4) # [1, 2, 3, 4](末尾添加)
nums.insert(0, 0) # [0, 1, 2, 3, 4](指定位置插入)
nums.extend([5, 6]) # [0, 1, 2, 3, 4, 5, 6](扩展列表)
# 删除元素
nums.pop() # 删除并返回最后一个元素
nums.pop(0) # 删除并返回指定位置元素
nums.remove(3) # 删除第一个值为3的元素
del nums[0] # 删除指定位置元素
# 其他操作
nums.sort() # 排序(原地修改)
nums.reverse() # 反转列表
print(nums.index(3)) # 查找元素索引
print(nums.count(3)) # 统计元素出现次数
print(3 in nums) # 检查元素是否存在
# 列表长度、最大值、最小值
print(len(nums))
print(max(nums))
print(min(nums))
print(sum(nums))
列表推导式是 Python 的特色功能,可以简洁地创建列表:
# 基本语法
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 带条件
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]
# 嵌套
matrix = [[i*j for j in range(3)] for i in range(3)]
# [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
元组与列表类似,但它是不可变的(创建后不能修改)。
# 创建元组
t1 = (1, 2, 3)
t2 = ("a", "b", "c")
t3 = (1,) # 单个元素需要加逗号
t4 = () # 空元组
# 访问元素
print(t1[0]) # 1
print(t1[1:3]) # (2, 3)
t = (1, 2, 3, 2, 3, 2)
# 长度、索引、计数
print(len(t)) # 6
print(t.index(2)) # 1(第一个2的位置)
print(t.count(2)) # 3(2出现的次数)
# 遍历
for item in t:
print(item)
# 判断存在
print(2 in t) # True
# 打包
t = (1, 2, 3)
# 解包
a, b, c = t
print(a, b, c) # 1 2 3
# 交换变量(Python特色)
x, y = 1, 2
x, y = y, x # x=2, y=1
# 多个返回值
def get_point():
return (3, 4)
x, y = get_point()
字典是 Python 中的键值对数据结构,通过键来访问值,查找效率高。
# 创建字典
person = {
"name": "小明",
"age": 15,
"score": 95.5
}
# 也可以使用 dict()
d = dict(name="小红", age=16)
# 空字典
empty = {}
person = {"name": "小明", "age": 15, "score": 95.5}
# 访问值
print(person["name"]) # "小明"
print(person.get("age")) # 15
print(person.get("height", 170)) # 170(键不存在返回默认值)
# 添加/修改
person["height"] = 170 # 添加新键值对
person["age"] = 16 # 修改已有键的值
# 删除
del person["score"] # 删除键值对
age = person.pop("age") # 删除并返回值
# 遍历
for key in person:
print(key, person[key])
for key, value in person.items():
print(key, value)
for value in person.values():
print(value)
d = {"a": 1, "b": 2, "c": 3}
# 常用方法
print(len(d)) # 3
print("a" in d) # True
print(list(d.keys())) # ['a', 'b', 'c']
print(list(d.values())) # [1, 2, 3]
print(list(d.items())) # [('a', 1), ('b', 2), ('c', 3)]
# 更新字典
d.update({"d": 4, "e": 5}) # 合并另一个字典
# 清空
d.clear()
# 基本 if 语句
if 条件:
# 条件为真时执行
pass
# if-else 语句
score = 85
if score >= 60:
print("及格")
else:
print("不及格")
# if-elif-else 语句
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
elif 而不是 else if。注意代码块的缩进!
# 语法:值1 if 条件 else 值2
x = 10
y = 20
max_val = x if x > y else y
# 求绝对值
num = -5
abs_val = num if num >= 0 else -num
for 循环用于遍历可迭代对象:
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
# 遍历字典
person = {"name": "小明", "age": 15}
for key in person:
print(f"{key}: {person[key]}")
# 使用 range()
for i in range(5):
print(i) # 0, 1, 2, 3, 4
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8(步长为2)
# 计算1到100的和
total = 0
for i in range(1, 101):
total += i
print(total) # 5050
while 循环在条件为真时重复执行:
# 语法
while 条件:
循环体
# 示例:计算1到100的和
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(total) # 5050
# 猜数字游戏
import random
target = random.randint(1, 100)
while True:
guess = int(input("请猜一个数字: "))
if guess == target:
print("恭喜答对了!")
break
elif guess < target:
print("太小了")
else:
print("太大了")
# break: 退出整个循环
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
# continue: 跳过本次循环
for i in range(5):
if i == 2:
continue
print(i) # 0, 1, 3, 4
# else 子句(循环正常结束时执行)
for i in range(5):
print(i)
else:
print("循环正常结束")
函数是一段完成特定任务的代码块,可以被多次调用。使用函数可以:
# 定义函数
def say_hello():
print("Hello!")
# 调用函数
say_hello()
# 带参数的函数
def greet(name):
print(f"你好, {name}!")
greet("小明")
# 带返回值的函数
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 8
# 默认参数
def power(base, exp=2):
return base ** exp
print(power(3)) # 9 (3^2)
print(power(2, 10)) # 1024 (2^10)
# 关键字参数
def print_info(name, age):
print(f"姓名: {name}, 年龄: {age}")
print_info(age=15, name="小明") # 按名称传递参数
# *args - 接收任意数量的位置参数
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 6
print(sum_all(1, 2, 3, 4, 5)) # 15
# **kwargs - 接收任意数量的关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="小明", age=15, score=95)
递归是函数调用自身的过程:
# 阶乘
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
# 斐波那契数列
def fib(n):
if n <= 2:
return 1
return fib(n - 1) + fib(n - 2)
print(fib(10)) # 55
# 求和 1+2+...+n
def sum_n(n):
if n == 1:
return 1
return n + sum_n(n - 1)
print(sum_n(100)) # 5050
面向对象编程(OOP)是一种编程范式,通过"类"和"对象"来组织代码。
# 定义类
class Student:
# 初始化方法(构造器)
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
self.score = 0
# 实例方法
def introduce(self):
print(f"大家好,我叫{self.name},今年{self.age}岁")
def set_score(self, score):
if 0 <= score <= 100:
self.score = score
# 创建对象
stu1 = Student("小明", 15)
stu2 = Student("小红", 16)
# 调用方法
stu1.introduce()
stu1.set_score(95)
print(stu1.name, stu1.score)
# 父类
class Person:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"你好,我叫{self.name}")
# 子类
class Student(Person):
def __init__(self, name, school):
super().__init__(name) # 调用父类构造器
self.school = school
def say_hello(self):
super().say_hello() # 调用父类方法
print(f"我在{self.school}上学")
stu = Student("小明", "第一中学")
stu.say_hello()
# 读取整个文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 按行读取
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
# 读取所有行到列表
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
with 语句可以自动关闭文件,确保资源正确释放。
# 写入文件(覆盖)
with open("output.txt", "w", encoding="utf-8") as f:
f.write("第一行\n")
f.write("第二行\n")
# 追加写入
with open("output.txt", "a", encoding="utf-8") as f:
f.write("追加的内容\n")
# 写入多行
lines = ["第一行", "第二行", "第三行"]
with open("output.txt", "w", encoding="utf-8") as f:
f.write("\n".join(lines))
import json
# 写入 JSON
data = {"name": "小明", "age": 15, "scores": [95, 90, 88]}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# 读取 JSON
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data["name"])
无需安装软件,直接在浏览器中打开 Python 在线编辑器,即可编写和运行 Python 代码!
如果你更习惯在本地电脑上编程,可以下载以下离线编程工具,无需联网即可使用。
扫码添加微信客服 (加好友时请备注:小码豆)