课程亮点
无需编程基础,手把手带你入门Python
每章配套可直接复用的代码片段和模板
课后练手项目 + 详细解答,巩固所学
学习路径
适合人群
· 零基础想学习编程的同学
· 数据分析专业需要Python基础的同学
· 想提升自动化办公效率的同学
· 基本的电脑操作能力
· 如果完全没接触过电脑,建议先熟悉基本操作
学完能做什么
学完本课程,你将能够:
- 独立编写Python脚本处理日常数据任务
- 使用Python进行文件批量处理和自动化办公
- 为后续数据分析、爬虫等进阶课程打下坚实基础
- 理解编程思维,具备自学其他编程语言的能力
Python环境搭建与第一个程序
1.1 Python简介
Python 是由 Guido van Rossum 于 1991 年发布的高级编程语言,以简洁、易读的语法著称。它广泛应用于 Web 开发、数据分析、人工智能、自动化运维等领域。Python 的设计哲学强调代码的可读性和简洁性,使得初学者能够快速上手。
Python 的主要特点包括:
- 简单易学:语法接近自然语言,适合编程入门
- 开源免费:拥有庞大的社区和丰富的第三方库
- 跨平台:支持 Windows、macOS、Linux 等操作系统
- 解释型语言:无需编译,直接运行源代码
- 丰富的标准库:内置大量常用模块,开箱即用
1.2 安装Python
访问 Python 官方网站 https://www.python.org 下载最新版本的 Python 安装包。安装时请务必勾选 "Add Python to PATH" 选项,这样可以在命令行中直接使用 python 命令。
安装完成后,打开命令行(Windows 按 Win+R 输入 cmd,macOS/Linux 打开终端),输入以下命令验证安装是否成功:
python --version
如果正确显示 Python 版本号(如 Python 3.12.0),说明安装成功。
1.3 IDLE的使用
IDLE 是 Python 自带的集成开发环境,安装 Python 时会自动安装。它提供了两种工作模式:
- 交互模式(Shell):输入一行代码立即执行并返回结果,适合快速测试
- 脚本模式(File):新建文件编写多行代码,保存后整体运行,适合编写完整程序
启动 IDLE 后,你会看到 >>> 提示符,这就是交互模式。在交互模式下可以直接输入 Python 表达式:
>>> 2 + 3
5
>>> "Hello"
'Hello'
1.4 第一个Hello World程序
按照编程界的传统,我们从最简单的 "Hello, World!" 程序开始。在 IDLE 中点击 File → New File,输入以下代码并保存为 hello.py,然后按 F5 运行:
# 我的第一个Python程序
print("Hello, World!")
print("欢迎来到Python的世界!")
print("I'm learning Python.")
运行结果:
Hello, World!
欢迎来到Python的世界!
I'm learning Python.
1.5 print()函数详解
print() 是 Python 中最常用的输出函数,用于将内容显示到屏幕上。它支持多种用法:
# 输出字符串
print("你好,Python!")
# 输出数字
print(100)
print(3.14)
# 输出多个内容(用逗号分隔,默认空格隔开)
print("姓名:", "张三", "年龄:", 20)
# 自定义分隔符
print("2024", "01", "01", sep="-")
# 自定义结尾(默认换行)
print("第一行", end=" ")
print("第二行")
运行结果:
你好,Python!
100
3.14
姓名: 张三 年龄: 20
2024-01-01
第一行 第二行
1.6 注释
注释是代码中不会被 Python 执行的说明性文字,用于提高代码的可读性。Python 支持两种注释方式:
# 这是单行注释,用井号开头
# 下面这行代码会输出一段文字
print("注释不会被执行")
"""
这是多行注释(文档字符串)
可以写多行说明
常用于函数、类的说明文档
"""
'''
这也是多行注释
使用三个单引号
'''
print("多行注释同样不会被执行")
变量与数据类型
2.1 变量与命名规则
变量是程序中用来存储数据的"容器"。在 Python 中,不需要事先声明变量类型,直接赋值即可创建变量。Python 会根据赋值自动推断数据类型。
# 创建变量并赋值
name = "张三"
age = 20
height = 1.75
is_student = True
# 输出变量的值
print(name)
print(age)
print(height)
print(is_student)
Python 变量命名需要遵循以下规则:
- 只能包含字母、数字和下划线
_ - 不能以数字开头
- 不能使用 Python 关键字(如
if、for、class等) - 区分大小写(
name和Name是不同的变量) - 建议使用有意义的名称,遵循蛇形命名法(snake_case)
# 合法的变量名
user_name = "李四"
score1 = 95
_private = "私有变量"
# 不合法的变量名(会报错)
# 2name = "错误" # 不能以数字开头
# user-name = "错误" # 不能包含连字符
# class = "错误" # 不能使用关键字
type() 函数可以随时查看变量的数据类型,这在调试时非常有用。2.2 基本数据类型
Python 中有四种最常用的基本数据类型:
| 数据类型 | 关键字 | 说明 | 示例 |
|---|---|---|---|
| 整数 | int | 没有小数部分的数 | 10, -3, 0 |
| 浮点数 | float | 带小数部分的数 | 3.14, -0.5, 2.0 |
| 字符串 | str | 文本数据 | "Hello", 'Python' |
| 布尔值 | bool | 逻辑值 | True, False |
# 整数 int
a = 100
b = -20
c = 0
print(type(a)) # <class 'int'>
# 浮点数 float
pi = 3.14159
temperature = -5.5
print(type(pi)) # <class 'float'>
# 字符串 str
greeting = "你好"
message = 'Python是一门优秀的语言'
multi_line = """这是一段
多行字符串"""
print(type(greeting)) # <class 'str'>
# 布尔值 bool
is_valid = True
is_empty = False
print(type(is_valid)) # <class 'bool'>
2.3 类型转换
不同数据类型之间可以相互转换。Python 提供了内置函数来实现类型转换:
| 转换函数 | 作用 | 示例 |
|---|---|---|
| int() | 转换为整数 | int("123") → 123 |
| float() | 转换为浮点数 | float("3.14") → 3.14 |
| str() | 转换为字符串 | str(100) → "100" |
| bool() | 转换为布尔值 | bool(0) → False |
# 字符串转整数
num_str = "42"
num = int(num_str)
print(num + 8) # 50
# 整数转字符串
age = 20
age_str = str(age)
print("我今年" + age_str + "岁") # 我今年20岁
# 浮点数转整数(截断小数部分)
price = 19.99
print(int(price)) # 19
# 字符串转浮点数
pi_str = "3.14"
pi = float(pi_str)
print(pi * 2) # 6.28
int("abc") 会抛出 ValueError,因为 "abc" 无法转换为数字。在进行类型转换前,最好先确认数据的格式是否正确。2.4 input()输入函数
input() 函数用于从键盘接收用户输入。需要注意的是,input() 返回的始终是字符串类型,如果需要数字运算,必须进行类型转换。
# 基本输入
name = input("请输入你的名字:")
print("你好," + name + "!")
# 输入数字(需要类型转换)
age = int(input("请输入你的年龄:"))
print("你明年" + str(age + 1) + "岁")
# 输入浮点数
height = float(input("请输入你的身高(米):"))
print("你的身高是:" + str(height) + "米")
# 计算BMI示例
weight = float(input("请输入体重(公斤):"))
bmi = weight / (height ** 2)
print("你的BMI指数为:" + str(round(bmi, 2)))
f-string(格式化字符串)可以更方便地将变量嵌入字符串中,无需反复进行类型转换。语法为 f"...{变量}..."。2.5 字符串操作
字符串是 Python 中最常用的数据类型之一,提供了丰富的操作方法:
# 字符串拼接
first = "Hello"
second = "World"
print(first + " " + second) # Hello World
# 字符串重复
print("Ha" * 3) # HaHaHa
# 字符串索引(从0开始)
s = "Python"
print(s[0]) # P
print(s[-1]) # n(负数从末尾开始)
# 字符串切片
print(s[0:3]) # Pyt(包含起始,不包含结束)
print(s[2:]) # thon(从索引2到末尾)
print(s[:3]) # Pyt(从开头到索引3)
# 常用字符串方法
text = " Hello, Python! "
print(text.strip()) # "Hello, Python!"(去除首尾空格)
print(text.lower()) # " hello, python! "(转小写)
print(text.upper()) # " HELLO, PYTHON! "(转大写)
print(text.replace("Hello", "Hi")) # " Hi, Python! "
print(text.split(",")) # [' Hello', ' Python! ']
print("Py" in "Python") # True(判断子串是否存在)
print(len("Python")) # 6(字符串长度)
# f-string 格式化字符串(推荐方式)
name = "张三"
age = 20
score = 95.5
print(f"姓名:{name},年龄:{age},成绩:{score}")
# 格式化输出(保留小数位)
pi = 3.1415926
print(f"圆周率保留两位小数:{pi:.2f}") # 圆周率保留两位小数:3.14
print(f"金额:{10000:.2f}元") # 金额:10000.00元
s.upper() 不会改变 s 本身,需要用 s = s.upper() 来接收结果。流程控制
3.1 条件判断:if / elif / else
条件判断是程序根据不同条件执行不同代码块的机制。Python 使用 if、elif、else 关键字来实现条件判断,注意使用缩进(通常4个空格)来表示代码块的层次关系。
# 基本条件判断
age = 18
if age >= 18:
print("你已成年")
else:
print("你未成年")
# 多条件判断
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
# 条件表达式(三元运算符)
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 成年
# 多条件组合
temperature = 35
is_raining = False
if temperature > 30 and not is_raining:
print("天气炎热且没有下雨,注意防晒")
elif temperature > 30 and is_raining:
print("高温天气且有雨,闷热潮湿")
elif temperature <= 30 and is_raining:
print("下雨天,记得带伞")
else:
print("天气适宜,适合外出")
Python 中的比较运算符和逻辑运算符:
| 运算符 | 说明 | 示例 |
|---|---|---|
| == | 等于 | 5 == 5 → True |
| != | 不等于 | 5 != 3 → True |
| > < >= <= | 大于、小于、大于等于、小于等于 | 3 > 2 → True |
| and | 逻辑与(两个都为True) | True and False → False |
| or | 逻辑或(至少一个为True) | True or False → True |
| not | 逻辑非(取反) | not True → False |
if 0 < x < 100: 等价于 if x > 0 and x < 100:,更加简洁直观。3.2 循环:for循环
for 循环用于遍历序列(如列表、字符串、范围等)中的每一个元素。
# 遍历字符串
for char in "Python":
print(char, end=" ")
# 输出:P y t h o n
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 使用 range() 生成数字序列
for i in range(5):
print(i, end=" ") # 0 1 2 3 4
# range(start, stop, step)
for i in range(1, 10, 2):
print(i, end=" ") # 1 3 5 7 9
# enumerate 同时获取索引和值
languages = ["Python", "Java", "C++"]
for index, lang in enumerate(languages):
print(f"第{index + 1}名:{lang}")
3.3 循环:while循环
while 循环在条件为 True 时反复执行代码块,适合循环次数不确定的场景。
# 基本 while 循环
count = 1
while count <= 5:
print(f"第 {count} 次循环")
count += 1
# 猜数字游戏示例
import random
target = random.randint(1, 100)
guess = 0
attempts = 0
while guess != target:
guess = int(input("猜一个1-100之间的数字:"))
attempts += 1
if guess < target:
print("太小了,再大一点!")
elif guess > target:
print("太大了,再小一点!")
else:
print(f"恭喜你,猜对了!共猜了{attempts}次")
while 循环时一定要确保循环条件最终会变为 False,否则会造成"死循环"(无限循环)。如果程序意外进入死循环,可以按 Ctrl+C 强制终止。3.4 break 与 continue
break 用于立即跳出整个循环,continue 用于跳过当前轮次,直接进入下一轮循环。
# break:找到目标后立即退出循环
numbers = [3, 7, 2, 9, 4, 6]
for num in numbers:
if num == 9:
print(f"找到数字 {num},循环结束")
break
print(f"检查数字 {num}")
# continue:跳过不需要处理的元素
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i, end=" ") # 1 3 5 7 9
# break 与 continue 组合使用
while True:
cmd = input("输入命令(quit退出,skip跳过):")
if cmd == "quit":
print("程序退出")
break
if cmd == "skip":
print("跳过本轮")
continue
print(f"执行命令:{cmd}")
3.5 range()函数详解
range() 是 Python 中生成整数序列的内置函数,常与 for 循环配合使用。
# range(stop) —— 生成 0 到 stop-1 的序列
for i in range(5):
print(i, end=" ") # 0 1 2 3 4
# range(start, stop) —— 生成 start 到 stop-1 的序列
for i in range(3, 8):
print(i, end=" ") # 3 4 5 6 7
# range(start, stop, step) —— 指定步长
for i in range(0, 20, 3):
print(i, end=" ") # 0 3 6 9 12 15 18
# 倒序
for i in range(10, 0, -1):
print(i, end=" ") # 10 9 8 7 6 5 4 3 2 1
# range 转换为列表
nums = list(range(1, 6))
print(nums) # [1, 2, 3, 4, 5]
# 实际应用:计算1到100的和
total = 0
for i in range(1, 101):
total += i
print(f"1到100的和为:{total}") # 1到100的和为:5050
sum(range(1, 101)),一行代码即可完成。善用内置函数可以让代码更加简洁高效。函数与模块
4.1 函数的定义与调用
函数是一段可以重复使用的代码块,用于完成特定的任务。通过定义函数,可以避免代码重复,提高程序的可读性和可维护性。
# 定义函数
def greet():
"""向用户打招呼的函数"""
print("你好,欢迎学习Python!")
print("让我们一起开始编程之旅吧!")
# 调用函数
greet()
greet() # 可以多次调用
# 带参数的函数
def greet_user(name):
print(f"你好,{name}!欢迎来到Python世界。")
greet_user("张三")
greet_user("李四")
# 带返回值的函数
def add(a, b):
result = a + b
return result
sum_result = add(3, 5)
print(f"3 + 5 = {sum_result}") # 3 + 5 = 8
# 计算圆的面积
def circle_area(radius):
return 3.14159 * radius ** 2
area = circle_area(5)
print(f"半径为5的圆的面积为:{area:.2f}") # 半径为5的圆的面积为:78.54
4.2 参数类型
Python 函数支持多种参数类型,使得函数调用更加灵活。
# 1. 位置参数:按顺序传递
def person_info(name, age, city):
print(f"姓名:{name},年龄:{age},城市:{city}")
person_info("张三", 20, "广州")
# 2. 默认参数:调用时可以省略
def person_info(name, age, city="广州"):
print(f"姓名:{name},年龄:{age},城市:{city}")
person_info("张三", 20) # 城市:广州(使用默认值)
person_info("李四", 22, "深圳") # 城市:深圳(覆盖默认值)
# 3. 关键字参数:指定参数名传递,不受顺序限制
person_info(age=25, name="王五", city="上海")
# 4. 混合使用
def create_user(username, email, age=18, is_active=True):
print(f"用户名:{username}")
print(f"邮箱:{email}")
print(f"年龄:{age}")
print(f"状态:{'活跃' if is_active else '未激活'}")
create_user("admin", "admin@example.com")
create_user("test", "test@example.com", age=20, is_active=False)
def func(a, b=10) 是正确的,但 def func(a=10, b) 是错误的。4.3 返回值
函数可以使用 return 语句返回一个或多个值。如果没有 return 语句,函数默认返回 None。
# 返回单个值
def square(n):
return n * n
result = square(6)
print(f"6的平方是:{result}") # 6的平方是:36
# 返回多个值(本质是返回元组)
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 7, 2, 9, 4])
print(f"最小值:{low},最大值:{high}") # 最小值:1,最大值:9
# 返回值可以是任意类型
def analyze_score(score):
if score >= 60:
return "及格", True
else:
return "不及格", False
grade, passed = analyze_score(75)
print(f"成绩等级:{grade},是否通过:{passed}") # 成绩等级:及格,是否通过:True
4.4 常用内置函数
Python 提供了大量内置函数,无需导入即可直接使用。以下是一些最常用的内置函数:
| 函数 | 功能 | 示例 |
|---|---|---|
| len() | 返回对象长度 | len("abc") → 3 |
| max() / min() | 返回最大值/最小值 | max(1, 5, 3) → 5 |
| sum() | 求和 | sum([1, 2, 3]) → 6 |
| round() | 四舍五入 | round(3.1416, 2) → 3.14 |
| abs() | 绝对值 | abs(-10) → 10 |
| sorted() | 排序 | sorted([3, 1, 2]) → [1, 2, 3] |
| type() | 查看类型 | type(42) → <class 'int'> |
| isinstance() | 判断类型 | isinstance(42, int) → True |
# 内置函数综合示例
numbers = [23, 45, 12, 67, 34, 89, 5]
print(f"列表:{numbers}")
print(f"长度:{len(numbers)}")
print(f"最大值:{max(numbers)}")
print(f"最小值:{min(numbers)}")
print(f"总和:{sum(numbers)}")
print(f"平均值:{sum(numbers) / len(numbers):.1f}")
print(f"排序后:{sorted(numbers)}")
print(f"降序排列:{sorted(numbers, reverse=True)}")
# 字符串相关
text = "Hello Python"
print(f"字符串长度:{len(text)}")
print(f"转为列表:{list(text)}")
print(f"反转:{''.join(reversed(text))}")
# 数学运算
print(f"绝对值:{abs(-15)}")
print(f"四舍五入:{round(3.14159, 3)}")
print(f"最大值:{max(10, 20, 30)}")
print(f"最小值:{min(10, 20, 30)}")
4.5 import 导入模块
模块是包含 Python 函数和变量的文件,通过 import 语句可以导入模块并使用其中的功能。Python 拥有丰富的标准库和第三方库。
# 导入整个模块
import math
print(math.pi) # 3.141592653589793
print(math.sqrt(16)) # 4.0
print(math.ceil(3.2)) # 4(向上取整)
print(math.floor(3.8)) # 3(向下取整)
# 导入模块中的特定函数
from random import randint, choice
print(randint(1, 100)) # 生成1-100的随机整数
print(choice(["A", "B", "C"])) # 随机选择一个元素
# 给模块起别名
import datetime as dt
now = dt.datetime.now()
print(f"当前时间:{now.strftime('%Y-%m-%d %H:%M:%S')}")
# 导入 time 模块
import time
print("程序开始...")
time.sleep(2) # 暂停2秒
print("2秒后继续执行")
# 实战:使用模块完成综合任务
import random
import math
# 1. 生成随机数列表
random_nums = [random.randint(1, 100) for _ in range(10)]
print(f"随机数列表:{random_nums}")
# 2. 统计分析
print(f"最大值:{max(random_nums)}")
print(f"最小值:{min(random_nums)}")
print(f"平均值:{sum(random_nums) / len(random_nums):.1f}")
print(f"排序后:{sorted(random_nums)}")
# 3. 数学计算
radius = random.uniform(1, 10)
area = math.pi * radius ** 2
print(f"随机半径:{radius:.2f}")
print(f"圆的面积:{area:.2f}")
pip install 模块名 命令进行安装。例如安装 requests 库:pip install requests。建议使用虚拟环境来管理不同项目的依赖。dir(模块名) 查看模块中所有可用的函数和变量,使用 help(函数名) 查看函数的详细使用说明。