还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
马士兵教学课件Python课程导览语言简介与发展历程基础语法与编程思维开发框架实战Python WebFastAPI了解的起源、特点及其在现代编程系统学习核心语法结构,培养编程深入学习现代高性能框架,掌握设Python Python Web API领域的重要地位,掌握为什么成为逻辑思维,为后续高级应用打下坚实基础计与开发技巧,实现专业级后端服务Python当今最受欢迎的编程语言之一数学建模与数据处理案例项目实战与代码演练通过实际案例学习在科学计算和数据分析中的应用,提升解大量实际编程练习与项目实战,从理论到实践全面提升开发Python Python决复杂问题的能力技能第一章语言基础Python语言基础是整个课程的起点,也是构建编程能力的关键环节在这一章节中,Python我们将带领大家认识这门语言,了解其设计理念和独特优势,掌握基本语法规Python则和编程思维模式通过系统学习变量、数据类型、控制结构和函数模块等核心概念,学员将能够编写简单而有效的程序,为进一步学习高级应用打下坚实基础我们注重实践与理论相Python结合,每个知识点都配有丰富的代码示例和上机练习,确保学员能够真正掌握Python编程的基本技能是什么?Python是一种高级编程语言,于年由荷兰程序员设计开发作为一种解释型、面向对象、动态数据类型的高级编程语言,具有以下显Python1989Guido van Rossum Python著特点语法简洁优雅,易于学习和使用•强大的标准库和丰富的第三方库生态系统•跨平台支持,可在、、等多种操作系统上运行•Windows LinuxMacOS广泛应用于人工智能、数据分析、科学计算、开发、自动化运维等领域•Web解释执行,开发效率高,适合快速原型开发•的设计哲学强调代码的可读性和简洁性,其格言优雅胜于丑陋,明确胜于隐晦体现了这一理念社区非常活跃,有大量优质的开源项目和学习资源,这也PythonPython是能够持续发展并保持流行的重要原因之一Python创始人Python GuidovanRossum安装与环境配置Python选择发行版Python在开始编程之前,首先需要在计算机上安装环境我们推荐使用集成环境,它包含了解释Python PythonAnaconda Python器、科学计算库以及包管理工具,特别适合数据科学和机器学习应用与原生的主要区别Anaconda Python预装了数百个科学计算和数据分析包,包含包管理器,支持虚拟环境管理,适合数据科学工作•Anaconda conda原生只包含解释器和基本标准库,使用作为包管理器,体积较小,适合一般开发•Python Pythonpip安装集成开发环境配置专业的开发工具可以显著提高编程效率推荐以下两种主流Python IDE功能全面的专业,提供代码补全、调试、项目管理等强大功能•PyCharm Python IDE轻量级、高度可定制的编辑器,通过插件支持开发,启动速度快,适合各种规模的项目•VSCode Python环境变量与路径配置确保可以在命令行中正常调用,需要将安装路径添加到系统环境变量中安装过程中通常Python PythonAnaconda会自动完成此配置通过命令行验证安装基础语法入门变量与数据类型输入输出函数中的变量无需声明类型,可直接赋值使用主要数据类型包括函数用于输出信息Python print数字类型整数、浮点数、复数int floatcomplexprint你好,世界!#输出字符串printf圆周率是{pi}#格式化输出字符串文本序列,用单引号或双引号表示str列表有序、可变的元素集合,用方括号表示list元组有序、不可变的元素集合,用圆括号表示tuple字典dict键值对集合,用花括号表示input函数用于获取用户输入集合无序、无重复元素的集合setname=input请输入你的名字age=intinput请输入你的年龄#转换为整数布尔或两个值bool TrueFalse#变量赋值示例num=10#整数pi=
3.14#浮点数name=小明#字符串is_student=True#布尔值注释与代码风格使用号添加单行注释,使用三引号添加多行注释Python##这是单行注释这是多行注释可以跨越多行控制结构条件判断循环语句异常处理使用结构进行条件判断,语法简洁明了提供两种主要循环结构使用结构处理异常Python if-elif-else Python Python try-except循环用于遍历可迭代对象forscore=85if score=90:print优秀elif try:num=intinput请输入一个数字score=80:print良好elif score=60:result=10/num printf结果是#遍历列表fruits=[苹果,香蕉,橙子]forprint及格else:print不及格{result}except ValueError:print输入的不是fruit in fruits:printf我喜欢吃{fruit}#使有效的数字except ZeroDivisionError:print用range函数for iin range1,5:#输出1,2,3,4不能除以零except Exceptionas e:printf发生printi错误{e}finally:print无论是否发生异常都会执行特点使用缩进表示代码块,无需括号和大括号,冒号标识代码循环满足条件时重复执行while块开始count=0while count5:printcount异常处理能够让程序在遇到错误时优雅地处理问题,避免程序崩count+=1溃函数与模块函数定义与调用参数传递与返回值Python中使用def关键字定义函数,函数是代码复用的基本单位Python函数支持多种参数传递方式位置参数按参数定义顺序传入#定义一个简单函数def greetname:这是文档字符串,用于说明函数功能关键字参数通过参数名指定传入return f你好,{name}!#调用函数message=greet张三默认参数为参数提供默认值printmessage#输出你好,张三!可变参数*args接收任意数量的位置参数,**kwargs接收任意数量的关键字参数#多种参数示例def calculatea,b=1,*args,**kwargs:result=a+bfor argin args:result+=arg forkey,value inkwargs.items:printf{key}:{value}return result#函数调用calculate1,2,3,4,name=小明,age=18标准库与第三方库导入Python强大的生态系统是其优势之一,可以通过import导入各种库#导入标准库import mathimportrandomfrom datetimeimport datetime#导入第三方库(需先安装)#pip installnumpy pandasmatplotlibimport numpy as npimportpandasas pdimportmatplotlib.pyplot asplt#使用库函数printmath.pi#输出圆周率printrandom.randint1,10#随机整数printdatetime.now#当前时间模块化编程是Python的核心理念,合理使用和组织模块可以提高代码的可维护性和可扩展性第二章进阶应用Python在掌握了基础语法后,我们将进入更加深入的学习阶段第二章内容将关注Python的进阶应用技术,包括面向对象编程、文件操作与数据处理以及常用第三方库Python的应用面向对象编程是的核心编程范式之一,掌握类与对象的概念将使您能够设计更Python加模块化、可扩展的程序文件操作与数据处理能力则是实际应用中的关键技能,我们将学习如何读写各种格式的数据并进行基本分析面向对象编程基础类与对象概念属性与方法面向对象编程是的重要特性,通过类和对象将数据和行为组织在一起属性类型OOP Python实例属性每个对象独有•#定义一个简单的类class Student:学生类#构造方法类属性所有实例共享def__init__self,name,age,grade:self.name=name#实例•属性self.age=age self.grade=grade#实例方方法类型法def introduceself:return f我叫{self.name},今年{self.age}岁,就读于{self.grade}年级def studyself,subject:•实例方法操作实例数据return f{self.name}正在学习{subject}#创建对象student1=Student李类方法使用装饰器•@classmethod华,15,9student2=Student王明,16,10#调用方法静态方法使用装饰器•@staticmethodprintstudent
1.introduceprintstudent
2.studyPython编程继承与多态类是创建对象的模板,定义了对象的属性和方法对象是类的实例,每个对象都有自己的属性值,可以调用类中定义的方法文件操作与数据处理简单数据统计与可视化与数据处理CSV JSON对收集的数据进行基本分析和可视化文件读写基础处理结构化数据是Python的强项,内置模块支持常见数据格式Python提供了简单直观的文件操作接口,可以轻松读写各种文本文件#CSV文件处理import csv#写入CSVwith opendata.csv,w,newline=,#写入文本文件with openexample.txt,w,encoding=utf-8as f:encoding=utf-8as f:writer=csv.writerf writer.writerow[姓f.write这是第一行\nf.write这是第二行\n#读取文本文件with名,年龄,城市]#写入表头writer.writerow[张三,25,北京]openexample.txt,r,encoding=utf-8as f:content=f.read#writer.writerow[李四,30,上海]#读取CSVwith opendata.csv,r,读取全部内容printcontent#逐行读取with openexample.txt,r,encoding=utf-8as f:reader=csv.readerf forrow inreader:encoding=utf-8as f:for linein f:printline.strip#printrow#每行是一个列表#JSON数据处理import json#Python对象转JSONdatastrip去除行尾换行符={name:王五,age:28,skills:[Python,Java,SQL],is_student:False}#写入JSON文件with opendata.json,w,encoding=utf-8as f:json.dumpdata,f,ensure_ascii=False,indent=4#读取JSON文件with opendata.json,r,encoding=utf-8as f:loaded_data=json.loadf printloaded_data[name]#访问JSON数据使用with语句(上下文管理器)可以确保文件正确关闭,即使发生异常也能安全处理常用第三方库介绍基础数据分析绘图NumPy PandasMatplotlib是科学计算的基础库,提供高性能的多维数组对象和处理这些数组的工具提供了和数据结构,适用于处理表格数据是最流行的绘图库,可创建各种静态、动态、交互式图表NumPy PythonPandas DataFrameSeries MatplotlibPythonimport pandasas pd#创建DataFramedata={姓名:[张三,李四,import numpyas np#创建数组arr1=np.array[1,2,3,4,5]arr2=王五,赵六],年龄:[25,30,35,40],城市:[北京,上海np.zeros3,3#3x3全0矩阵arr3=np.ones2,4#2x4全1矩阵,广州,深圳],薪资:[10000,15000,20000,25000]}df=arr4=np.random.rand3,3#随机矩阵#数组运算printarr1*2#每pd.DataFramedata#数据查看printdf.head#前几行个元素乘以2printarr1+10#每个元素加10#数组统计printnp.meanarr1printdf.describe#统计摘要printdf[年龄].mean#特定列平#平均值printnp.maxarr1#最大值printnp.minarr1#最小值均值#数据筛选young=df[df[年龄]30]#年龄小于30的high_salary=printnp.stdarr1#标准差#线性代数matrix1=np.array[[1,2],[3,df[df[薪资]15000]#高薪的#数据排序sorted_df=df.sort_values4]]matrix2=np.array[[5,6],[7,8]]printnp.dotmatrix1,薪资,ascending=False#数据分组grouped=df.groupby城市for city,matrix2#矩阵乘法printnp.linalg.detmatrix1#行列式group ingrouped:printf{city}平均薪资:{group[薪资].mean}第三章框架实战FastAPI在掌握了基础和进阶知识后,本章将带领大家进入开发领域,学习当前最现代化、高性能的框架之一Python Web Python WebFastAPI FastAPI是一个专为开发设计的高性能框架,具有简单、快速、易学的特点,同时具备自动生成文档的强大功能API API通过本章的学习,您将掌握如何使用构建高效的,了解路由定义、请求处理、参数校验等核心概念,并学习如何将与数据库FastAPI WebAPI FastAPI集成,实现完整的后端服务我们将通过丰富的实例和实战项目,帮助您建立系统化的开发技能Web简介FastAPI的特点与优势FastAPIFastAPI是一个现代、高性能的Python Web框架,专为API开发而设计,具有以下突出特点高性能基于Starlette和Pydantic构建,性能与NodeJS和Go相当,是最快的Python Web框架之一快速开发减少了约40%的人为错误,提高开发效率简单直观设计易于使用,学习曲线平缓,文档完善类型提示利用Python的类型提示功能,提供编辑器支持和静态代码分析自动文档自动生成交互式API文档Swagger UI和ReDoc,无需额外配置标准化基于OpenAPI和JSON Schema开放标准现代化支持异步编程,充分利用Python
3.6+新特性FastAPI结合了多种现代Python技术,克服了其他框架的局限性,是当前Python Web开发的最佳选择之一,尤其适合构建高性能API服务FastAPI自动生成的交互式API文档界面第一个程序FastAPI启动服务与访问编写第一个API环境准备使用Uvicorn启动FastAPI应用在main.py中编写简单的API代码首先,需要安装FastAPI和服务器#在终端中运行uvicorn main:app--reload#输出类似#INFO:Uvicorn runningonfrom fastapiimport FastAPI#创建FastAPI应用实例app=FastAPI title=我的第一http://
127.
0.
0.1:8000#INFO:Started reloaderprocess#INFO:Started#安装FastAPI和Uvicorn(ASGI服务器)pip installfastapi uvicorn个FastAPI应用,description=这是一个学习用的简单API,version=
0.
1.0#定server process#INFO:Waiting forapplication startup.#INFO:义根路由@app.get/async defroot:return{message:你好,FastAPI}#定Application startupcomplete.义带参数的路由@app.get/items/{item_id}async defread_itemitem_id:int,q:str=None:return{item_id:item_id,q:q}#定义POST创建项目文件夹和主程序文件main.py路由和请求体from pydantic import BaseModelclassItemBaseModel:name:strdescription:str=None price:float tax:float=#项目结构/fastapi_demo└──main.py None@app.post/items/async defcreate_itemitem:Item:#计算含税价格price_with_tax=item.price ifitem.tax:price_with_tax=item.price+item.tax return{item_name:item.name,price_with_tax:price_with_tax}现在可以通过浏览器访问以下URL•API首页http://
127.
0.
0.1:8000/•自动生成的交互式文档http://
127.
0.
0.1:8000/docs•另一种文档风格http://
127.
0.
0.1:8000/redoc路由传参与数据校验路径参数请求体参数与模型URL Pydantic在FastAPI中,可以轻松定义路径参数并指定类型使用Pydantic模型定义请求体结构,实现自动数据验证@app.get/users/{user_id}async defread_useruser_id:int:return{user_id:user_id}#枚举类型参数from enumimport from pydanticimportBaseModel,Field,EmailStrfrom typing import List,Optionalclass UserBaseBaseModel:username:str=Enumclass ModelNamestr,Enum:alexnet=alexnet resnet=resnet lenet=Field...,min_length=3,max_length=50email:EmailStr full_name:Optional[str]=None age:int=Field...,gt=0,lenet@app.get/models/{model_name}async def get_modelmodel_name:ModelName:if model_name==ModelName.alexnet:lt=120tags:List[str]=[]@app.post/users/async defcreate_useruser:UserBase:return userreturn{model_name:model_name,message:深度学习模型}if model_name.value==lenet:return{model_name:model_name,message:卷积神经网络}return{model_name:model_name,message:残差网络}参数校验与错误处理FastAPI提供了丰富的参数验证选项from fastapiimport Path,Query,Body@app.get/products/{product_id}async defread_product product_id:int=Path...,title=商品ID,ge=1,q:str=Query None,min_length=3,max_length=50,title=搜索词,description=用于筛选商品的关键词,category:str=Queryall,regex=^[a-zA-Z]+$:return{product_id:product_id,q:q,category:category}查询参数不在路径中的参数自动被解释为查询参数@app.get/items/async defread_items skip:int=0,#默认值为0limit:int=10,#默认值为10q:str=None#可选参数:return{skip:skip,limit:limit,q:q}#访问/items/skip=20limit=50q=搜索词数据库集成SQLAlchemy增删改查操作示例数据库连接与管理Session模型定义与映射实现基本的CRUD操作ORM在FastAPI中有效管理数据库会话SQLAlchemy是Python中最流行的ORM对象关系映射工具,可以轻松与FastAPI集成#main.pyfrom fastapiimport FastAPI,Depends,HTTPExceptionfrom sqlalchemy.orm#database.pyfrom sqlalchemyimport create_engine,Column,Integer,String,import Sessionfrom typingimport Listimport models,schemasfrom database importBoolean,ForeignKeyfrom sqlalchemy.ext.declarative importdeclarative_basefrom SessionLocal,engine#创建数据库表models.Base.metadata.create_allbind=engineappsqlalchemy.orm importsessionmaker,relationship#创建数据库引擎=FastAPI#依赖函数获取数据库会话defget_db:db=SessionLocal try:SQLALCHEMY_DATABASE_URL=sqlite:///./test.db#也可以使用PostgreSQL或MySQL#yield dbfinally:db.close#用于API的Pydantic模型frompydanticimportSQLALCHEMY_DATABASE_URL=postgresql://user:password@localhost/dbnameengine=BaseModelclass ItemBaseBaseModel:title:str description:str=create_engine SQLALCHEMY_DATABASE_URL,connect_args={check_same_thread:Noneclass ItemCreateItemBase:passclass ItemItemBase:id:intFalse}#创建会话工厂SessionLocal=sessionmakerautocommit=False,owner_id:int classConfig:orm_mode=True#允许从ORM模型读取数autoflush=False,bind=engine#创建基类Base=declarative_base#models.pyfrom据databaseimportBaseclass UserBase:__tablename__=users id=ColumnInteger,primary_key=True,index=True email=ColumnString,unique=True,index=True username=ColumnString,index=Truehashed_password=ColumnString is_active=ColumnBoolean,default=True#关系一对多items=relationshipItem,back_populates=ownerclassItemBase:__tablename__=items id=ColumnInteger,primary_key=True,index=True title=ColumnString,index=Truedescription=ColumnString owner_id=ColumnInteger,ForeignKeyusers.id#关系多对一owner=relationshipUser,back_populates=items复杂关联关系与数据库迁移一对多、多对多关系建模数据库迁移工具Alembic在SQLAlchemy中定义更复杂的关联关系Alembic是SQLAlchemy作者开发的数据库迁移工具,可以跟踪模型变化并更新数据库结构#多对多关系需要关联表from sqlalchemyimport Table,Column,Integer,ForeignKeyfrom sqlalchemy.orm importrelationship#课程与学#安装Alembicpip installalembic#初始化Alembicalembic initalembic#配置alembic.ini文件和env.py以连接数据库#创建迁移脚本alembic生的多对多关联表course_student=Table course_student,Base.metadata,Columncourse_id,Integer,revision--autogenerate-m创建用户和项目表#执行迁移(更新数据库)alembic upgradehead#回滚迁移alembic downgrade-1ForeignKeycourses.id,primary_key=True,Columnstudent_id,Integer,ForeignKeystudents.id,primary_key=Trueclass StudentBase:__tablename__=students id=ColumnInteger,primary_key=True,index=Truename=ColumnString,index=True age=ColumnInteger#多对多关系courses=relationshipCourse,secondary=course_student,back_populates=students#一对多关系(学生与作业)homeworks=relationshipHomework,back_populates=studentclass CourseBase:__tablename__=courses id=ColumnInteger,primary_key=True,index=True title=ColumnString,index=True description=ColumnString teacher_id=ColumnInteger,ForeignKeyteachers.id#多对一关系(课程与教师)teacher=relationshipTeacher,back_populates=courses#多对多关系(课程与学生)students=relationshipStudent,secondary=course_student,back_populates=coursesclass TeacherBase:__tablename__=teachers id=ColumnInteger,primary_key=True,index=True name=ColumnString,index=True subject=ColumnString#一对多关系(教师与课程)courses=relationshipCourse,back_populates=teacherclassHomeworkBase:__tablename__=homeworks id=ColumnInteger,primary_key=True,index=True title=ColumnString,index=True content=ColumnString grade=ColumnInteger,nullable=True student_id=ColumnInteger,ForeignKeystudents.id#多对一关系(作业与学生)student=relationshipStudent,back_populates=homeworks关联查询与性能优化优化复杂关联查询以提高性能项目实战演练FastAPI123项目需求与架构设计分页查询与依赖注入模型嵌套与数据转换员工管理系统需求#实现分页查询from fastapiimport Depends,Queryfrom typingimportList,#在Pydantic模型中处理嵌套关系fromtypingimport Listclass•部门管理增删改查部门信息Optional#分页依赖def paginationpage:int=Query1,ge=1,description=页DepartmentBaseBaseModel:name:str location:Optional[str]=Noneclass•员工管理增删改查员工信息,支持按部门筛选码,从1开始,page_size:int=Query20,ge=5,le=100,description=每页记录DepartmentDepartmentBase:id:int classConfig:orm_mode=•考勤记录记录员工签到签退信息,生成月度报表数:return{skip:page-1*page_size,limit:page_size}#使用分页Trueclass EmployeeBaseBaseModel:name:str email:EmailStr position:•权限控制管理员和普通用户权限区分依赖@app.get/employees/,response_model=List[schemas.Employee]def strsalary:float department_id:intclass EmployeeEmployeeBase:id:list_employees department_id:Optional[int]=None,search:Optional[str]int classConfig:orm_mode=True#带员工列表的部门详情模型class•数据导出支持CSV导出功能=None,page_params:dict=Dependspagination,db:Session=DepartmentWithEmployeesDepartment:employees:List[Employee]=[]#API端点技术选型Dependsget_db:query=db.querymodels.Employee#按部门筛选if@app.get/departments/{department_id},•后端FastAPI+SQLAlchemy+PostgreSQL department_id:query=query.filtermodels.Employee.department_id==response_model=DepartmentWithEmployeesdefdepartment_id#搜索姓名if search:query=get_department_with_employeesdepartment_id:int,db:Session=•认证JWT令牌认证query.filtermodels.Employee.name.ilikef%{search}%#应用分页Dependsget_db:department=•文档自动生成的Swagger文档employees=query.offsetpage_params[skip].limitpage_params[limit].all db.querymodels.Department.optionsreturn employees#获取总记录数@app.get/employees/countdef count_employees department_id:Optional[int]=None,search:joinedloadmodels.Department.employees.filtermodels.Department.id==Optional[str]=None,db:Session=Dependsget_db:query=department_id.first if not department:raisedb.querymodels.Employee#应用筛选条件if department_id:HTTPExceptionstatus_code=404,detail=部门不存在return departmentquery=query.filtermodels.Employee.department_id==department_id ifsearch:query=query.filtermodels.Employee.name.ilikef%{search}%#获取总数total=query.count return{total:total}第四章数学建模与应用Python数学建模是应用数学方法解决实际问题的过程,凭借其强大的科学计算生态系统,已成为数学建模的首选工具之一本章将介绍如何利用Python解决各类数学建模问题,从基础算法实现到复杂模型构建Python我们将首先了解数学建模竞赛的背景与应用场景,然后通过一系列由浅入深的实验,掌握在数学建模中的应用技巧内容涵盖基础算法实现、Python线性与非线性规划、微分方程模型、数据预处理与可视化等多个方面通过学习本章内容,您将能够理解数学建模的基本思路与方法论•使用实现各类数学模型•Python应用科学计算库解决实际问题•处理和可视化建模过程中的数据•构建完整的数学建模解决方案•数学建模简介竞赛背景与应用场景数学建模是将实际问题抽象为数学模型并求解的过程,在科学研究和工程应用中扮演着重要角色主要数学建模竞赛美国大学生数学建模竞赛全球最具影响力的数学建模赛事•MCM/ICM全国大学生数学建模竞赛国内规模最大的学科竞赛之一•CUMCM研究生数学建模竞赛面向研究生的专业赛事•常见应用场景资源优化分配交通规划、物流调度、生产排程•预测与控制疫情传播、金融市场、气候变化•数据分析大数据挖掘、模式识别、信息提取•系统仿真城市规划、生态系统、工程系统•数学建模竞赛现场在建模中的优势Python典型问题与解决思路丰富的科学计算生态、、等库提供强大支持•NumPy SciPySymPy建模过程的一般步骤完备的数据处理工具用于数据清洗与转换•Pandas问题分析理解问题背景,确定目标与约束优秀的可视化能力、、等
1.•Matplotlib SeabornPlotly假设提出做出合理简化,构建基础框架专业的建模工具、等优化求解器接口
2.•PuLP CVXPY模型构建选择合适的数学工具,建立变量关系代码简洁易读开发效率高,便于团队协作
3.•求解验证实现算法,求解模型,检验结果
4.模型评价分析优缺点,考虑改进方向
5.成果展示撰写报告,图表可视化
6.常用数学方法优化方法线性规划、整数规划、动态规划•微分方程常微分方程、偏微分方程•概率统计回归分析、假设检验、马尔可夫过程•图论网络最短路径、最小生成树、网络流•基础实验语法实战Python文件读取与字典存储分支判断成绩评价冒泡排序实现处理CSV格式的学生信息数据使用条件语句实现学生成绩评价系统冒泡排序是最简单的排序算法之一,通过重复比较相邻元素并交换位置实现排序def evaluate_gradescore:根据分数给出评价参数:score:学生def bubble_sortarr:冒泡排序函数参数:arr:待排序的列表分数0-100返回:成绩评价ifnotisinstancescore,int,返回:排序后的列表n=lenarr#外层循环控制排序轮数for ifloat:return输入错误,请提供有效的数字分数if score0orin rangen:#内层循环进行相邻元素比较for jin range0,n-i-1:score100:return分数必须在0到100之间if score=90:#如果前一个元素大于后一个元素,交换位置if arr[j]arr[j+1]:return优秀elif score=80:return良好elif score=70:arr[j],arr[j+1]=arr[j+1],arr[j]return arr#测试排序函数test_array=[64,return中等elif score=60:return及格else:return34,25,12,22,11,90]sorted_array=bubble_sorttest_arrayprintf排序前:不及格#测试成绩评价函数test_scores=[95,86,75,60,45,-5,105,abc]for{test_array}printf排序后:{sorted_array}#性能分析import timeimportrandom#score intest_scores:printf分数{score}的评价是:生成大型随机数组large_array=[random.randint1,1000for_in range1000]#测{evaluate_gradescore}#批量处理学生成绩class_scores={张三:85,李量排序时间start_time=time.timebubble_sortlarge_array.copy#使用副本避免四:92,王五:78,赵六:45,钱七:60}#统计各评价人数修改原数组end_time=time.timeprintf排序1000个元素耗时:{end_time-evaluation_counts={优秀:0,良好:0,中等:0,及格:0,不及格:0}forstart_time:.4f}秒name,score inclass_scores.items:evaluation=evaluate_gradescoreevaluation_counts[evaluation]+=1printf{name}的分数是{score},评价为{evaluation}print\n班级评价统计:for evaluation,count inevaluation_counts.items:printf{evaluation}:{count}人规划求解实验线性规划与非线性规划指派问题与最优策略使用SciPy优化库解决线性规划问题使用scipy.optimize解决指派问题import numpyas npfrom scipy.optimize importlinprog#线性规划示例生产规划问题#某工厂生产两种产品A和B,每个A获利3元,每个B获利2元#每个A需要2小时生产和1小时组装#每个B需要1小时生产和1小时组装#每天最多有8小时生产时间和4小时组装时间#目标最大化总利润#目标函数系数(求最小值,所以取负值)c=[-3,-2]#最大化3x+2y等价于最小化-3x-2y#不等式约束A_ub*x=b_ubA_ub=[[2,1],#生产时间约束2x+y=8[1,1]#组装时间约束x+y=4]b_ub=[8,4]#变量边界x=0,y=0x_bounds=0,Noney_bounds=0,None#求解线性规划result=linprogc,A_ub=A_ub,b_ub=b_ub,bounds=[x_bounds,y_bounds],method=simplex#输出结果if result.success:x,y=result.x printf最优解:生产A产品{x:.2f}个,B产品{y:.2f}个printf最大利润:{-result.fun:.2f}元printf生产时间使用:{2*x+y:.2f}小时printf组装时间使用:{x+y:.2f}小时else:print优化失败:,result.message#非线性规划示例from scipy.optimize importminimize#定义目标函数fx,y=x-2^2+y-3^2def objectivex:return x
[0]-2**2+x
[1]-3**2#定义约束条件gx,y=x+y-6=0def constraint1x:return6-x
[0]-x
[1]#约束为x+y=6#初始猜测x0=[0,0]#约束条件con1={type:ineq,fun:constraint1}cons=[con1]#求解sol=minimizeobjective,x0,method=SLSQP,constraints=cons,bounds=0,None,0,None#输出结果print\n非线性规划结果:printf最优解:x={sol.x
[0]:.2f},y={sol.x
[1]:.2f}printf目标函数最小值:{sol.fun:.2f}微分方程建模符号解与数值解计算微分方程组与混沌现象疫情模型分析SEIR使用SymPy求解微分方程的符号解使用scipy.integrate求解Lorenz系统(混沌系统的典型例子)实现SEIR模型模拟疫情传播import sympyas spfromsympy.abc importtfrom sympy.plotting importplot#定义符fromscipy.integrate importsolve_ivpimport numpyas npimport matplotlib.pyplot号变量y=sp.Functionydydt=yt.difft#求解一阶微分方程:dy/dt=yeq=as pltfrommpl_toolkits.mplot3d importAxes3D#Lorenz系统def lorenz_systemt,xyz,sp.Eqdydt,ytsol=sp.dsolveeq,ytprint符号解:,sol#带初始条件:y0sigma=10,beta=8/3,rho=28:x,y,z=xyz dxdt=sigma*y-x dydt==1eq_with_ic=sp.Eqdydt,ytsol_with_ic=sp.dsolveeq_with_ic,yt,x*rho-z-y dzdt=x*y-beta*z return[dxdt,dydt,dzdt]#时间跨ics={y0:1}print带初始条件的解:,sol_with_ic#将解转换为函数t_sym=度和初始条件t_span=0,30initial_conditions=[1,1,1]#数值求解solution=sp.symbolsty_expr=sol_with_ic.rhsy_func=sp.lambdifyt_sym,y_expr,solve_ivp lorenz_system,t_span,initial_conditions,numpy#可视化解import numpyas npimportmatplotlib.pyplot aspltt_vals=method=RK45,dense_output=True,max_step=
0.01#提取解t=solution.tx,y,np.linspace0,2,100y_vals=y_funct_valsplt.figurefigsize=10,z=solution.y#绘制3D轨迹fig=plt.figurefigsize=10,8ax=6plt.plott_vals,y_valsplt.title微分方程dy/dt=y的解曲线fig.add_subplot111,projection=3dax.plotx,y,z,plt.xlabeltplt.ylabelytplt.gridTrueplt.savefigode_solution.png lw=
0.5ax.set_xlabelXax.set_ylabelYax.set_zlabelZax.set_titleLorenz吸引子plt.savefiglorenz_attractor.png数据预处理与可视化鸢尾花数据集处理描述性统计图表绘制使用scikit-learn提供的经典数据集进行预处理import pandasas pdimport numpyasnpimportmatplotlib.pyplot aspltimport seabornas snsfromsklearn.datasets importload_irisfrom sklearn.model_selection importtrain_test_splitfrom sklearn.preprocessing importStandardScaler#加载鸢尾花数据集iris=load_irisX=iris.datay=iris.targetfeature_names=iris.feature_namestarget_names=iris.target_names#转换为PandasDataFramecolumns=[name.replace cm,.replacelength,长度.replacewidth,宽度for nameinfeature_names]df=pd.DataFrameX,columns=columnsdf[种类]=[target_names[i]for iin y]#查看数据基本信息print数据集形状:,df.shapeprint\n数据集前5行:printdf.headprint\n数据统计摘要:printdf.describe#检查缺失值missing_values=df.isnull.sumprint\n缺失值统计:printmissing_values#人为添加一些缺失值用于演示np.random.seed42mask=np.random.randomdf.shape
0.05#5%的缺失率df_with_missing=df.copydf_with_missing[mask]=np.nan#缺失值填充df_filled=df_with_missing.copy#使用均值填充数值列for colin df_filled.columns[:-1]:#除了种类列df_filled[col].fillnadf_filled[col].mean,inplace=Trueprint\n填充前缺失值统计:printdf_with_missing.isnull.sumprint\n填充后缺失值统计:printdf_filled.isnull.sum#数据标准化scaler=StandardScalerX_scaled=scaler.fit_transformdf_filled.iloc[:,:-1]df_scaled=pd.DataFrameX_scaled,columns=df_filled.columns[:-1]df_scaled[种类]=df_filled[种类]print\n标准化前的统计摘要:printdf_filled.iloc[:,:-1].describeprint\n标准化后的统计摘要:printdf_scaled.iloc[:,:-1].describe综合建模案例分享捕食者猎物模型核弹爆炸安全半径建模-Lotka-Volterra模型是生态系统中捕食者与猎物种群动态的经典模型,通过微分方程描述两个物种间的相互作用通过物理模型计算不同当量核弹的安全距离#Lotka-Volterra模型的Python实现importnumpyas npfromscipy.integrate importsolve_ivpimport matplotlib.pyplot asplt#定义Lotka-Volterra方程组def lotka_volterrat,z,alpha,beta,gamma,delta:x,y=z#x:猎物数量,y:捕食者数量dxdt=alpha*x-beta*x*y#猎物变化率dydt=delta*x*y-gamma*y#捕食者变化率return[dxdt,dydt]#参数设置alpha=
1.1#猎物自然增长率beta=
0.4#猎物被捕食率gamma=
0.4#捕食者自然死亡率delta=
0.1#捕食者由于捕食而增长的系数#初始条件x0=10#初始猎物数量y0=5#初始捕食者数量#时间范围t_span=0,50t_eval=np.linspace0,50,1000#求解微分方程solution=solve_ivp lambdat,z:lotka_volterrat,z,alpha,beta,gamma,delta,t_span,[x0,y0],t_eval=t_eval,method=RK45#提取结果t=solution.tx=solution.y
[0]#猎物数量y=solution.y
[1]#捕食者数量#绘制时间序列plt.figurefigsize=12,8plt.subplot2,1,1plt.plott,x,b-,label=猎物Preyplt.plott,y,r-,label=捕食者Predatorplt.gridTrueplt.legendplt.xlabel时间plt.ylabel种群数量plt.titleLotka-Volterra模型捕食者-猎物种群动态#绘制相图plt.subplot2,1,2plt.plotx,y,g-plt.gridTrueplt.xlabel猎物数量plt.ylabel捕食者数量plt.title相图捕食者数量vs猎物数量plt.tight_layoutplt.savefiglotka_volterra_model.png第五章实用技巧与资源Python在掌握了的基础知识、高级应用、开发和数学建模等技能之后,本章将关PythonWeb注如何提升您的开发效率和持续学习能力我们将介绍常用的开发工具、调试Python技巧、学习资源以及职业发展路径高效的开发环境和工具可以显著提升编程效率,而掌握调试和版本控制技能则是专业开发者必备的素养同时,生态系统和社区资源丰富多样,了解如何有效利用这Python些资源对于持续提升编程能力至关重要常用开发工具与调试技巧与配置版本控制基础VSCode PyCharmGit选择合适的IDE能显著提高开发效率,目前最流行的PythonIDE是VSCode和PyCharmGit是当前最流行的版本控制系统,掌握Git是现代开发者的必备技能VSCode配置要点#基本Git命令git init#初始化仓库git clone[url]#克隆远程仓库git add[file]•安装Python扩展Python、Pylance、Python DocstringGenerator#添加文件到暂存区git commit-m消息#提交更改git push#推送到远程仓库git pull•配置解释器选择正确的Python环境#拉取远程更改git branch#列出分支git checkout[branch]#切换分支git merge[branch]#合并分支git status#查看状态•代码格式化安装autopep8或black插件•调试设置launch.json配置•推荐插件Jupyter、Remote Development、GitLens#VSCode settings.json示例配置{python.linting.enabled:true,python.linting.pylintEnabled:true,python.formatting.provider:black,python.formatting.blackArgs:[--line-length,88],editor.formatOnSave:true,python.testing.pytestEnabled:true}PyCharm配置要点•项目解释器设置正确的Python环境•代码检查配置PEP8检查规则•调试配置断点、条件断点、日志点•版本控制集成Git、SVN等•数据库工具连接并管理数据库单元测试与代码规范优质代码需要良好的测试和规范学习资源与社区推荐官方文档与教程开源项目与代码仓库官方资源是最权威的学习材料优质项目是学习实际编程的最佳资源Python官方文档最全面的参考资料热门项目查看优秀代码•Python Python•GitHub Python教程适合初学者的系统教程、等框架源码•Python•Flask DjangoWeb增强提案了解设计理念、等数据科学库•PEPPythonPython•NumPy Pandas高质量的教程网站、等人工智能库•Real Python Python•TensorFlow PyTorch•廖雪峰Python教程中文入门教程代码学习平台推荐书籍算法练习•LeetCode《编程从入门到实践》辅助编程•Python•GitHub CopilotAI《流畅的》数据科学竞赛平台•Python•Kaggle《》编程挑战•Python Cookbook•CodeWars《》•Effective Python在线课程与学习群组结构化学习资源平台、、•MOOC CourseraedX Udemy中国大学国内高校课程•MOOC Python频道、•YouTube CoreySchafer sentdex慕课网、极客时间中文视频教程•社区与交流编程问答社区•Stack Overflow中文社区国内论坛•PythonPython掘金、技术博客平台•CSDN知乎话题问答与文章•Python各类学习微信群、群•Python QQ课程总结与学习建议实践项目驱动成长项目是最好的学习方式,推荐初学者尝试个人工具自动化日常任务的脚本应用个人博客、待办事项管理Web数据分析股市数据可视化、疫情数据分析学习路径规划Python应用图像识别、简单预测模型AI合理规划学习路径可以避免迷失方向游戏开发贪吃蛇、俄罗斯方块等小游戏基础阶段语法、数据结构、函数、面向对象编程项目驱动学习能够解决实际问题,同时培养综合能力和成就感进阶阶段标准库、文件操作、异常处理、装饰器持续学习与技术分享专业方向根据兴趣选择开发、数据分析、人工智能等Web编程是终身学习的过程,建议实战提升完整项目开发、编码规范、测试与部署每周阅读技术文章,了解最新动态•持续精进源码阅读、开源贡献、技术分享定期参与技术讲座和线上研讨会•建立个人技术博客,记录学习心得•参与开源项目,贡献代码或文档•在社区中回答问题,帮助他人•教是最好的学通过向他人解释技术概念,可以加深自己的理—解感谢您完成马士兵教学课程的学习!希望本课程为您提供了系统的知识体系和实践技能的魅力在于其简洁而强大的语法,以及丰富多样的应用场景无论您是希望在数据科学领域深耕,PythonPythonPython还是在开发方向发展,或者将作为自动化工作的工具,这门语言都能满足您的需求WebPython。
个人认证
优秀文档
获得点赞 0