目录
Python是什么?
想象一下,你有一个聪明又听话的朋友,你可以用接近日常英语的语言告诉他做什么,他就能准确地完成任务。Python就像这样一个朋友 - 它是一种编程语言,让你可以用相对简单的指令告诉计算机做什么。
Python是由荷兰人Guido van Rossum在1989年开发的,他希望创造一种易于阅读和使用的语言。Python的名字来源于他喜欢的英国喜剧团体"Monty Python"。
为什么要学习Python?
- 简单易学:Python的语法设计得很直观,类似于英语。
- 使用广泛:从网站开发到数据分析,从人工智能到游戏开发,Python几乎无处不在。
- 就业机会多:Python是招聘市场上最需要的技能之一。
- 强大的社区支持:有大量的资源、库和框架可以帮助你。
- 适合初学者和专家:无论你是编程新手还是有经验的开发者,Python都有适合你的用途。
想象一下:
- 如果编程语言是交通工具,那么Python就像是一辆容易上手的自行车,而不是需要复杂操作的飞机。
- 如果编程语言是乐器,Python就像是尤克里里,容易学会第一首歌,而不是需要多年练习的小提琴。
如何安装Python
步骤1:下载Python
- 打开浏览器,访问官方网站:python.org
- 点击"Downloads"(下载)按钮
- 网站会自动检测你的操作系统并推荐合适的版本
- 下载最新的Python 3版本(例如Python 3.11.0)
小贴士:始终选择Python 3,因为Python 2已于2020年停止支持。
步骤2:安装Python
Windows用户:
- 双击下载的.exe文件
- 重要:勾选"Add Python to PATH"选项(这会让你在任何地方都能使用Python)
- 点击"Install Now"(立即安装)
- 等待安装完成
- 看到"Setup was successful"(安装成功)就完成了
Mac用户:
- 双击下载的.pkg文件
- 按照安装向导的指示进行操作
- 输入管理员密码(如果要求)
- 等待安装完成
Linux用户: 大多数Linux发行版已经预装了Python。你可以在终端中输入python3 --version
检查。如果没有安装,使用包管理器安装:
- Ubuntu/Debian:
sudo apt install python3
- Fedora:
sudo dnf install python3
步骤3:验证安装
- 打开命令提示符(Windows)或终端(Mac/Linux)
- 输入:
python --version
或python3 --version
- 如果看到类似"Python 3.11.0"的输出,说明安装成功
步骤4:安装一个好用的编辑器
虽然Python自带一个简单的编辑器(IDLE),但使用更强大的编辑器会让编程更加愉快。推荐初学者使用:
- Visual Studio Code(免费,功能丰富)
- PyCharm Community Edition(免费,专为Python设计)
- Thonny(免费,专为Python初学者设计)
小贴士:如果你完全是编程新手,推荐先安装Thonny,它专为初学者设计,安装简单,界面清爽。
第一个Python程序
传统的"Hello, World!"
在编程世界,编写一个显示"Hello, World!"的程序是传统的第一步。
使用Python解释器
- 打开命令提示符或终端
- 输入
python
或python3
进入Python解释器(你会看到>>>
提示符) - 输入:
print("Hello, World!")
- 按回车键,你应该会看到:
Hello, World!
- 输入
exit()
或按Ctrl+Z (Windows)或Ctrl+D (Mac/Linux)退出解释器
使用Python文件
- 打开你的代码编辑器
- 创建新文件
- 输入:
print("Hello, World!")
- 保存为
hello.py
- 在命令提示符或终端中,导航到保存文件的文件夹
- 运行:
python hello.py
或python3 hello.py
- 你会看到输出:
Hello, World!
理解你的第一个程序
print("Hello, World!")
这行代码做了什么?
print()
是一个内置函数,用于在屏幕上显示信息- 括号内的内容是要显示的内容
"Hello, World!"
是一个字符串(文本),由引号包围
类比:想象
print()
函数像是一个喊话器,你在喊话器里说的任何话(放在括号里的内容)都会被喊出来(显示在屏幕上)。
进阶一点:个性化你的程序
让我们创建一个稍微复杂一点的程序,它会问你的名字,然后打招呼:
# 这个程序会向用户打招呼
name = input("请输入你的名字:") # 获取用户输入并存储在变量中
print("你好," + name + "!欢迎学习Python!") # 组合文本并显示
保存为greeting.py
并运行。程序会:
- 显示"请输入你的名字:"并等待你输入
- 将你输入的名字存储在
name
变量中 - 显示个性化的问候语,包含你的名字
程序运行结果示例:
请输入你的名字:小明
你好,小明!欢迎学习Python!
成就解锁:恭喜你!你刚刚写了一个可以与用户交互的程序!
Python基础语法
缩进:Python的灵魂
在大多数编程语言中,使用花括号{}
来标记代码块。但Python使用缩进(通常是4个空格)来表示代码块。这使得Python代码非常整洁易读,但也意味着缩进错误会导致程序出错。
# 正确的缩进
if True:
print("这句话会被打印")
print("这句话也会被打印")
if True:
print("更深的缩进")
print("回到最外层")
# 错误的缩进
if True:
print("这是正确的")
print("这也是正确的,不在if语句块内")
print("错误!不一致的缩进") # 这行会引起错误!
类比:想象缩进就像是书中的段落和子段落。主段落靠左对齐,子段落缩进表示它们属于上一个主段落。
缩进的黄金法则:
- 同一个代码块中的语句必须有相同的缩进
- 子代码块比父代码块多缩进一级(通常是4个空格)
- 使用空格而不是制表符(Tab)缩进,或将编辑器配置为按Tab键插入4个空格
注释:给代码加说明
注释是写给人看的,Python解释器会忽略它们。好的注释可以让你和其他人更容易理解代码。
# 这是单行注释
print("Hello") # 这也是注释,可以放在代码后面
"""
这是多行注释
可以跨越多行
通常用于函数或类的文档说明
"""
'''
这也是多行注释
单引号或双引号都可以
只要有三个连续的引号
'''
写好注释的技巧:
- 解释为什么(代码的目的),而不是怎么做(代码已经显示了这点)
- 解释复杂的算法或逻辑
- 更新代码时更新相关注释
- 不要写显而易见的注释,如
# 将x加1
这样的
Python中的数据类型
数字:整数、小数和复数
Python支持多种数字类型,让你可以处理几乎所有类型的数值数据。
整数 (int)
整数是没有小数部分的数字。
age = 25
temperature = -10
large_number = 1000000 # 一百万
# 可读性更好的大数字写法
large_number = 1_000_000 # 下划线会被忽略,只是为了提高可读性
print(type(age)) # <class 'int'>
浮点数 (float)
浮点数是有小数部分的数字。
height = 1.75 # 米
pi = 3.14159
tiny = 1.0e-10 # 科学记数法:1.0 × 10^(-10)
print(type(height)) # <class 'float'>
注意:浮点数可能有精度问题。例如,
0.1 + 0.2
可能不完全等于0.3
,而是非常接近的值,如0.30000000000000004
。这是因为计算机以二进制存储小数,有些小数无法精确表示。
复数 (complex)
复数有实部和虚部,使用j
表示虚部。
c = 3 + 4j # 复数:3 + 4i
print(c.real) # 3.0(实部)
print(c.imag) # 4.0(虚部)
print(type(c)) # <class 'complex'>
数字运算
# 基本算术
a = 10
b = 3
print(a + b) # 13(加法)
print(a - b) # 7(减法)
print(a * b) # 30(乘法)
print(a / b) # 3.3333...(除法,结果是浮点数)
print(a // b) # 3(整除,结果是整数)
print(a % b) # 1(取余,即10除以3后的余数)
print(a ** b) # 1000(幂运算,10的3次方)
# 复合赋值运算符
x = 5
x += 3 # 等同于 x = x + 3
print(x) # 8
y = 10
y *= 2 # 等同于 y = y * 2
print(y) # 20
类比:整数就像是你在数数时用的数字(1, 2, 3...);浮点数就像是带小数点的测量值(身高、体重);复数就像是在平面坐标系中同时表示x和y坐标的数。
字符串:处理文本
字符串是一系列字符的集合,用于表示文本数据。在Python中,字符串用单引号('
)或双引号("
)括起来。
创建字符串
# 单引号或双引号都可以
name = 'Alice'
greeting = "Hello, World!"
# 三引号可以创建多行字符串
address = """123 Main St.
Anytown, CA 12345
USA"""
print(address)
# 输出:
# 123 Main St.
# Anytown, CA 12345
# USA
字符串操作
# 字符串连接(合并)
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name
print(full_name) # John Doe
# 重复字符串
echo = "Hello " * 3
print(echo) # Hello Hello Hello
# 获取字符串长度
message = "Welcome to Python!"
length = len(message)
print(length) # 18
# 索引(获取单个字符)
# 索引从0开始!第一个字符的索引是0,第二个是1,依此类推
print(message[0]) # W(第一个字符)
print(message[11]) # P
# 负索引(从字符串末尾开始)
print(message[-1]) # !(最后一个字符)
print(message[-2]) # n(倒数第二个字符)
# 切片(获取子字符串)
print(message[0:7]) # Welcome(从索引0开始,直到但不包括索引7)
print(message[:7]) # Welcome(省略起始索引表示从开头开始)
print(message[11:]) # Python!(省略结束索引表示直到末尾)
print(message[::2]) # Wloet yhn(步长为2,即隔一个字符取一个)
类比:字符串就像一个字符项链,每个字符是一个珠子。索引就是珠子的位置编号,切片就是获取一段连续的珠子。
字符串方法
Python的字符串有很多内置方法,帮助你执行常见操作:
text = " Hello, Python World! "
# 大小写转换
print(text.upper()) # 转大写: " HELLO, PYTHON WORLD! "
print(text.lower()) # 转小写: " hello, python world! "
print(text.title()) # 每个单词首字母大写: " Hello, Python World! "
# 去除空白
print(text.strip()) # 去除两端空白: "Hello, Python World!"
print(text.lstrip()) # 去除左侧空白: "Hello, Python World! "
print(text.rstrip()) # 去除右侧空白: " Hello, Python World!"
# 查找和替换
print(text.find("Python")) # 查找子串,返回首次出现的索引: 9
print(text.replace("Python", "Amazing")) # 替换: " Hello, Amazing World! "
# 拆分和连接
words = text.split() # 按空白拆分成列表
print(words) # ['Hello,', 'Python', 'World!']
new_text = "-".join(words) # 用-连接列表中的字符串
print(new_text) # Hello,-Python-World!
# 检查内容
print("Python" in text) # True(检查是否包含"Python")
print(text.startswith("Hello")) # False(因为有前导空格)
print(text.endswith("!")) # False(因为有尾随空格)
# 格式化字符串
name = "张三"
age = 25
# 使用f-string(Python 3.6+)
greeting = f"你好,{name}!你已经{age}岁了。"
print(greeting) # 你好,张三!你已经25岁了。
# 旧式格式化
greeting2 = "你好,%s!你已经%d岁了。" % (name, age)
print(greeting2) # 你好,张三!你已经25岁了。
# format方法
greeting3 = "你好,{0}!你已经{1}岁了。".format(name, age)
print(greeting3) # 你好,张三!你已经25岁了。
小贴士:f-string是Python 3.6+中推荐的字符串格式化方法,它简洁易读,性能也更好。
列表:有序的集合
列表是Python中最常用的数据类型之一,用于存储有序的项目集合。列表可以包含不同类型的元素,甚至可以包含其他列表。
创建列表
# 创建列表
fruits = ["apple", "banana", "cherry"]
mixed = [1, "hello", 3.14, True]
empty_list = []
# 创建列表的另一种方式
numbers = list(range(1, 6)) # 使用range函数创建列表[1, 2, 3, 4, 5]
print(numbers)
访问列表元素
# 通过索引访问(从0开始)
print(fruits[0]) # apple
print(fruits[1]) # banana
print(fruits[-1]) # cherry(负索引从末尾开始)
# 切片(与字符串类似)
print(fruits[0:2]) # ['apple', 'banana'](从索引0到1)
print(fruits[:2]) # ['apple', 'banana'](从开头到索引1)
print(fruits[1:]) # ['banana', 'cherry'](从索引1到末尾)
修改列表
列表是可变的,这意味着你可以在创建后改变它们:
# 修改元素
fruits[0] = "orange"
print(fruits) # ['orange', 'banana', 'cherry']
# 添加元素
fruits.append("grape") # 在末尾添加
print(fruits) # ['orange', 'banana', 'cherry', 'grape']
fruits.insert(1, "kiwi") # 在指定位置插入
print(fruits) # ['orange', 'kiwi', 'banana', 'cherry', 'grape']
# 扩展列表
more_fruits = ["pear", "melon"]
fruits.extend(more_fruits) # 添加另一个列表的所有元素
# 也可以用 fruits += more_fruits
print(fruits) # ['orange', 'kiwi', 'banana', 'cherry', 'grape', 'pear', 'melon']
# 删除元素
fruits.remove("banana") # 删除指定元素
print(fruits) # ['orange', 'kiwi', 'cherry', 'grape', 'pear', 'melon']
popped = fruits.pop() # 删除并返回最后一个元素
print(popped) # melon
print(fruits) # ['orange', 'kiwi', 'cherry', 'grape', 'pear']
popped_index = fruits.pop(1) # 删除并返回指定索引的元素
print(popped_index) # kiwi
print(fruits) # ['orange', 'cherry', 'grape', 'pear']
del fruits[0] # 删除指定索引的元素(不返回值)
print(fruits) # ['cherry', 'grape', 'pear']
类比:列表就像一个火车,每个车厢是一个元素。你可以查看任何车厢的内容(索引),替换车厢(修改),添加新车厢(append/insert),或者移除车厢(remove/pop)。
常用列表操作
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# 列表长度
print(len(numbers)) # 8
# 排序
numbers.sort() # 原地排序(改变原列表)
print(numbers) # [1, 1, 2, 3, 4, 5, 6,