跳转到内容

Python

第三方包

python
# 用于操作Excel文件
pip install openpyxl
# 数据分析的包,用来处理 CSV、JSON、SQL、Microsoft Excel 导入数据
pip install pandas
# 提供时间相关功能,用于计时和延迟
import time
# 提供日期和时间处理功能,用于格式化耗时显示
import datetime
# 处理目录
import shutil
# 调用外部程序或系统命令
import subprocess

shutil

是 Python 中用于高级文件操作的模块,它提供了许多方便的方法来处理文件和目录的操作。相比 os 模块,shutil 提供了更高级、更便捷的接口

img.png

设置镜像源

shell
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

API

字符串

python
# 去除前后空格
str.strip()

# 按照分割符分割成数组
str.split('/')

日期

python
import time
import datetime

now = datetime.datetime.now()
# 日期格式化
time_str = now.strftime("%Y-%m-%d %H:%M:%S")

start_time = time.time()
#...
end_time = time.time()
total_time = end_time - start_time
duration_str = str(datetime.timedelta(seconds=int(total_time)))
print(f"总耗时: {duration_str}")

基础语法

列表

python
# 列表创建
bikes = ['trek','redline']
print(bikes[0])
print(bikes[-1]) # 访问最后一位元素

# 修改、添加、删除
bikes[0] = "giant"
bikes.append("zs")
bikes.insert(0,'ls')
print(bikes.pop(0)) # 移除指定元素并输出
print(bikes.pop()) # 移除最后一个元素并输出
bikes.remove('giant') # 删除匹配到的第一个元素
print(bikes)

# 常用方法
nums = [9,6,1,4,2]
print(len(nums)) # 输出列表长度
nums.sort() # 修改原列表,默认对元素进行从小到大排序
nums.sort(reverse=True) # 倒序
print(sorted(nums))
print(nums.reverse()) # 修改原列表,对元素进行翻转

# 列表推导式
print(range(2))
print(list(range(2)))
squares = []
for val in range(2,5):
    squares.append(val)

print(squares)

squares_comp = [val for val in range(2,5)]

print(squares == squares_comp) # True 推导式创建相同元素
print(min(squares),max(squares),sum(squares))

# 切片
bikes = ['trek','redline','giant']
print(bikes[0:]) # ['trek', 'redline', 'giant']
print(bikes[::-1]) # ['giant', 'redline', 'trek']
print(bikes[0:1]) # ['trek']

# 浅拷贝
bikes = ['trek','redline','giant']
bikes_copy = bikes[:]
# 这里不影响原列表
bikes_copy.reverse()
print(bikes_copy)
print(bikes)

元组

python
dimensions = (200,50)

for value in dimensions:
    print(value)

# 元组无法修改,但是变量可以重新被赋值
dimensions = (300,50)
print(dimensions)
dimensions = 100

字典

python
alien = {'color':'green',"point":5}
print(alien['color'])

# 修改、添加、删除
alien['color'] = 'red'
alien['position'] = (0, 25) # 不存在则添加新值
print(alien)

del alien['color']
print(alien)
alien.pop('position')
print(alien)

# 常用方法
favorites = {'jen':'python','edward':'rust'}
print(len(favorites))
for name,language in favorites.items():
    print(f'{name} loves {language}')

print(favorites.keys())
print(favorites.values())

# 推导式
squares = {x: x ** 2 for x in range(4)}
print(squares)
keys,vals = [0,1,2,3,],[0,1,4,9]
squares_zip = {
    key:val for key,val in zip(keys,vals)
}
print(squares_zip)
print(squares_zip == squares)

python
class Dog:
    """
    模拟小狗类
    """    def __init__(self,name,age):
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name} is now sitting")

    def roll_over(self):
        print(f"{self.name} rolled over")


my_dog = Dog('zs',6)
print(my_dog.name)
print(my_dog.age)
my_dog.roll_over()

# 继承
class Car:
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year


class ElectricCar:
    def __init__(self,make,model,year):
        """初始化父类的属性"""
        super().__init__(make,model,year)

标准库

shell
> python -m pip install --user package_name

random

python
from random import randint, choice

# 传入2个整数,随机生成之间的整数
num1 = randint(1,6)
print(num1)

# 列表、元组作为参数。随机返回其中一个元素
item = choice(['1','2','3','4','5'])
print(item)

示例

python
from random import randint, choice

class Die:
    def __init__(self,sides = 6):
        self.sides = sides

    def roll_die(self):
        print(f"{randint(1,self.sides)}")


die_1 = Die(6)
for i in range(10):
    print(f"{i+1}次")
    die_1.roll_die()
python
from random import choice
tickets = ['l','y','q',0,1,2,3,4,5,6,7,8,9,'o','m']#抽奖全部内容
count = 0#计算循环次数
win_tickets = ['l','y','q',5]#获奖元素
while True:
    Random_c6 = range(4)#随机抽取六个元素
    my_ticket = []#用于存储抽到的六个元素
    for ticket in Random_c6:
        my_ticket.append(choice(tickets))
    print(f"Your tickets is: {my_ticket}")
    if my_ticket != win_tickets:
        count += 1
    if my_ticket == win_tickets:
        break
print("Wonderfully! you win")
print(f"You've already gone through cycle {count} times! ")

json

python
import json

# 存储json
content = json.dumps(username)

# 读取
username = json.loads(content)

pytest

文件需要以test_开头

shell
pip install pytest
python
# name_function.py
def get_formatted_name(first,last):
    full_name = f"{first} {last}"
    return full_name.title()


def main():
    print("Enter 'q' at any time to quit.")
    while True:
        first = input("\nPlease give me a first name: ")
        if first == 'q':
            break
        last = input("\nPlease give me a last name: ")
        if last == 'q':
            break
        formatted_name = get_formatted_name(first,last)
        print(f"\tNeatly formatted name: {formatted_name}.")


if __name__ == '__main__':
    main()

# test_name_function.py
from use_pytest import get_formatted_name

def test_first_last_name():
    formatted_name = get_formatted_name('janis','joplin')
    assert formatted_name == 'Janis Joplin'

# 到目录终端命令行
python -m pytest

Will Try My Best.