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) 
Avatar photo

作者 bingmp