Python 编程
从入门到实践
一、配置环境
1.1 创建 python 虚拟环境
# 创建 python 虚拟环境
python -m venv pyvenv
# 激活环境
source pyvenv/bin/activate # linux
.\pyvenv\Scripts\activate # windows
# 安装更新 pip
# 安装后若无法使用,则需要将pip添加到 windows 环境中
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
# 设置 pip 镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 sympy
pip install sympy
# 创建依赖文件
pip3 freeze > requirements.txt
# 安装依赖
# pip install -r requirements.txt
1.2 创建git忽略文件 .gitignore
# 虚拟环境
pyvenv/
# 配置文件
requirements.txt
1.3 创建 hello world 文件
print("Hello Python world!")
二、变量与简单的数据类型
2.1 语法高亮
print("Hello World!")
2.2 变量
# 变量赋值
message = "Hello Python Crash Course world!"
print(message)
2.3 字符串
2.3.1 使用方法改变字符串大小写
name = "ada lovelace"
print(name.title()) # 首字母大写
print(name.upper()) # 全字母大写
print(name.lower())# 全字母小写
2.3.2 在字符串中使用变量
first_name = "ada"
last_name = "lovelace"
# f 字符串:字符串拼接 f"{var}"
full_name = f"{first_name} {last_name}"
print(full_name)
message = f"Hello, {full_name.title()}!"
print(message)
2.3.3 使用制表符或换行符来添加空白
print("\tpython")
2.3.4 删除空白
# 删除空格,"@" 用来查看打印定位
language = " python "
print("start", language, "end")
print("start", language.lstrip(), "end") # 去除左边空白
print("start", language.rstrip(), "end") # 去除右边空白
print("start", language.strip(), "end") # 去除两边空白
2.3.5 删除前缀
url = "https://idbview.com"
url.removeprefix("https://") # 这种删除时暂时的
simple_url = url.removeprefix("https://") # 保留删除前缀,可重新赋值
print(simple_url)
2.4 数
2.4.1 整数
# + - * / ** 加 减 乘 除 乘方
print(2 + 3)
# 括号
print((2 + 3) * 4)
2.4.2 浮点数
print(0.1 + 0.1)
# 结果保留的小数位数可能是不确定的
print(3 * 0.1)
2.4.3 整数与浮点数
print(4 / 2)
print(2 * 3.0)
2.4.4 数中的下划线
# 大数值,可用下划线表示
num = 1000_000_000
2.4.5 同时给多个变量赋值
x, y, z = 0, 1, 2
print(x, y, z)
2.4.6 常量
# python 中没有内置的常量类型,用全大写表示
MAX_COUNT = 5000
2.5 注释
# 注释 ctrl + /
2.6 python 之禅
import this
三、列表简介
3.1 列表是什么
# [] 方括号表示
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
3.1.1 访问列表元素
print(bicycles[0])
3.1.2 索引从0而不是1开始
print(bicycles[0].title())
# 通过将索引指定为-1,可让Python返回最后一个列表元素
print(bicycles[-1])
3.1.3 使用列表中的值
message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
3.2 修改、添加和删除元素
3.2.1 修改元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
# 修改列表元素
motorcycles[0] = 'ducati'
print(motorcycles)
3.2.2 在列表中添加元素
# 1、在末尾添加元素
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.append('ducati')
print(motorcycles)
# 方法 append() 动态地创建列表
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles)
# 2、 在列表中插入元素
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
3.2.3 从列表中删除元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
# 1、使用 del 语句删除元素
del motorcycles[0]
print(motorcycles)
# 2、使用方法pop()删除元素
ms = ["honda", "yamaha", "suzuki"]
print(ms, "\n")
# 默认删除最后一位,删除的元素就不在列表中了
ms.pop()
print(ms)
# 将元素从列表中删除,并接着使用它的值
popped_ms = ms.pop()
print(popped_ms, "\n")
# 3、 根据元素位置删除
popped_ms = ms.pop(0)
print(ms)
print(popped_ms)
# 4、根据值删除元素
ms = ["honda", "yamaha", "suzuki", "ducati"]
ms.remove("ducati")
print(ms)
# 方法 remove() 只删除第一个指定的值
# 利用循环进行多次删除
ms = ["honda", "yamaha", "suzuki", "ducati"]
# ms[:]为 ms 的副本
for m in ms[:]:
ms.remove(m)
# 如果 ms 不为空则打印删除的值与列表现有的元素
if ms:
print(m, "is removed")
print("ms =", ms, "\n")
else:
print("All is removed.")
3.3 管理列表
3.3.1 sort() 方法对列表永久排序
# 方法 sort() 永久性地修改了列表元素的排列顺序,无法恢复到原来的排列顺序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
# 顺序相反
cars.sort(reverse=True)
print(cars)
3.3.2 sorted 函数对列表临时排序
cars = ["bmw", "audi", "toyota", "subaru"]
print(sorted(cars))
print(sorted(cars, reverse=True))
3.3.3 反向打印列表
cars = ["bmw", "audi", "toyota", "subaru"]
cars.reverse()
print(cars)
3.3.3 确定列表的长度
# 函数 len()
print(len(cars))
四、操作列表
4.1 遍历整个列表
4.1.1 研究循环
magicians = ["alice", "david", "carolina"]
for magician in magicians:
print(magician)
4.1.2 在 for 循环中执行更多操作
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician+"\n")
print(magician.title() + ", that is a great trick.")
4.1.3 在 for 循环结束后执行一些操作
# 字符串拼接
magicians = ["alice", "david", "carolina"]
for magician in magicians:
print(f"{magician.title()}, that is a great trick.")
print(f"I can't wait to see your next trick, {magician.title()}.\n")
print("Thank you, everyone. That was a geat magic show!")
4.2 避免缩进错误
4.2.1 忘记缩进
4.2.2 忘记缩进额外的代码行
4.2.3 不必要的缩进
4.2.4 循环后不必要的缩进
4.2.5 遗漏冒号
4.3 创建数值列表
4.3.1 使用 range() 函数
# 数值列表
for value in range(1, 5):
# 1 到 4
print(value)
4.3.2 使用 range() 创建数组列表
numbers = list(range(1, 5))
print(numbers)
# 指定步长 2
even_numbers = list(range(2, 11, 2))
for i in even_numbers:
print(i)
print(even_numbers)
# ** 乘方
squares = []
for value in range(1, 11):
squares.append(value**2)
print(squares)
4.3.3 对数组列表执行简单的统计计算
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
min(digits) # print(min(digits))
max(digits) # print(max(digits))
sum(digits) # print(sum(digits))
4.3.4 列表推导式
squares = [value**2 for value in range(1, 11)]
print(squares)
4.4 使用列表的一部分
4.4.1 切片
players = ["charles", "martina", "michael", "florence", "eli"]
print(players[0:3])
# 从开头开始
print(players[:3])
# 终止于列表末尾
print(players[2:])
# 后三位
print(players[-3:])
4.4.2 遍历切片
# 遍历列表的部分元素
players = ["charles", "martina", "michael", "florence", "eli"]
print("Here are the first three players on my team:")
for p in players[:3]:
print(p.title())
4.4.3 复制列表
my_foods = ["pizza", "falafel", "carrot cake"]
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
# friend_foods = my_foods # 这是“关联”而非复制
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
# 可见两个列表一样
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
4.5 元组:不可变的列表
4.5.1 定义元组
# 圆括号
# 严格地说,元组是由逗号标识的
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
# 不能修改元组的元素
# dimensions[0] = 250 # error
4.5.2 遍历元组
for dimension in dimensions:
print(dimension)
4.5.3 修改元组
# 虽然不能修改元组的元素,但,可重新定义整个元组
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)