====== 第一章 Python基础 ======
===== 本章概要 =====
本章将带你走进Python的世界,从零开始学习Python编程。我们将涵盖环境搭建、基本语法、变量和数据类型等核心概念,为你打下坚实的编程基础。
===== 1.1 Python简介 =====
==== 1.1.1 什么是Python ====
Python是一种高级的、解释型的、通用的编程语言。它由Guido van Rossum于1991年创建,名称来源于英国喜剧团体Monty Python。
Python的设计哲学强调:
* **可读性** - 代码应该容易被人类阅读
* **简洁性** - 用一种明显的方式来做一件事
* **明确性** - 面对歧义,拒绝猜测的诱惑
==== 1.1.2 Python的特点 ====
- **解释型语言**:不需要编译,直接运行
- **动态类型**:变量类型在运行时确定
- **自动内存管理**:内置垃圾回收机制
- **丰富的标准库**:"内置电池"理念
- **跨平台**:Windows、macOS、Linux均可运行
===== 1.2 环境搭建 =====
==== 1.2.1 安装Python ====
=== Windows系统 ===
1. 访问 https://www.python.org/downloads/
2. 下载最新版本的Python安装程序
3. 运行安装程序,**勾选"Add Python to PATH"**
4. 点击"Install Now"
5. 安装完成后,打开命令提示符,输入:
python --version
应显示Python版本号,如"Python 3.10.0"。
=== macOS系统 ===
macOS通常预装了Python 2.7。建议安装Python 3:
1. 使用Homebrew安装(推荐):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python
2. 或从官网下载安装程序
=== Linux系统 ===
大多数Linux发行版都预装了Python。检查版本:
python3 --version
如未安装,使用包管理器安装:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install python3 python3-pip
# CentOS/RHEL/Fedora
sudo dnf install python3 python3-pip
# Arch Linux
sudo pacman -S python python-pip
==== 1.2.2 验证安装 ====
打开终端或命令提示符,输入:
python3 --version # Linux/macOS
python --version # Windows
然后启动Python交互式解释器:
python3 # Linux/macOS
python # Windows
看到">>>"提示符,表示进入了Python交互式环境:
>>> print("Hello, Python!")
Hello, Python!
输入 ``exit()`` 或按 ``Ctrl+D`` (Linux/macOS) / ``Ctrl+Z`` (Windows) 退出。
==== 1.2.3 安装IDE ====
=== PyCharm ===
PyCharm是JetBrains开发的专业Python IDE,分为社区版(免费)和专业版(付费)。
下载地址:https://www.jetbrains.com/pycharm/download/
=== VS Code ===
Visual Studio Code是微软开发的轻量级代码编辑器,通过安装Python插件可获得良好的Python开发体验。
下载地址:https://code.visualstudio.com/
安装Python插件:
1. 打开VS Code
2. 点击左侧扩展图标
3. 搜索"Python"
4. 安装Microsoft官方Python扩展
===== 1.3 第一个Python程序 =====
==== 1.3.1 交互式编程 ====
打开Python解释器,直接输入代码:
>>> print("Hello, World!")
Hello, World!
>>> 2 + 3
5
>>> name = "Alice"
>>> print(f"Hello, {name}!")
Hello, Alice!
交互式环境适合快速测试代码片段。
==== 1.3.2 脚本式编程 ====
将代码保存到文件中,然后执行。
创建文件 ``hello.py``:
# hello.py
print("Hello, World!")
print("这是我的第一个Python程序")
运行程序:
python hello.py
==== 1.3.3 程序结构 ====
一个完整的Python程序通常包含:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
程序的文档字符串(docstring)
说明程序的功能和用法
"""
# 导入模块
import os
import sys
# 定义常量
MAX_COUNT = 100
# 定义函数
def greet(name):
"""打招呼函数"""
return f"Hello, {name}!"
# 主程序入口
if __name__ == "__main__":
print(greet("Python"))
===== 1.4 Python基础语法 =====
==== 1.4.1 缩进 ====
Python使用**缩进**来表示代码块,而不是大括号。这是Python最显著的特点之一。
# 正确示例
if True:
print("条件为真")
print("继续执行")
# 错误示例 - 缩进不一致
if True:
print("条件为真")
print("缩进错误") # IndentationError
规范:
* 使用**4个空格**作为一级缩进
* 不要使用Tab键
* 同一代码块的缩进必须一致
==== 1.4.2 注释 ====
注释用于解释代码,不会被程序执行。
=== 单行注释 ===
使用 ``#`` 符号:
# 这是单行注释
x = 10 # 这也是注释
=== 多行注释 ===
使用三个引号:
"""
这是多行注释
可以写多行文字
通常用于文档字符串
"""
'''
也可以用单引号
效果相同
'''
==== 1.4.3 行与缩进 ====
Python语句通常一行写一条:
print("第一行")
print("第二行")
使用反斜杠 ``\`` 实现多行语句:
total = item_one + \
item_two + \
item_three
在括号内可以直接换行:
total = (item_one +
item_two +
item_three)
一行写多条语句(不推荐):
import sys; x = 'foo'; sys.stdout.write(x + '\n')
==== 1.4.4 标识符 ====
标识符是变量、函数、类、模块等的名称。
命名规则:
* 只能包含字母、数字、下划线
* 不能以数字开头
* 区分大小写
* 不能使用Python关键字
# 有效的标识符
my_variable
private_var
MAX_SIZE
ClassName
function_name
_var2
# 无效的标识符
2var # 以数字开头
my-var # 包含连字符
my var # 包含空格
class # 关键字
命名规范(PEP 8):
* 变量名:小写,下划线分隔 ``my_variable``
* 常量名:大写,下划线分隔 ``MAX_SIZE``
* 类名:驼峰命名法 ``MyClass``
* 函数名:小写,下划线分隔 ``my_function``
* 私有变量:以下划线开头 ``_private``
* 强私有变量:以双下划线开头 ``__very_private``
==== 1.4.5 关键字 ====
Python有35个关键字,不能用作标识符:
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
# 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
# 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
# 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try',
# 'while', 'with', 'yield']
===== 1.5 变量 =====
==== 1.5.1 什么是变量 ====
变量是存储数据的容器。在Python中,变量不需要声明类型,直接赋值即可创建。
# 创建变量
name = "Alice"
age = 25
is_student = True
# 使用变量
print(name) # Alice
print(age) # 25
==== 1.5.2 变量赋值 ====
=== 基本赋值 ===
x = 10
y = 3.14
name = "Python"
=== 多重赋值 ===
# 同时为多个变量赋值
a = b = c = 0
# 序列解包
x, y, z = 1, 2, 3
# 交换变量
a, b = b, a
=== 动态类型 ===
Python是动态类型语言,变量类型可以随时改变:
x = 10 # x是整数
x = "hello" # x变成字符串
x = [1, 2, 3] # x变成列表
==== 1.5.3 变量的内存管理 ====
# 多个变量引用同一对象
a = [1, 2, 3]
b = a
b[0] = 100
print(a) # [100, 2, 3] - a也被修改了
# 使用id()查看内存地址
print(id(a))
print(id(b)) # 与a相同
===== 1.6 数据类型 =====
Python有以下几个基本数据类型:
==== 1.6.1 数字(Numbers) ====
=== 整数(int) ===
# 整数
x = 10
y = -5
z = 0
# 不同进制
binary = 0b1010 # 二进制,等于10
octal = 0o17 # 八进制,等于15
hexadecimal = 0xFF # 十六进制,等于255
# 大整数(Python 3自动支持)
big_number = 12345678901234567890
=== 浮点数(float) ===
pi = 3.14159
temperature = -20.5
scientific = 1.5e10 # 科学计数法,等于15000000000.0
=== 复数(complex) ===
z = 3 + 4j
print(z.real) # 3.0
print(z.imag) # 4.0
=== 数字运算 ===
# 基本运算
print(10 + 3) # 加法: 13
print(10 - 3) # 减法: 7
print(10 * 3) # 乘法: 30
print(10 / 3) # 除法: 3.333...
print(10 // 3) # 整除: 3
print(10 % 3) # 取模: 1
print(10 ** 3) # 幂运算: 1000
# 复合赋值
x = 10
x += 5 # x = x + 5
x -= 3 # x = x - 3
x *= 2 # x = x * 2
x /= 4 # x = x / 4
==== 1.6.2 字符串(String) ====
字符串是字符的序列,用单引号、双引号或三引号表示。
# 创建字符串
single = 'Hello'
double = "World"
multi_line = """
这是一个
多行字符串
"""
# 转义字符
path = "C:\\Users\\Name" # 反斜杠转义
quote = 'It\'s a book' # 单引号转义
=== 字符串操作 ===
# 拼接
s1 = "Hello"
s2 = "World"
print(s1 + " " + s2) # Hello World
# 重复
print("Hi! " * 3) # Hi! Hi! Hi!
# 索引和切片
text = "Python"
print(text[0]) # P
print(text[-1]) # n
print(text[0:3]) # Pyt
print(text[::2]) # Pto
# 字符串方法
print(text.upper()) # PYTHON
print(text.lower()) # python
print(text.replace('P', 'J')) # Jython
print(len(text)) # 6
print(text.find('th')) # 2
=== 字符串格式化 ===
name = "Alice"
age = 25
# % 格式化(旧式)
print("My name is %s, I'm %d years old." % (name, age))
# str.format() 方法
print("My name is {}, I'm {} years old.".format(name, age))
print("My name is {0}, I'm {1} years old.".format(name, age))
print("My name is {n}, I'm {a} years old.".format(n=name, a=age))
# f-string(推荐,Python 3.6+)
print(f"My name is {name}, I'm {age} years old.")
print(f"Next year I'll be {age + 1} years old.")
==== 1.6.3 布尔类型(Boolean) ====
t = True
f = False
# 布尔运算
print(True and False) # False
print(True or False) # True
print(not True) # False
# 比较运算
print(5 > 3) # True
print(5 == 5) # True
print(5 != 3) # True
==== 1.6.4 空值(None) ====
value = None
print(value) # None
print(type(value)) #
# 检查None
if value is None:
print("值为空")
==== 1.6.5 类型转换 ====
# 转整数
print(int("10")) # 10
print(int(3.14)) # 3
print(int("1010", 2)) # 10(二进制转十进制)
# 转浮点数
print(float("3.14")) # 3.14
print(float(10)) # 10.0
# 转字符串
print(str(123)) # "123"
print(str(3.14)) # "3.14"
print(str(True)) # "True"
# 转布尔
print(bool(1)) # True
print(bool(0)) # False
print(bool("")) # False
print(bool("hello")) # True
===== 1.7 输入输出 =====
==== 1.7.1 输出(print) ====
# 基本输出
print("Hello")
# 输出多个值
print("Name:", "Alice", "Age:", 25)
# 自定义分隔符
print("a", "b", "c", sep="-") # a-b-c
# 自定义结束符
print("Hello", end=" ")
print("World") # Hello World
# 输出到文件
with open("output.txt", "w") as f:
print("写入文件", file=f)
==== 1.7.2 输入(input) ====
# 基本输入(返回字符串)
name = input("请输入你的名字: ")
print(f"你好, {name}!")
# 输入数字
age = int(input("请输入你的年龄: "))
print(f"你明年就 {age + 1} 岁了")
# 输入多个值
x, y = input("请输入两个数字,用空格分隔: ").split()
x, y = int(x), int(y)
print(f"和: {x + y}")
===== 1.8 运算符 =====
==== 1.8.1 算术运算符 ====
| 运算符 | 描述 | 示例 |
|--------+------+------|
| + | 加 | 5 + 3 = 8 |
| - | 减 | 5 - 3 = 2 |
| * | 乘 | 5 * 3 = 15 |
| / | 除 | 5 / 3 = 1.666... |
| // | 整除 | 5 // 3 = 1 |
| % | 取模 | 5 % 3 = 2 |
| ** | 幂 | 5 ** 3 = 125 |
==== 1.8.2 比较运算符 ====
| 运算符 | 描述 | 示例 |
|--------+------+------|
| == | 等于 | 5 == 5 → True |
| != | 不等于 | 5 != 3 → True |
| > | 大于 | 5 > 3 → True |
| < | 小于 | 5 < 3 → False |
| >= | 大于等于 | 5 >= 5 → True |
| <= | 小于等于 | 5 <= 3 → False |
==== 1.8.3 赋值运算符 ====
| 运算符 | 描述 | 等效于 |
|--------+------+--------|
| = | 赋值 | x = 5 |
| += | 加赋值 | x += 5 → x = x + 5 |
| -= | 减赋值 | x -= 5 → x = x - 5 |
| *= | 乘赋值 | x *= 5 → x = x * 5 |
| /= | 除赋值 | x /= 5 → x = x / 5 |
| //= | 整除赋值 | x //= 5 → x = x // 5 |
| %= | 取模赋值 | x %= 5 → x = x % 5 |
| **= | 幂赋值 | x **= 5 → x = x ** 5 |
==== 1.8.4 逻辑运算符 ====
| 运算符 | 描述 | 示例 |
|--------+------+------|
| and | 与 | True and False → False |
| or | 或 | True or False → True |
| not | 非 | not True → False |
==== 1.8.5 位运算符 ====
| 运算符 | 描述 | 示例 |
|--------+------+------|
| & | 按位与 | 5 & 3 = 1 |
| \| | 按位或 | 5 \| 3 = 7 |
| ^ | 按位异或 | 5 ^ 3 = 6 |
| ~ | 按位取反 | ~5 = -6 |
| << | 左移 | 5 << 1 = 10 |
| >> | 右移 | 5 >> 1 = 2 |
==== 1.8.6 成员运算符 ====
# in 和 not in
fruits = ["apple", "banana", "cherry"]
print("apple" in fruits) # True
print("orange" not in fruits) # True
# 字符串
print("Py" in "Python") # True
==== 1.8.7 身份运算符 ====
# is 和 is not
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True(同一对象)
print(a is c) # False(不同对象,值相同)
print(a == c) # True(值相等)
# 常用:检查None
x = None
print(x is None) # True
===== 1.9 代码示例 =====
==== 示例1:温度转换器 ====
# 温度转换器
print("温度转换器")
print("1. 摄氏度转华氏度")
print("2. 华氏度转摄氏度")
choice = input("请选择 (1/2): ")
if choice == "1":
celsius = float(input("请输入摄氏度: "))
fahrenheit = celsius * 9/5 + 32
print(f"{celsius}°C = {fahrenheit}°F")
elif choice == "2":
fahrenheit = float(input("请输入华氏度: "))
celsius = (fahrenheit - 32) * 5/9
print(f"{fahrenheit}°F = {celsius}°C")
else:
print("无效选择")
==== 示例2:简易计算器 ====
# 简易计算器
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符 (+, -, *, /): ")
num2 = float(input("请输入第二个数字: "))
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 != 0:
result = num1 / num2
else:
result = "错误:除数不能为零"
else:
result = "错误:无效的运算符"
print(f"结果: {result}")
===== 1.10 练习题 =====
==== 练习1:个人信息输出 ====
编写程序,输入姓名、年龄、爱好,然后输出格式化的个人信息。
# 参考答案
name = input("请输入姓名: ")
age = input("请输入年龄: ")
hobby = input("请输入爱好: ")
print("\n===== 个人信息 =====")
print(f"姓名: {name}")
print(f"年龄: {age}岁")
print(f"爱好: {hobby}")
print("===================")
==== 练习2:BMI计算器 ====
编写程序,根据输入的身高(米)和体重(公斤),计算BMI指数。
BMI公式:体重(kg) / 身高(m)²
# 参考答案
height = float(input("请输入身高(米): "))
weight = float(input("请输入体重(公斤): "))
bmi = weight / (height ** 2)
print(f"您的BMI指数为: {bmi:.2f}")
if bmi < 18.5:
print("体重过轻")
elif bmi < 24:
print("体重正常")
elif bmi < 28:
print("超重")
else:
print("肥胖")
==== 练习3:秒数转换 ====
编写程序,将输入的秒数转换为"小时:分钟:秒"格式。
# 参考答案
total_seconds = int(input("请输入秒数: "))
hours = total_seconds // 3600
minutes = (total_seconds % 3600) // 60
seconds = total_seconds % 60
print(f"{total_seconds}秒 = {hours}小时 {minutes}分钟 {seconds}秒")
print(f"格式化输出: {hours:02d}:{minutes:02d}:{seconds:02d}")
===== 本章小结 =====
本章学习了Python编程的基础知识:
* **环境搭建** - 安装Python和IDE
* **基本语法** - 缩进、注释、标识符
* **变量** - 动态类型、多重赋值
* **数据类型** - 数字、字符串、布尔值、None
* **运算符** - 算术、比较、逻辑、位、成员、身份运算符
* **输入输出** - print()和input()
掌握这些基础知识后,你已经可以编写简单的Python程序了。继续学习下一章,了解Python的控制流语句。
===== 进一步阅读 =====
* [[https://docs.python.org/zh-cn/3/tutorial/introduction.html|Python官方教程 - 简介]]
* [[https://pep8.org/|PEP 8 - Python代码风格指南]]
* [[https://www.python.org/dev/peps/pep-0020/|PEP 20 - Python之禅]]