




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python深度学习及智能车竞赛实践课程内容及学习要求简介课程教学目标第2页基于Python养成计算思维,学会Python编程求解问题;能用Python做数据分析,完成深度学习数据预处理;掌握深度学习基础理论及实践方法,能设计深度学习模型解决工程问题;能创新性完成智能车竞赛中图像处理和深度学习相关任务(拓展内容)。课程教材推荐第一单元第二单元第三单元第四单元1~5章Python基础知识体系:Python基本语法与数据类型、程序结构、函数和类、Python组合数据类型基于Python养成计算思维能用Python做数据分析6~7章Python文件处理及数据分析,OS库、ZipFile库、json库、PIL库和OpenCV库,Python计算生态与机器学习库10~11章智能汽车竞赛图像处理和深度学习相关任务:智能车自动巡航任务、智能车目标检测CNN模型设计与及部署等8~9章深度学习基础及实践:神经网络基本概念、单层感知器、全连接神经网络和卷积神经网络理论及实践学懂AI:掌握深度学习理论及实践方法创新性解决智能车竞赛中图像处理和深度学习相关任务课程教学内容Python基本语法及数据类型程序控制结构函数和类组合数据类型ReLU激活函数智能车差速转向智能车电池电压检测智能车自动循迹类创建单层感知器模型设计用类创建智能车自动循迹字典IIIIVVIVIIIIIPython机器学习库线性回归方法
智能车行驶路径拟合
loss和acc曲线绘制深度学习方法DNN和CNN实践
基于DNN的车辆识别基于CNN的斑马线检测知识点逐步深入
课程知识点案例和作业难度逐步提高
智能车竞赛凝练教学案例V文件及数据格式化
赛车道自动绘制、车辆图片数据集处理、车辆图片json文件处理VIII数据采集、处理CNN模型基于竞赛场景的智能车自动巡航、目标检测任务完成课程与竞赛融合第6页循序渐进,先打好基础,再逐步提高;理论与实践紧密结合,不能只听视频讲解,一定要自己动手编写、调试程序,到课程后期能自己搭建深度学习模型;建议学有余力同学报名参加全国大学生智能汽车竞赛百度智慧交通创意赛和完全模型组竞赛,用所学知识解决实际问题。课程学习方法教育部倡导的大学生A类科技竞赛;中国高等教育学会将其列为含金量最高的大学生竞赛之一;已成功举办十八届,比赛每年吸引了包括清华、上交、复旦、北航等500多所高校参加。全国大学生智能汽车竞赛百度智慧交通创意组百度完全模型竞速组第一章绪论Python深度学习及智能车竞赛实践010203人工智能的发展及基本概念智能汽车及全国大学生智能汽车竞赛程序设计语言及Python语言简介目录第10页010203人工智能的发展及基本概念智能汽车及全国大学生智能汽车竞赛程序设计语言及Python语言简介目录第11页第12页人工智能概念首次于1956年夏由麦肯锡(MCKINSEY)、明斯基(MINSKY)、罗切斯特(ROCHESTER)和香农(SHANNON)等科学家在美国达特茅斯学院(DartmouthCollege)首次提出,开会研讨“如何用机器模拟人的智能”,这标志着人工智能学科的诞生。01—人工智能的发展及基本概念01—人工智能的发展及基本概念人工智能的曲折发展历程图灵测试195019601970198019902000201020202030达特茅斯会议感知机SOM自组织映射网络Hopfield映射网络BP神经网络IBM深蓝战胜国际象棋冠军深度学习多层表征学习Google大脑AlphaGo击败李世石、柯洁AI助力疫情防控、碳中和逻辑推理专家系统机器学习深度学习大数据受限于计算机算力专家系统应用领域狭窄等问题计算驱动知识驱动数据驱动ChatGPT文心一言知识图谱01—人工智能的发展及基本概念中国人工智能研究的发展历程曲折认识艰难起步、迎来曙光快速发展国家战略1980年代初期国家形式动荡、伪科学观念盛行1978年全国科学大会召开,1981年中国人工智能学会成立,人工智能项目开始纳入国家科技计划1986年智能计算系统、智能机器人和智能信息处理等重大项目列入“国家863计划”1993年智能控制和智能自动化等项目开始陆续列入国家科技攀登计划2009年中国人工智能学会向国家学位委员会和国家教育部提出设立“智能科学与技术”一级学科2016年国务院发布《中国制造2025》;国家发改委和科技部等4部门联合发布《“互联网”+人工智能”三年行动实施方案》2017年2017年国务院印发《新一代人工智能发展规划的通知》;
2018年教育部印发《高等学校人工智能创新行动计划》国家十三五规划:面向2030年,确定了15个重大项目的立项建议,酝酿“人工智能2.0”推动中国高新技术发展及产业化水平1950年代初期二十大报告:构建新一代信息技术、人工智能等新增长引擎符号主义学派,人工智能早期学派,又称为逻辑主义、心理学派或计算机学派,其原理主要为物理符号系统假设和有限合理性原理,代表性成果有专家系统和推理机。连接主义学派,又称仿生学派或生理学派,基于神经网络和网络间的连接机制与学习算法的智能模拟方法。强调智能活动是由大量简单单元通过复杂连接后并行运行的结果。代表性成果有感知器、反向传播网络、卷积神经网络等。行为主义学派,又称进化主义或控制论学派,是一种基于“感知—行动”的行为智能模拟方法。行为主义认为智能取决于感知和行为,取决于对外界复杂环境的适应,而不是表示和推理。代表性成果有六足行走机器人等。抽象思维形象思维感知思维求同存异、相互融合01—人工智能的发展及基本概念人工智能是一种广泛的概念,指的是使计算机系统具备模拟人类智能的能力,以便解决复杂问题或执行各种任务。深度学习人工智能机器学习深度学习是通过构建和训练多层神经网络来实现对数据的学习和理解,深度学习没有超出机器学习的范畴。机器学习是通过让计算机从历史经验中学习以改善系统自身性能的方式来达成这个目标,一般来说就是基于数据的训练。01—人工智能的发展及基本概念010203人工智能的发展及基本概念智能汽车及全国大学生智能汽车竞赛程序设计语言及Python语言简介目录第17页02—智能汽车及全国大学生智能汽车竞赛汽车智能驾驶系统目标物体识别摄像头激光雷达超声波雷达毫米波雷达V2X4G/5G车联网信息GPS/北斗INS车姿信息高精度定位、地图多源传感器数据融合路径规划行为决策运动规划车辆状态动力学模型闭环控制车辆稳定性冗余控制横向和纵向控制器转向制动加速减速其他环境感知决策规划控制执行全国大学生智能汽车竞赛是教育部倡导的大学生科技A类竞赛中国高等教育学会将其列为含金量最高的大学生竞赛之一比赛每年吸引了包括清华、上交、复旦、北航等500多所高校参加02—智能汽车及全国大学生智能汽车竞赛全国大学生智能汽车竞赛至今已成功举办十八届,参赛学生总规模超过35万人次,学生收获和竞赛声誉保持高位。赛段时间进程线上资格赛1~2月线上资格赛报名3月线上赛评测入口开放6月初线上赛评测入口关闭,线上赛结束6月上旬线上赛成绩公布车模制作3-6月核心硬件发放制作车模,备战线下赛线下分区赛6月上旬线下赛启动报名6月底线下赛参赛队伍确定7月线下分区赛8月初线下分区赛成绩公布全国总决赛8月底全国总决赛02—智能汽车及全国大学生智能汽车竞赛赛事时间大致安排全国大学生智能汽车竞赛创意组中的一个组别;比赛全程使用百度飞桨深度学习框架;含线上赛和线下赛;在无人的环境下,实现数据采集、数据模型构建、自主识别赛道、无人驾驶验证等多种技术融合的场景。02—智能汽车及全国大学生智能汽车竞赛百度智慧交通组介绍02—智能汽车及全国大学生智能汽车竞赛赛事规则要点利用指定的数据集,在统一的计算资源下,创建能够识别交通标志状态及其具体位置和类别的深度学习模型;不限制深度学习任务,推荐使用PaddleDetection开发套件;提供基线教程baseline,轻松上手:https:///aistudio/projectdetail/3507517?contributionType=1&shared=1;根据精度(F1-Score)和FPS进行线上打榜排名,占总成绩10%百度智慧交通组线上赛小车从起点出发,利用前置摄像头获得图像,沿着车道线巡航一周,要求不出界,不超时(5min)即完成巡航任务;设计AI模型识别沿途地面图标对应的任务,调用侧面摄像头识别任务类型,通过电机和舵机动作完成击打、举旗、交换货物等多个任务。02—智能汽车及全国大学生智能汽车竞赛百度智慧交通组线下赛赛事鼓励DIY,尽情发挥你的创意02—智能汽车及全国大学生智能汽车竞赛百度智慧交通组线下赛车模全国大学生智能汽车竞赛竞速组中的一个组别;赛事设计更符合真实自动驾驶场景,具有更加复杂的机器视觉处理和模型车运动控制任务;含线上赛和线下赛,要求使用统一指定的竞赛车模套件、微控制器平台,自主构思车模控制方案进行系统设计,同时,将AI视觉模型引入传统控制算法中,在赛道上完成相应的任务。02—智能汽车及全国大学生智能汽车竞赛百度完全模型组组介绍赛事规则要点基于给定数据集,在统一的计算资源下,设计识别道路车道线的深度学习模型;数据集:16000张可直接用于训练的车载影像,图像标注为四类:背景、虚/实车道线、斑马线;该深度学习任务属于语义分割,使用PaddleSeg开发套件,提供基线教程baseline,轻松上手;根据精度(mIoU)和FPS进行线上打榜排名,占总成绩10%。语义分割结果示例:02—智能汽车及全国大学生智能汽车竞赛百度完全模型组线上赛小车从起点出发,利用前置摄像头获得信息,控制车辆沿车道线巡航两周;在巡航过程中的相应点位,使用目标检测模型识别地面图标,明确该点位需要完成的任务,控制车辆完成正确出入加油站、躲避障碍物、绕过施工区等任务,完成相应任务获得奖励时间。02—智能汽车及全国大学生智能汽车竞赛百度完全模型组线上赛赛事鼓励DIY车壳,最帅车壳等你创作I车模实拍I车模机械结构爆炸图02—智能汽车及全国大学生智能汽车竞赛百度完全模型组线下赛车模010203人工智能的发展及基本概念智能汽车及全国大学生智能汽车竞赛程序设计语言及Python语言简介目录第29页程序设计语言是用于书写计算机程序的语言按照特定规则组织计算机指令,使计算机能够自动进行各种运算处理;按照程序设计语言规则组织起来的一组计算机指令称为计算机程序。03—程序设计语言及Python语言简介程序设计语言的定义机器语言汇编语言高级语言03—程序设计语言及Python语言简介程序设计语言类型机器语言机器语言是一种二进制语言,它直接使用二进制代码表达指令,是计算机硬件可以直接识别和执行的程序设计语言;例如:执行数字2和3的加法,16位计算机上的机器指令为:1101001000111011,不同计算机结构的机器指令会有所不同;可读性差,可移植性差,编程难度大。03—程序设计语言及Python语言简介程序设计语言类型汇编语言使用助记符与机器语言中的指令进行一一对应,在计算机发展早期帮助程序员提高编程效率;例如:执行数字2和3的加法,汇编语言代码为:add2,3,result,运算结果写入result。机器语言和汇编语言直接操作计算机硬件,称为低级语言。03—程序设计语言及Python语言简介程序设计语言类型高级语言是接近自然语言的一种计算机程序设计语言,结合了数学表达式和英语符号)更容易地描述计算问题并利用计算机解决计算问题;
例如:执行数字2和3加法的高级语言代码为:result=2+3。03—程序设计语言及Python语言简介程序设计语言类型计算机执行源程序的两种方式:编译和解释
-源代码:采用某种编程语言编写的计算机程序,人类可读
例如:result=2+3
-目标代码:计算机可直接执行,人类不可读(专家除外)
例如:110100100011101103—程序设计语言及Python语言简介高级编程语言的执行方式执行编译过程的程序叫作编译器源代码目标代码编译器程序输入结果输出程序执行03—程序设计语言及Python语言简介编译:将源代码一次性转换成目标代码的过程高级编程语言的执行方式解释:将源代码逐条转换成目标代码同时逐条运行的过程。执行解释过程的程序叫作解释器源代码解释器程序输入结果输出03—程序设计语言及Python语言简介高级编程语言的执行方式根据执行方式不同,编程语言分为两类
-静态语言:使用编译执行的编程语言 C/C++语言、Java语言
-
脚本语言:使用解释执行的编程语言 Python语言、JavaScript语言、PHP语言03—程序设计语言及Python语言简介高级编程语言的执行方式执行方式不同,优势各有不同
-静态语言:编译器一次性生成目标代码,优化更充分
程序运行速度更快
-
脚本语言:执行程序时需要源代码,维护更灵活
源代码方便维护、适用于跨多个操作系统平台03—程序设计语言及Python语言简介高级编程语言的执行方式GuidovanRossumPython语言创立者,1989为了打发圣诞节时间而设想开发的,诞生于1990年,正式的发布在1991年。2002年,Python2.x2008年,Python3.x03—程序设计语言及Python语言简介Python语言的诞生Python的设计混合了传统语言的软件工程的特点和脚本语言的易用性:开源、易于维护可移植易于使用、简单优雅广泛的标准库、功能强大可扩展、可嵌入…工欲善其事、必先利其器03—程序设计语言及Python语言简介Python语言的优势运行速度慢Python是解释型语言,运行时翻译为机器码比较耗时,而C语言是运行前直接编译成CPU能执行的机器码。代码不能加密解释型语言发布程序就是发布源代码,而C语言是把编译后的机器码发布出去,从机器码反推出C代码是不可能的。03—程序设计语言及Python语言简介Python语言的缺点常规软件开发支持函数式编程和OOP面向对象编程,适用于常规的软件开发、脚本编写、网络编程科学计算随着NumPy,SciPy,Matplotlib等众多库的开发,Python非常适合于做科学计算、绘制高质量的2D和3D图像WEB开发基于Python的Web开发框架很多,如Django,Flask网络爬虫大数据行业获取数据的核心工具。Python是编写网络爬虫的主流编程语言,Scrapy爬虫框架应用非常广泛数据分析对数据进行清洗、去重、规格化和针对性的分析是大数据行业的基石。Python是数据分析的主流语言之一人工智能Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用03—程序设计语言及Python语言简介Python典型应用更高级别的3.0系列不兼容早期2.0系列2008年至今,版本更迭带来大量库函数的升级替换,Python语言的版本更迭痛苦且漫长Python3.x系列已经成为主流03—程序设计语言及Python语言简介Python语言的版本更迭只有一行代码
第一行的“>>>”是Python语言运行环境的提示符第二行是Python语句的执行结果>>>print("HelloWorld")HelloWorld03—程序设计语言及Python语言简介Python语言的的Hello程序一般来说,同样功能的程序,Python语言实现的代码行数仅相当于C语言的1/5至1/10;简洁程度取决于程序的复杂度和规模。#include<stdio.h>intmain(void){printf("HelloWorld\n");
return0;}03—程序设计语言及Python语言简介C语言的Hello程序Python支持中文等非西文字符的直接使用:>>>print(“全国大学生智能汽车竞赛。”)全国大学生智能汽车竞赛。>>>print(“百度智慧交通创意赛!”)百度智慧交通创意赛!03—程序设计语言及Python语言简介Python处理中文灵活下载并安装IDLE,网址:
/downloads/
根据操作系统不同选择不同版本下载相应的Python3.0系列版本程序03—程序设计语言及Python语言简介Python集成开发环境IDLEIDLE中集成有:•编辑器:编辑和修改程序•解释器:执行程序•程序调试:查找程序03—程序设计语言及Python语言简介Python集成开发环境IDLEIDLE中有两种程序设计运行方式:
交互式和文件式03—程序设计语言及Python语言简介启动IDLE交互式指Python解释器即时响应用户输入的每条代码,给出输出结果;对每个输入语句即时运行结果,适合语法练习。03—程序设计语言及Python语言简介IDLE交互式也称为批量式,打开IDLE,按键Ctrl+N打开一个新窗口,输入语句并保存,使用快捷键F5即可运行该程序,或者在IDLE菜单栏中选择相应的命令;批量执行一组语句并运行结果,编程的主要方式。03—程序设计语言及Python语言简介IDLE文件式交互式:>>>velocity=80>>>time=2>>>mileage=velocity*time>>>print(mileage)16003—程序设计语言及Python语言简介实例:汽车行驶里程的计算文件式(打开IDLE,新建文件):运行结果:160velocity=80time=2mileage=velocity*timeprint(mileage)03—程序设计语言及Python语言简介实例:汽车行驶里程的计算PyCharm:官方下载地址/pycharm/download/PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。03—程序设计语言及Python语言简介其他的PYTHON开发环境Anaconda:官方下载地址/download/Anaconda的下载文件比较大,集成了200+的科学包,进行Python的高级使用(爬虫,大数据分析,AI...)时可以直接使用。anaconda是在conda的基础上发展的,conda(包管理器)可以很好的安装和管理这些包,包括安装、卸载和更新包。03—程序设计语言及Python语言简介其他的PYTHON开发环境实例1.1正方形面积的计算实例1.2人名对话实例1.3求数的平方实例1.4同心圆的绘制03—程序设计语言及Python语言简介PYTHON小程序示例交互式:>>>length=10
#正方形边长>>>
area=length*length
#求正方形面积>>>
print(area)
#输出正方形面积值10003—程序设计语言及Python语言简介实例1.1正方形面积的计算文件式(打开IDLE,新建文件):运行结果:100#实例1.1正方形面积计算,文件模式代码length=10
#正方形边长area=length*length
#求正方形面积print(area)
#输出正方形面积值03—程序设计语言及Python语言简介实例1.1正方形面积的计算交互式:>>>name=input("请输入姓名:")请输入姓名:孔明
>>>print("{}同学,选修该课程,学会Python编程".format(name))
孔明同学,选修该课程,学会Python编程>>>print("{}同学,选修该课程,能用Python做数据分析".format(name))孔明同学,选修该课程,能用Python做数据分析>>>print("{}同学,选修该课程,学懂AI".format(name))孔明同学,选修该课程,学懂AI03—程序设计语言及Python语言简介实例1.2人名对话numbers=[1,2,3,4,5]
#列表数据squared_numbers=[num**2fornuminnumbers]
#遍历列表中每个元素求平方print(squared_numbers)
#输出求平方后的列表03—程序设计语言及Python语言简介文件式:实例1.3求数的平方importturtle#引用turtle库turtle.circle(50)
#绘制半径为50像素的圆turtle.penup()
#抬起画笔,移动不划线turtle.goto(0,-50)
#画笔移到(0,-50)像素turtle.pendown()
#放下画笔turtle.circle(100)
#绘制半径为100像素的圆turtle.penup()
#抬起画笔,移动不划线turtle.goto(0,-100)#画笔移到(0,-100)像素turtle.pendown()
#放下画笔turtle.circle(150)
#绘制半径为150像素的圆03—程序设计语言及Python语言简介实例1.4同心圆的绘制本章总结了解人工智能基本概念及发展;了解智能汽车及全国大学生智能汽车竞赛;高级程序设计语言的编译和解释执行方式;了解PYTHON的IDLE集成开发环境应用;体会python编写简单小程序。第二章Python基本语法元素和数据类型Python深度学习及智能车竞赛实践010203程序基本设计方法python基本语法结构python基本数据类型目录第65页010203程序基本设计方法python基本语法结构python基本数据类型目录第66页第67页计算机编程求解问题的过程分析问题,抽象内容之间的交互关系;设计利用计算机求解问题的确定性方法(IPO);编写、调试、测试程序;
这是从抽象问题到解决问题的完整过程。01—程序基本设计方法第68页程序的基本设计方法I:Input输入数据,程序的输入P:Process处理数据,程序的主要逻辑O:Output输出数据,程序的输出
—IPO程序设计方法01—程序基本设计方法第69页理解IPOI-程序的输入——文件输入、网络输入、控制台输入、交互界面输入、内部参数输入;
输入是一个程序的开始
O-程序的输出
——控制台输出、图形输出、文件输出、网络输出、操作系统内部变量输出等;
输出是程序展示运算结果的方式
P-处理方法
——
处理是程序对输入数据进行计算产生输出结果的过程,处理方法统称为算法,它是程序最重要的部分;算法是一个程序的灵魂01—程序基本设计方法第70页激活函数(ActivationFunction)是一种用于人工神经网络中的函数,旨在实现神经网络模型的非线性输出。
实例2.1:RELU激活函数IPO程序设计方法01—程序基本设计方法第71页问题分析:划分边界
输入:数值x;
处理:算法
f(x);
输出:x或0
实例2.1:RELU激活函数设计程序IPO程序设计方法01—程序基本设计方法第72页IPO程序设计方法在全国大学生智能汽车竞赛智慧交通创意赛中,可以通过深度学习模型得到智能车转角预测值,这个值的大小是在[-1,1]之间,大于0表示右转弯,小于0表示左转弯。智能车转向是可以通过左右轮差速实现转向如需要右转弯,右轮减速,左轮速度不变;如需要左转弯,左轮减速,右轮速度不变。实例2.2:智能车差速转向01—程序基本设计方法第73页问题分析:划分边界
输入:车轮直行速度speed,深度学习模型得到的归一化转向角度angle,调节系数
kx;
处理:算法f(x);
输出:左、右轮速度。IPO程序设计方法实例2.2:智能车差速转向01—程序基本设计方法第74页问题分析:划分边界
输入:speed、angle、kx;
处理:算法f(x);
输出:左、右轮速度。问题:如何利用Python程序实现智能车差速转向控制?IPO程序设计方法实例2.2:智能车差速转向01—程序基本设计方法第75页#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向right_wheel=(1-angle*kx)*speed
print("right_speed:",right_wheel,"left_speed:",left_wheel)elif
-1<=angle<=0:#左转向left_wheel=(1-abs(angle*kx))*speed
print("right_speed:",right_wheel,"left_speed:",left_wheel)else:
print("输入转角信息不是归一化数据")IPO程序设计方法01—程序基本设计方法第76页程序运行和测试使用IDLE打开文件,按F5运行(推荐)输入数值,观察输出或者:在系统命令行运行如下命令(需要进入程序所在目录):D:\pycodes\2\python2.2steer.py请输入归一化后的角度:01—程序基本设计方法010203程序基本设计方法python基本语法结构python基本数据类型目录第77页•注释:comment•缩进:indent•标识符:identifier•常量:constant•变量:variable•表达式:expression•输入:input•输出:output•分支:Selection02—Python基本语法元素注释:用于提高代码可读性的辅助性文字,不被执行#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左转向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("输入转角信息不是归一化数据")-单行注释:以#开头,其后内容为注释02—Python基本语法元素注释:用于提高代码可读性的辅助性文字,不被执行'''实例2.2Steer.py智能车差速转向本实例用于全国大学生智能汽车竞赛'''left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:
passelif-1<=angle<=0:passelse:
pass-
多行注释:以'''开头和结尾
02—Python基本语法元素#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:
right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:
left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:
print("输入转角信息不是归一化数据")缩进:一行代码开始前的空白区域,表达程序的格式框架02—Python基本语法元素#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if-1<=angle<=1:if0<angle<=1:
right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:
left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:
print("输入转角信息不是归一化数据")多层缩进:表示程序语句多层从属关系02—Python基本语法元素缩进表达程序的格式框架-严格明确:缩进是语法的一部分,缩进不正确程序运行错误-
所属关系:表达代码间包含和层次关系的唯一手段-
长度一致:程序内一致即可,一般用4个空格或1个TAB缩进:02—Python基本语法元素变量是保存和表示数据值的一种语法元素,在程序中十分常见。变量的值是可以改变的,能够通过赋值(使用“=”
表达)方式被修改,例如:speed=20kx=0.85left_wheel=speedright_wheel=speed变量:02—Python基本语法元素用来保存和表示数据的占位符号-变量采用标识符(名字)来表示,关联标识符的过程叫命名
“speed“是变量名字-
可以使用等号(=)给变量赋值或修改值,=被称为赋值符号
angle
=0.5#给变量angle赋值0.5变量:02—Python基本语法元素关联标识符的过程-命名规则:大小写字母、数字、下划线和中文等字符及组合
如:right_wheel,Python_Great,这是门Python好课-
注意事项:大小写敏感、首字符不能是数字、不与保留字相同
Right_wheel和right_wheel是不同变量,123Python是不合法的命名:02—Python基本语法元素#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向
right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左转向
left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("输入转角信息不是归一化数据")命名:程序中用于保存和表示数据的占位符号02—Python基本语法元素保留字:被编程语言内部定义并保留使用的标识符-Python语言有35个保留字(也叫关键字)
if,elif,else,in……-
保留字是编程语言的基本单词,大小写敏感
if
是保留字,If
是变量02—Python基本语法元素andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTruebreakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryieldasyncdefifpassdelawait(27/35)保留字:被编程语言内部定义并保留使用的标识符02—Python基本语法元素
Python语言中,=表示“赋值”,即将等号右侧的值计算后将结果值赋给左侧变量,包含“=”
的语句称为“赋值语句”;同步赋值语句:同时给多个变量赋值
<变量1>,…,<变量N>=<表达式1>,…,<表达式N>
如:a,b=3,5赋值语句语句元素:02—Python基本语法元素例:将变量x和y交换采用单个赋值,需要3行语句:即通过一个临时变量t缓存x的原始值,然后将y值赋给x,再将x的原始值通过t赋值给y。采用同步赋值语句,仅需要一行代码:赋值语句语句元素:02—Python基本语法元素分支语句是控制程序运行的一类重要语句,它的作用是根据判断条件选择程序执行路径;分支语句包括:单分支、二分支和多分支;
单分支语句是最简单的分支语句,使用方式如下:if<条件>:<语句块>>>>
x=18>>>ifx>0:
output=x分支语句语句元素:02—Python基本语法元素二分支语句:分支语句语句元素:02—Python基本语法元素多分支语句#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左转向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("输入转角信息不是归一化数据")02—Python基本语法元素作用:获得用户输入input()函数可以包含一些提示性文字
<变量>=input(<提示性文字>)input()函数>>>ang=input("请输入归一化后的角度:")请输入归一化后的角度:0.1>>>
ang‘0.1’>>>float(
ang)0.1#如果没有输入任何信息,直接按回车键,则把空字符串赋给ang基本输入输出函数:02—Python基本语法元素input()函数#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左转向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("输入转角信息不是归一化数据")02—Python基本语法元素-eval()函数的基本使用格式:
eval(<字符串或字符串变量>)
去掉参数最外侧引号>>>
eval('"1+2"')"1+2">>>
eval('print("Hello")')Hello>>>
eval("1")1>>>
eval("1+2")3eval()评估函数02—Python基本语法元素eval()函数经常和input()函数一起使用,用来获取用户输入的数字,使用方式如下:<变量>=eval(input(<提示性文字>))a=eval(input("请输出考试分数:"))ifa>=60:
print("及格")else:
print("不及格")input()函数也可以和int()、float()函数结合使用eval()评估函数02—Python基本语法元素print()函数用于输出运算结果print()函数print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects:可选参数,表示要输出的对象,可以是各种数据类型的变量、常量;sep:可选参数,表示分隔符,默认为
‘’(空格);end:可选参数,表示输出结束后要添加的字符,默认为
‘\n’(换行符);file:可选参数,表示要写入的文件对象,默认为sys.stdout(标准输出);flush:可选参数,表示是否强制刷新输出,默认为False。*objects前面的*表示可以有可变数量对象个数基本输入输出函数:02—Python基本语法元素>>>
print("强国有我")强国有我>>>
value
=
123.456>>>print(value,value,value)123.456
123.456
123.456print()函数基本输入输出函数:02—Python基本语法元素end参数print(<待输出内容>,end="<增加的输出结尾>")>>>a=54
>>>print(a,
end=".")54.>>>print(a,
end="%")54%print()函数基本输入输出函数:02—Python基本语法元素#实例2.2Steer.py智能车差速转向speed=20#设定车轮直线行驶速度kx=0.85
#调节参数left_wheel=speedright_wheel=speedangle=eval(input("请输入归一化后的角度:"))if0<angle<=1:#右转向right_wheel=(1-angle*kx)*speed
print("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左转向left_wheel=(1-abs(angle*kx))*speed
print("right_speed:",right_wheel,"left_speed:",left_wheel)else:
print("输入转角信息不是归一化数据")02—Python基本语法元素Python程序会经常使用当前程序之外已有的功能代码,这个过程叫“引用”。Python语言使用import保留字引用当前程序以外的功能库,使用方式如下:
import<功能库名称>功能库引用:02—Python基本语法元素第一种:import<库名>使用库中函数格式:<库名>.<函数名>(<函数参数>)第二种:from<库名>import<函数名,函数名,…>from<库名>import*#*是通配符,表示所有函数。使用库中函数格式:<函数名>(<函数参数>)02—Python基本语法元素功能库引用:010203程序基本设计方法python基本语法结构python基本数据类型目录第105页3.1数字类型3.2math库3.5time库3.3字符串类型03python基本数据类型目录第106页3.4字符串类型格式化控制3.1数字类型3.2math库3.5time库3.3字符串类型03python基本数据类型目录第107页3.4字符串类型格式化控制Python语言支持多种数据类型最简单的包括数字类型、字符串类型;复杂的包括元组类型、集合类型、列表类型、字典类型等(第5章内容)。03—Python基本数据类型Python语言包括三种数字类型整数类型浮点数类型复数类型1010是一个整数类型,10.10是一个浮点数类型,10+10j是一个复数类型。3.1数字类型整数类型与数学中整数的概念一致-可正可负,没有取值范围限制-
pow(x,y)函数:计算xy,想算多大算多大>>>
pow(2,100)1267650600228229401496703205376>>>
pow(2,pow(2,15))1415461031044954789001553……3.1数字类型整数类型有4种进制表示:十进制、二进制、八进制和十六进制。默认情况,整数采用十进制,其他进制需要增加引导符号。不同进制的整数之间可以直接运算3.1数字类型整数类型浮点数两种表示方法:小数点一般形式;科学计数法表示。例如:浮点数123.456,两种表示方式如下:一般形式:123.456科学计数法:1.23456e23.1数字类型浮点数类型与数学中实数的概念一致带有小数点及小数的数字Python语言中的浮点数类型必须带有小数部分,小数部分可以是0。例如:1010是整数,1010.0是浮点数。3.1数字类型浮点数类型-
浮点数取值范围和小数精度都存在限制,
取值范围数量级约-10307至10308,精度数量级10-16,满足大部分常规计算要求。浮点数间运算存在不确定尾数,不是bug>>>0.1+0.30.4>>>0.1+0.20.30000000000000004不确定尾数3.1数字类型浮点数类型浮点数间运算存在不确定尾数,不是bug0.1用二进制表示是一个无限的小数,计算机只能截取其中的53位,无限接近0.1,但并不真正等于0.10.00011001100110011001100110011001100110011001100110011010(二进制表示)Python用53位二进制表示小数部分0.1000000000000000055511151231257827021181583404541015625(十进制表示)0.1+0.2二进制表示小数,可以无限接近,但不完全相同结果无限接近0.3,但可能存在尾数3.1数字类型浮点数类型-round(x,d):对x四舍五入,d是小数截取位数-浮点数间运算与比较用round()函数辅助-
不确定尾数一般发生在10-16左右,round()十分有效>>>
round(0.1+0.2,1)==0.3True3.1数字类型浮点数类型浮点数间运算存在不确定尾数>>>0.1+0.2==0.3False科学计数法使用字母e或者E作为幂的符号,以10为基数,含义如下:
<a>e<b>=a*10b
1.02e3值为1020.0;1.02E-3值为0.00102。Python浮点数类型的数值范围和小数精度受不同计算机系统的限制。除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度是满足要求的。3.1数字类型浮点数类型与数学中的复数概念一致,z=a+bj,
a是实数部分,b是虚数部分,a和b都是浮点类型,虚数部分用j或者J标识。
示例:12.3+4j,-5.6+7j,2.0+1j
当b为1时,1不能省略,即1j表示复数,而j则表示Python程序中的一个变量。3.1数字类型复数类型z=1.14e-4+3.6e+76j(实部和虚部?)对于复数z,可以用z.real获得实数部分,z.imag获得虚数部分。>>>z=1.14e-4+3.6e+76j>>>z.real0.000114>>>
z.imag3.6e+763.1数字类型复数类型操作符描述x+yx与y之和x-yx与y之差x*yx与y之积x/yx与y之商,(10/3=3.3333333333333335)x//yx与y之整数商,即:不大于x与y之商的最大整数10//3=3x%yx与y之商的余数,也称为模运算10%3=1-xx的负值,即:x*(-1)+xx本身x**yx的y次幂,即:xy9个基本的数值运算操作符3.1数字类型操作符描述x+=yx=x+yx-=yx与y之差,x=x-yx*=yx与y之积,x=x*yx/=yx与y之商,x=x/yx//=yx与y之整数商,x=x//yx%=yx与y之商的余数,也称为模运算,x=x%yx**=yx的y次幂,即:xy增强赋值操作符简化了代码。3.1数字类型二元增强运算操作符三种类型存在一种逐渐“扩展”的关系:
整数->浮点数->复数(整数是浮点数特例,浮点数是复数特例)不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型。
123+4.0=127.0(整数+浮点数=浮点数)3.1数字类型三种类型的混合运算数字类型之间相互运算所生成的结果是“更宽”的类型,基本规则是:整数之间运算,如果数学意义上的结果是小数,结果是浮点数;整数之间运算,如果数学意义上的结果是整数,结果是整数;整数和浮点数混合运算,输出结果是浮点数;整数或浮点数与复数运算,输出结果是复数。3.1数字类型三种类型的混合运算函数描述abs(x)x的绝对值
abs(-8.01)=8.01divmod(x,y)(x//y,x%y),输出为二元组形式(也称为元组类型),divmod(10,3)=3,1pow(x,y[,z])幂余:(x**y)%z,[..]表示该参数可以省略,即:pow(x,y),它与x**y相同,pow(2,9,10)=2round(x[,ndigits])对x四舍五入,保留ndigits位小数。round(x)返回四舍五入的整数值round(-9.4531)=-9,round(-9.4531,2)=-9.45max(x1,x2,…,xn)x1,x2,…,xn的最大值,n没有限定min(x1,x2,…,xn)x1,x2,…,xn的最小值,n没有限定3.1数字类型Python内置数值运算函数函数描述int(x)将x转换为整数,舍弃小数部分,x可以是浮点数或字符串,int(100.65)=100,int("100")=100float(x)将x转换为浮点数,x可以是整数或字符串,float(10)=10.0,float("10")=10.0,float("10.01")=10.01complex(re[,im])生成一个复数,实部为re,虚部为im,re可以是整数、浮点数,im可以是整数或浮点数但不能为字符串,complex(4)=4+0J数值运算操作符可以隐式地转换输出结果的数字类型;例如,两个整数采用运算符“/”的除法将可能输出浮点数结果。通过内置的数字类型转换函数可以显式地在数字类型之间进行转换。
3.1数字类型数字类型的转换函数type(x):
返回x的类型,适用于所有类型的判断。>>>
type(100)<class'int'>>>>
type(50.0)<class'float'>>>>
type(80+0j)<class'complex'>>>>
z=20-1j>>>
type(z)<class'complex'>3.1数字类型数字类型的判断3.1数字类型3.2math库3.5time库3.3字符串类型03python基本数据类型目录第127页3.4字符串类型格式化控制math库是Python提供的内置数学类函数库;math库不支持复数类型;math库一共提供了4个数学常数和44个函数;44个函数共分为4类,包括:16个数值表示函数、8个幂对数函数、16个三角对数函数和4个高等特殊函数。3.2math库第一种方法:
importmath
对math库中函数采用math.<b>()形式使用第二种方法:frommathimport<函数名>对math库中函数可以直接采用<函数名>()形式使用>>>importmath>>>math.ceil(10.2)11>>>frommathimportceil>>>ceil(10.2)11>>>frommathimport*>>>ceil(10.2)113.2math库math库引用常数数学表示描述math.pi
π圆周率,值为3.141592653589793math.ee自然对数,值为2.718281828459045math.infꝏ正无穷大,负无穷大为-math.infmath.nan
非浮点数标记,NaN(NotaNumber)3.2math库math库包含4个常用常数math库包括16个数值表示函数函数数学表示描述math.fabs(x)返回x的绝对值math.fmod(x,y)x%y返回x与y的模math.fsum([x,y,…])x+y+…浮点数精确求和math.ceil(x)向上取整,返回不小于x的最小整数math.floor(x)向下取证,返回不大于x的最大整数math.factorial(x)x!返回x的阶乘,如果x是小数或负数,返回ValueErrormath.gcd(a,b)
返回a与b的最大公约数math.frexp(x)x=m*2e返回(m,e),当x=0,返回(0.0,0)math.ldexp(x,i)x*2i返回x*2i运算值,math.frepx(x)函数的反运算math.modf(x)
返回x的小数和整数部分math.trunc(x)
返回x的整数部分math.copysign(x,y)用数值y的正负号替换数值x的正负号math.isclose(a,b)
比较a和b的相似性,返回True或Falsemath.isfinite(x)
当x为无穷大,返回True;否则,返回Falsemath.isinf(x)
当x为正数或负数无穷大,返回True;否则,返回Falsemath.isnan(x)
当x是NaN,返回True;否则,返回False3.2math库函数数学表示描述math.pow(x,y)xy返回x的y次幂math.exp(x)ex返回e的x次幂,e是自然对数
math.expm1(x)ex-1返回e的x次幂减1math.sqrt(x)返回x的平方根math.log(x[,base])logbasex返回x的对数值,只输入x时,返回自然对数,即lnxmath.log1p(x)ln(1+x)返回1+x的自然对数值math.log2(x)logx返回x的2对数math.log10(x)log10x返回x的10对数值3.2math库math库包括8个幂对数函数函数数学表示描述math.degrees(x)
角度x的弧度值转角度值math.radians(x)
角度x的角度值转弧度值math.hypot(x,y)返回(x,y)坐标到原点(0,0)的距离math.sin(x)sinx返回x的正弦函数值,x是弧度值math.cos(x)cosx返回x的余弦函数值,x是弧度值math.tan(x)tanx返回x的正切函数值,x是弧度值math.asin(x)arcsinx返回x的反正弦函数值,x是弧度值math.acos(x)arccosx返回x的反余弦函数值,x是弧度值
math.atan(x)arctanx返回x的反正切函数值,x是弧度值math.atan2(y,x)arctany/x返回y/x的反正切函数值,x是弧度值math.sinh(x)sinhx返回x的双曲正弦函数值math.cosh(x)coshx返回x的双曲余弦函数值math.tanh(x)tanhx返回x的双曲正切函数值math.asinh(x)arcsinhx返回x的反双曲正弦函数值math.acosh(x)arccoshx返回x的反双曲余弦函数值math.atanh(x)arctanhx返回x的反双曲正切函数值3.2math库math库包括16个三角运算函数函数数学表示描述math.erf(x)高斯误差函数,应用于概率论、统计学等领域math.erfc(x)余补高斯误差函数,math.erfc(x)=1-math.erf(x)math.gamma(x)伽玛(Gamma)函数,也叫欧拉第二积分函数math.lgamma(x)ln(gamma(x))伽玛函数的自然对数3.2math库math库包括4个高等特殊
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电器分销合同协议书范本
- 策划赞助合作协议书范本
- 破坏房屋赔偿协议书范本
- 电梯轿厢清洁协议合同书
- 监控质保与售后合同范本
- 驾校学员培训合同协议书
- 项目工程挂靠协议书范本
- 环保投资股东协议书模板
- 煤矿合同续签协议书模板
- 权利质押反担保合同范本
- 外研版八年级上册英语期末复习:阅读理解 刷题练习题30篇(含答案解析)
- 退休延期留用岗位协议书
- 生物安全记录表
- DB34T 1708-2020 电站堵阀检验规程
- 《幼儿园保育教育质量评估指南》引领下的园本教研转向与新生态
- 四年级数学(小数加减运算)计算题专项练习与答案汇编
- 《老年护理学》考试复习题库(含答案)
- 第1章有理数单元同步练习题 2024-2025学年华东师大版数学七年级上册
- GB/T 29239-2024移动通信设备节能参数和测试方法基站
- 职业技术学校《服装工艺基础》课程标准
- 《Python编程案例教程》全套教学课件
评论
0/150
提交评论