计算与人工智能概论(第2版)(微课版)课件 第1-5章 计算与人工智能概述 -算法设计_第1页
计算与人工智能概论(第2版)(微课版)课件 第1-5章 计算与人工智能概述 -算法设计_第2页
计算与人工智能概论(第2版)(微课版)课件 第1-5章 计算与人工智能概述 -算法设计_第3页
计算与人工智能概论(第2版)(微课版)课件 第1-5章 计算与人工智能概述 -算法设计_第4页
计算与人工智能概论(第2版)(微课版)课件 第1-5章 计算与人工智能概述 -算法设计_第5页
已阅读5页,还剩360页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算与人工智能概论第1章计算与人工智能概述

计算的概念1PART1.1.1什么是计算什么是计算?在计算机科学领域,计算是根据设定的规则将一串编码转换成另一串编码的过程。例如:加法问题,输入一对数值,输出是该对数值的和。排序问题,排序计算对每个输入表都赋予一个输出表,而输出表的数据项与输入表一样,只是输出表的数据项是按照升序或降序排列的。在数学领域,计算是抽象数学思想在具体数据上的应用,例如用数字进行加、减、乘、除的运算。1.1.1什么是计算什么是计算?在计算机科学领域,计算是根据设定的规则将一串编码转换成另一串编码的过程。例如:加法问题,输入一对数值,输出是该对数值的和。排序问题,排序计算对每个输入表都赋予一个输出表,而输出表的数据项与输入表一样,只是输出表的数据项是按照升序或降序排列的。在数学领域,计算是抽象数学思想在具体数据上的应用,例如用数字进行加、减、乘、除的运算。1.1.1什么是计算计算的历史1.1.1什么是计算可计算问题计算模型之一:图灵机(Turingmachine)阿兰·麦席森·图灵于1936年在其发表的论文《论可计算数及其在判定问题中的应用》中,针对可计算边界问题提出了一种抽象的计算模型——图灵机图灵将逻辑中的任意命题用图灵机来表示和计算,并按照规则推导出结论,其结果是——可计算函数等价子图灵机能计算的函数图灵机的提出证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构,这为计算机的诞生和发展提供了理论基础可计算边界问题:哪些问题是可计算的,哪些问题是不可计算的?求解思路:为计算建立一个数学模型,称之为计算模型,然后证明,凡是这个计算模型能够解决的问题,就是可计算的问题。1.1.2图灵机基本原理图灵机的基本原理是用机器来模拟人们用纸笔进行数学运算的过程。图灵机将一个无限长的带子作为无限存储,它有一个读写头,能在带子上读、写和左右移动。图灵机开始运作时,带子上只有输入串,其他地方都是空白,如果需要保存信息,则其可以将相关信息写在带子上。为了读取已经写下的信息,它可以将读写头往回移动到这个信息所在的位置。机器不停地计算,直到产生输出为止。1.1.2图灵机图灵机执行计算的具体案例利用图灵机执行“1+2=3”的计算。先定义读头读到“+”之后,依次移动读头两次并读取格子中的数据;接着读头进行计算,最后把计算结果写入第二个数据的下一个格子里,1.1.3什么是计算机冯·诺依曼体系结构输入设备输出设备程序运行1.1.3什么是计算机计算机系统:硬件层+操作系统层+应用软件层硬件系统软件操作系统应用软件工具软件语言处理系统数据库管理系统政务软件娱乐软件学习软件1.1.3什么是计算机计算机硬件传统“计算机器”多样化的“计算机器”,各种设备的“大脑”系统在探索最短路径的过程中,首先需要从键盘输入机器人所处环境的地图,然后由操作系统将地图数据传送到内存,由中央处理器对数据进行运算并获得结果,最后在显示器上输出寻找到的最短路径。1.1.3什么是计算机计算机硬件中央处理器是计算机的核心硬件,它往往以处理器芯片的形式存在。在现实生活中,各类处理器芯片无处不在,多样化的计算机控制着各种机械设备运行。交通中的汽车、平衡车等,日常生活中的冰箱、洗衣机等智能家居设备,都与处理器芯片紧密相关。1.1.3什么是计算机计算机软件硬件有形,而软件无形。计算机软件多种多样。它可以是计算机系统中的各类程序,也可以是用户与硬件之间的接口程序,还可以是运行在硬件上的各种程序的总称智能终端应用软件软件供应商网上商城商品供应商1.1.3什么是计算机计算机是什么?认知世界的工具各种机器的大脑各种软件的载体创建虚拟世界的工具计算的工具1.1.4算法、计算机语言与程序算法、计算机语言与程序之间的关系1.1.4算法、计算机语言与程序高级语言源程序及其编译过程示意-以智能机器人寻路计算两点间距离为例求智能机器人在环境中行走的最短路径时,需要重复不断地求出当前位置与下一位置之间的距离。假设已知机器人已经行走的距离为2cm,机器人还需要往前走4cm,那么机器人总共需要行走的路径长度为多少呢?算法、计算机语言与程序之间的关系1.1.4算法、计算机语言与程序从二进制机器语言到计算机语言计算机语言的发展1.1.4算法、计算机语言与程序问题求解策略与算法用两种不同的算法解决求解机器人行走的最短距路径问题针对最短距路径求解问题,我们可以将其抽象为一个组合优化问题,即:机器人从起点走到终点的过程中,有n个节点需要访问,按怎样的次序访问,才能使机器人访问路径的“权值和”最小?遍历算法基本思想:利用遍历算法求解最短距路径时,可以把复杂的路径分解求解,把可能短的每一条路径通过穷举法列举出来,再比较得出最短距路径,该最短距路径即为问题的解。时间复杂性:O(n!)。贪心算法基本思想:利用贪心算法求解最短距路径时,从某一个节点开始,每次选择一个节点,直到所有节点都被选完。时间复杂性:多项式量级O(n3)。贪心算法牺牲了结果的精度(即求得的不一定是最优解),但换来了时间上可观的节约,如将算法复杂度直接降到多项式量级O(n3)。1.1.4算法、计算机语言与程序问题求解策略与算法用两种不同的算法解决求解机器人行走的最短距路径问题遍历算法流程图贪心算法流程图什么是计算思维?2PART1.2.1计算思维的概念计算思维的概念周以真教授在美国计算机权威期刊《CommunicationsoftheACM》杂志上给出,并定义的计算思维(ComputationalThinking):计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维教学改革宣言2013年2006年教育部高等学校大学计算机课程教学指导委员会发表旨在大力推进以计算思维为切入点的计算机教学改革宣言。教育与科学思维;计算机教育与计算思维;人才培养与计算思维教学改革;构建多方位、立体化人才培养平台。CMU计算机系主任/学术事务副校长NSF信息学部主任微软研究院副总裁哥伦比亚大学数据科学研究院主任1.2.1计算思维的概念计算思维的概念计算思维是人类应具备的第三种思维理论思维:假设/预设定义/性质/定理证明.---推理和演绎实验思维:实验观察发现、推断与总结.---观察与归纳计算思维:设计,构造与计算.---设计与构造计算思维关注的是人类思维中有关可行性、可构造性和可评价性的部分当前环境下,理论与实验手段在面临大规模数据的情况下,不可避免地要用计算手段来辅助进行。1.2.2问题求解方法Google计算思维计算思维(CT)是一个有着诸多特点和要求的问题解决过程。可用于解决人文科学、数学和科学等各种学科的问题。不但能了解各学科之间的关联,同时也能够体会到课外生活与课堂内的知识之间的联系。分解:把数据、过程或问题分解成更小的、易于管理的部分。模式识别:观察数据的模式、趋势和规律。抽象:识别模式形成背后的一般原理。算法设计:为解决某一类问题撰写一系列详细步骤1.2.2问题求解方法计算思维与计算机科学的区别1.2.2问题求解方法计算思维案例1:分解分解:分解就是把大问题拆解成小问题,把复杂问题拆解成简单问题,把新问题拆分成老问题。对于一块大蛋糕,如果不切开,吃起来是非常困难的。使用工具把它分成一小块一小块来吃,一小块也不可能一次吃完,还要一口一口吃。1.2.2问题求解方法计算思维案例2:模式识别模式识别:寻找问题内或者子问题之间的模式、规律或者趋势。简单来说,就是找规律。一个苹果的价格是3元,3个苹果是9元,即单价乘上数量,现在知道一个梨子是4元,5个梨子多少钱?模式:单价*数量=总价1.2.2问题求解方法计算思维案例3:模式归纳模式发掘就是探索学科案例中蕴含的一些模式,并形成一套您独有的、借助模式识别方法进行问题研究的流程。1.2.2问题求解方法计算思维案例4:抽象抽象:指事物相关和重要的信息,它涉及从无关细节中分离出核心信息。抽象是计算思维的核心。1.2.2问题求解方法计算思维案例5:算法设计算法设计:完成某项任务的一系列指令,即解决问题的方案(步骤)。步骤中又包含分解,抽象,及模式识别,它就像一条线,串起计算思维在各个领域的应用。例如火星机器人着陆后,如何在无人控制情况下,实现自动寻路呢?1分解:在控制火星机器人翻越前面障碍的过程当中,机器人要左右移动,可以把它分解成左移或者是右移的动作。2模式:左移的模式与右移类似,左移设计好了,直接运用到右移即可。3抽象:机器人与障碍物的处理可以将机器人抽象成多边形,通过计算多边形之间是否重叠来判断其是否撞到障碍物导致游戏失败。4算法:实现程序,依次完成角色导入(即背景,、火星机器人、障碍图标等)、设定机器人初始位置、控制机器人上下移动、背景移动,设计碰撞检测算法等。1.2.3算法-计算系统的灵魂算法、数据和计算能力是人工智能的三大基石,其中算法是非常重要的一个部分。好的算法能节约很多资源,甚至能够完成一些不可能完成的任务。在任何应用领域,精心设计的算法都是解决大型问题最有效的方法。人工智能机器学习算法包括包括监督学习、无监督学习、半监督学习,强化学习、深度学习、迁移学习、强化学习等。人工智能机器学习算法分类人工智能之机器学习算法探索人工智能3PART1.3.1人工智能概述人工智能(ArtificialIntelligence,AI)是指由人制造出来的系统所表现出的智能,是计算机科学的重要分支,旨在通过模拟人类智能的思维、学习和决策过程,使机器能够执行需要人类智力才能完成的任务。弱人工智能专注于解决单一领域或特定任务的智能系统,其能力边界受预设规则或训练数据的限制。例如,人脸识别、智能机器人、语音识别等。强人工智能具备与人类相当的通用智能,能够自主学习、跨领域推理并适应未知环境,目前强人工智能仍处于理论探索阶段,尚未实现技术突破。目前的大语言模型仍属于弱人工智能。什么是人工智能1.3.2智能移动机器人路径规划智能移动机器人路径规划路径规划环境示意图本质智能移动机器人路径规划是一个集环境感知、动态决策与规划、行为控制与执行等多种问题于一体的综合人工智能例子,它融合了计算机技术、自动控制、传感器技术、信息处理以及人工智能等多学科知识,是目前科学技术发展最活跃的领域之一。问题描述:让一个智能机器人从迷宫的起点S出发,自动绕过迷宫内的障碍物,并使用最少的时间走到迷宫终点E。智能机器人:包含有机身、电源、传感器、微处理器、电机及驱动等部分,智能机器人利用传感器感知检测前方、左边、右边是否有障碍物,在电机控制下可以执行直行、左转、右转等运动及避障行为。环境地图:有起点与终点,有墙,有墙与墙之间的通道,外围有边界。问题描述1.3.2智能移动机器人路径规划计算思维首先是需要将问题分解成一系列较小可管理的问题过程。智能移动机器人路径规划问题可以分解为两个子问题:子问题1

机器人对地图的“记忆”子问题2探索机器人在环境中行走时可能面对的情况以及该采取的行动

子问题1地图的构建与表示机器人对环境的记忆子问题2智能移动机器人遇到的状况机器人的行动

左边有墙,前边没有墙左边没墙左边有墙,前边也有墙智能移动机器人路径规划问题分解问题分解1.3.2智能移动机器人路径规划人(蒙上眼睛)机器人靠墙行走靠墙行走用手搜索用红外避障传感器感知双手配合用两个红外避障传感器模式识别是要观察找出问题的模式、趋势和规律。人寻路:用两只手配合并沿着墙壁探索路线的时候,我们能够在各种状况下(如拐角)很好地做出相应的判断,并顺利找到出口机器人寻路:将红外传感器嵌入机器人,作为机器人的“双臂”,用以感知检测前方、左边、右边是否有障碍物智能移动机器人寻路与人寻路相似之处模式识别1.3.2智能移动机器人路径规划模式挖掘(抽象)即探寻模式形成背后的一般原理,寻找一类问题的一般方法。地图构建将地图划分成网格,蓝色格子代表墙壁,白色格子代表路地图抽象把地图转换为数学形式,用1和0分别定义蓝色格子和白色格子机器人状态行为抽象机器人感知探测不同状态时对应执行不同动作地图构建地图抽象机器人状态行为抽象抽象1.3.2智能移动机器人路径规划算法设计即为解决某一类问题撰写一系列详细的指令。以智能移动机器人寻路左手定则的算法流程为例:检测左侧是否有墙:如果没有则左转,如果有则执行②;检测前方是否有墙;如果没有则直行,如果有则执行③;检测右侧是否有墙;如果没有则右转,如果有则左转;直到移动机器人到达目的终点,完成任务。智能移动机器人寻路(左手定则)算法设计1.3.3人工智能历史图灵测试图灵测试是区分人与人工智能设备的一个测试,测试中要求一个人和一台拥有智能的机器设备在互不相知的情况下,进行随机的提问交流,如果超过3成的测试者没有发现对方是机器设备,就代表这台设备拥有“人类智能”。聊天机器人尤金.古斯特曼清华大学语音与语言实验中心(CSLT)研发的作诗机器人“薇薇”1.3.3人工智能历史图灵测试和人工智能的关系“全部智能行为”对应的集合和“全部人类行为”集合之间有相交部分也有不同之处。全部智能行为和全部人类行为之间的交集(如猴妈妈分桃)即可通过图灵测试。猴妈妈拥有部分智能行为,可以将一堆桃子较为公平的分给3个儿子,但她并不具有全部人类行为,但我们可以说其拥有智能并可通过图灵测试。类似的机器人拥有某一项智能行为,比如自然语言处理、图像识别等,并不一定要拥有全部人类行为,但仍可通过图灵测试。因此,主流的人工智能是以解决人脑能解决的问题为目标,注重解题能力,而不在乎解题行为是否和人类相似。1.3.3人工智能历史人工智能领域关键事件时间轴1.3.4人工智能相关研究人工智能近10年“十大人工智能研究热点”人工智能涉及计算机科学、电子、自动控制、机械、心理学、伦理学、哲学和语言学等多个学科,几乎涵盖自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,它的终极目标是使机器拥有像人类一样的智力,可以替代人类实现学习、推理、思考、规划等多种功能。从应用的角度看,人工智能的研究主要集中在以下几个方面:机器人、语音识别、模式识别、自然语言处理、专家系统、计算机视觉、计算智能、自动程序设计、智能控制与智能规划等。AMiner评选出的近10年“十大人工智能研究热点”1.3.4人工智能相关研究1.3.4人工智能相关研究人工智能研究案例在航天领域,人工智能已经成为中国航天的“探路者”,例如火星探测器。“天问一号”使用了基于计算机视觉、自然语言处理、机器学习、语音识别等技术的人工智能技术。人脸检测的任务就是判断给定的图像上是否存在人脸,如果人脸存在,就给出全部人脸所处的位置及其大小。1.3.4人工智能相关研究人工智能研究案例AlphaGo的实现原理给胜率高的点分配更多的计算力任意时间算法,计算越多越精确1、选取2、展开3、评估4、倒传MCTS(蒙特卡洛树搜索)通过随机模拟走子胜率来判定形势速度很快(1ms/盘)随机性与合理性的平衡Rollout(随机模拟走子)基本算法快速模拟围棋是完全信息博弈,从理论上来说可以通过暴力搜索所有可能的对弈过程来确定最优的走法1.3.4人工智能相关研究人工智能研究案例手机中的AI人工智能发展4PART1.4.1人工智能应用领域时间18世纪末工业1.0创造了机器工厂的“蒸汽时代”20世纪初电力广泛应用蒸汽机信息物联系统1970年代初今天工业2.0将人类带入分工明确、大批量生产的流水线模式和“电气时代”工业3.0应用电子信息技术,进一步提高生产自动化水平自动化、信息化工业4.0开始应用信息物理融合系统(CPS)复杂度来临悄悄互联网时代终结正在人工智能机器人交通工具(即无人机、无人驾驶等)VR(虚拟现实)1.4.1人工智能应用领域1.4.1人工智能应用领域智能制造1.4.1人工智能应用领域智慧农业1.4.1人工智能应用领域智能教育1.4.1人工智能应用领域智慧金融1.4.1人工智能应用领域智慧医疗1.4.1人工智能应用领域智能家居1.4.2人工智能发展在当今智能化社会的发展趋势下,机器人走迷宫不仅具有一定的比赛意义,还具有广泛的实用价值。其中运用到诸如人工智能、计算方法、自动化等技术可以推广到诸如自动导航、工厂自动化、智能家居、避障机器人、火星探测机器人等行业中。1.4.2人工智能发展计算与人工智能概论第2章计算系统

计算与计算机简述2PART如何实现不同要求的计算?应用举例实现功能天文一号火星探测器环绕、着陆、巡视智慧城市城市治理高效有序,数据开放共融共享,网络空间安全清朗等智慧农业农业可视化,远程判断,远程控制等如何实现不同要求的计算?——问题分解问题1:数据采集火星探测智慧城市智慧农业获取火星表面数据(光照、沙尘、大气、温度、土壤等)获取城市的各种数据(交通、气象、社交媒体等)获取农田的各种数据(温度、湿度、光照、土壤等)如何实现不同要求的计算?——问题分解问题2:数据融合处理与分析火星探测智慧城市智慧农业计算分析火星表面数据融合处理非结构化数据,获取有用数据融合处理并分析农田各种数据数据记录学号、姓名、三门功课的成绩如何实现不同要求的计算?——问题分解问题3:数据存储火星探测智慧城市智慧农业火星车“大脑”记录各种状态(电池能量、行走路线等)城市云中心记录城市各种状态(交通状况等)农田数据中心记录农田各种状态(作物生长状况等)例11.1score=[["101","Mary",80,85,90],["102","Rose",80,90,95],["103","Mike",75,72,65],["104","Peter",65,63,58],["105","Harry",95,93,88]]#将数据存入二维列表foriinrange(5):zf=score[i][2]+score[i][3]+score[i][4]#计算总分

score[i].append(zf)#将总分加入列表,例如score[0]为["101","Mary",80,85,90,255]score=sorted(score,key=lambdak:k[5],reverse=True)#对列表按第六列排序foriinrange(5):#输出列表

print("学号{}姓名{}总分{}".format(score[i][0],score[i][1],score[i][5]))如何实现不同要求的计算?——问题分解问题4:智能决策火星探测智慧城市智慧农业火星车休眠、工作城市各机构实现网络互联、数据互通帮助农户做出正确决策如何实现不同要求的计算?——计算思维问题1:数据采集问题2:数据融合处理与分析问题3:数据存储问题4:智能决策计算环境的输入集合计算环境的固定程序计算环境的状态集合计算环境的输出结合模式分析图灵机模型问题抽象问题分解图灵机模型蚂蚁觅食:用一个无限长的纸带模拟蚂蚁行走的路径,这条纸带被分成若干个小的方格,每个方格只有黑白两种颜色来表示该方格是否有食物。蚂蚁的固定程序:黑色为食物区,蚂蚁向前一格;白色是空白区,没有食物则向后一格输入集合IN={黑色,白色};输出集合OUT={向前一格,向后一格}蚂蚁产生了循环图灵机模型score.csv文件中存储五位同学的学号、姓名和三门功课的成绩。更新蚂蚁的固定程序:蚂蚁在黑色格子,如果是饥饿状态,则吃掉食物,黑色格子变成白色格子;如果是吃饱状态,则后移一格。蚂蚁在白色格子,如果是饥饿状态,则停下来等格子变黑,;如果是吃饱状态则前移一格。输入集合IN={黑色,白色};输出集合OUT={向前一格,向后一格,吃完食物格子变白,等格子变黑};内部状态S={饥饿,吃饱}图灵机模型例11.2f1=open(“score.csv”)lb=[]#将数据存入二维列表forlineinf1:xx=line.strip().split(“,”)zf=eval(xx[2])+eval(xx[3])+eval(xx[4])#计算总分

lb.append([xx[0],xx[1],zf])lb=sorted(lb,key=lambdak:k[2],reverse=True)#对列表按第三列排序foriinrange(5):#输出列表

print("学号{}姓名{}总分{}".format(lb[i][0],lb[i][1],lb[i][2]))计算score.csv文件中每位同学的总分,降序排列并输出蚁群最优寻食路径原理1.蚂蚁在路径上释放信息素2.遇到没有走过的路口(或障碍物),就随机挑选一条路走。同时,释放信息素。3.信息素浓度与路径长度成反比。如果之后的蚂蚁再次遇到该路口(或障碍物),就选择信息浓度较高的路径。4.最优路径上的信息素浓度越来越大5.最终蚁群找到最优寻食路径输入集合IN={环境信息(路径、路口、障碍物等)};输出集合OUT={选择信息素过多的路径、在感知范围内感知食物并朝食物方向前进,随机移动};内部状态S={环境信息(蚂蚁行走对环境信息造成的改变)}图灵机逻辑结构上图灵机由四个部分组成:一个无限长的存储带,一个读写头,内部状态存储器,规则逻辑。相加结果放入寄存器“+”:根据规则把第9个和第10个方格内数字相加,结果放在寄存器中图灵机逻辑结构上图灵机由四个部分组成:一个无限长的存储带,一个读写头,内部状态存储器,规则逻辑。“S”:根据规则将前面相加的结果放置在下一格子里对应的格子,即放置在第9格格子内12冯·诺依曼体系结构相当于图灵机的读头计算机的工作原理——中央处理器例SQL语句实现计算学生的总分并排序的功能计算机工作原理——存储器计算机工作原理——输入/输出设备、总线输入/输出设备:输入设备用于向信息处理系统提供数据和控制信号。输出设备根据从信息处理系统中接收到的数据和指令执行特定任务输入设备:键盘、鼠标、扫描仪、数字相机、手柄等都是输入设备。输出设备:打印机、投影机、显示屏、扬声器等都是输出设备。总线:总线是连接在计算机各部分之间进行信息传送的一组公共传输线,它将各大部件连接成一个整体。并行计算串行计算并行计算嵌入式计算机特征通用计算机嵌入式计算机形式和类型按其体系结构、运算速度和结构规模等因素分为大、中、小型机和微型机形式多样,应用领域广泛,按应用来分组成通用处理器、标准总线和外设,软件和硬件相对独立面向应用的嵌入式微处理器,总线和外部接口多集成在处理器内部。软件和硬件紧密集成在一起开发方式开发平台和运行平台都是通用机算机采用交叉开发方式,开发平台一般是通用计算机,运行平台是嵌入式计算机设计重点高速、海量的数值计算,总线速度无线提升,存储容量无线扩大智能化控制能力,嵌入性能、控制能力的可靠性

计算执行2.2PART操作系统用户面对的计算机系统操作系统向外支持应用软件的开发和运行,向内负责管理计算机系统中各种独立的硬件,使他们可以协调工作。操作系统华为鸿蒙操作系统是我国自主研发的计算机操作系统计算机的工作流程计算机的工作流程是开发人员通过输入设备编写一段源程序(也称源文件),源程序经过编译、链接和装载进入内存,操作系统控制中央处理器对源程序进行运算,最后向用户展示结果。在这个过程中,计算机执行的语言和开发人员编写的语言是同一种语言吗?编译、链接和装载程序C语言、Java、Python等机器语言汇编语言编译过程应用程序源文件对源代码中的伪指令进行处理编译程序通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成汇编文件汇编程序将汇编文件翻译成机器语言的目标文件链接程序程序通过编译程序生成了多个目标文件,链接程序将这些目标文件以及它们所需的库函数“串”在一起,形成可执行文件。程序的链接有以下三种方式:静态链接:在程序运行之前,先将各目标文件及它们所需的库函数链接成一个完整的可执行文件,之后不再拆开。装入时动态链接:将用户源程序编译后得到的一组目标文件,在装入内存时,采用边装入边链接的方式。运行时动态链接:对某些目标文件的链接,只在程序执行中需要该模块时,才对它进行链接。装载程序在运行可执行文件时,通过装载器来解析可执行文件,并将对应的指令和数据写入内存中,CPU即可运行程序。将一个可执行文件装入内存时,可采用三种方式:绝对装入方式、可重定位装入方式和动态运行时装入方式。绝对装入方式:在编译时,如果知道程序将驻留在内存的什么位置,那么编译程序将产生绝对地址的目标代码。在装载程序时,按照可执行文件中的地址,将程序和数据写入内存。在写入内存后,不许对程序和数据的地址进行修改,程序中所使用的绝对地址,既可在编译或汇编时给出,也可由开发人员直接赋予。可重定位装入方式:根据内存当前使用情况,将可执行文件装载到内存的某个位置。动态运行时装入方式:在把可执行文件写入内存后,并不立即把可执行文件中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行。因此,写入内存后的所有地址都仍是相对地址。程序、进程和线程程序(Program)是一个静态的概念,一般对应于操作系统中的一个可执行文件,进程(Process)是执行中的程序,是一个动态的概念,是资源分配和调度的基本单位,也是操作系统结构的基础。线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。概念:程序和进程之间的关系当打开多个应用程序时,每个应用代表了一个进程,操作系统为这些进程分配CPU资源,使用户可以同时使用这些应用程序。进程和线程之间的关系进程和线程从概念上区分,进程是拥有资源的基本单位;线程是调度的基本单位,它不拥有资源(除了在运行过程中必不可少的资源,其本身基本不拥有资源)。进程调度进程调度的过程包括:1.保存处理机的现场信息。2.按某种方式选取进程。3.分派程序把处理机分配给该进程。进程队列调度模型进程调度进程调度的过程包括:1.保存处理机的现场信息。2.按某种方式选取进程(非抢占方式和抢占方式)。3.分派程序把处理机分配给该进程。如果采取非抢占方式,当把处理机分配给某个进程后,不管它要运行多长时间,都一直让它运行,直至该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才把处理机分配给其他进程。如果采取抢占方式,调度程序可根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。这样的原则主要包括优先权原则,短进程优先原则,时间片原则,具体内容如下:优先权原则:对不同的进程赋予不同的优先级,当优先级高的进程到达时,便暂停当前正在执行的进程,将处理机分配给优先级高的进程。短进程优先原则:当新到达的进程比正在执行的进程明显短时,将暂停当前进程的执行,把处理机分配给新的短进程。时间片原则:各进程按时间片轮流运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。线程调度假设CPU为3核CPU,操作系统采用抢占式的时间片原则进行线程调度。线程调度例A学校委托B软件公司开发一个学籍管理系统来管理学生的成绩,需要解决以下问题。假设线程A1,A2,B1在时间片用完后没有执行完。再次调度,进行线程切换。线程A1,A2,B1放弃CPU并被加入就绪队列尾部,线程B2,B3,B4获得CPU资源并开始执行。文件系统操作系统中负责管理和存储文件信息的软件称为文件管理系统,简称文件系统(FileSystem)。文件系统包括操作系统用于明确存储设备上文件的方法和数据结构,此处的方法即在存储设备上组织文件的方法。这里的文件泛指保存在存储设备上的所有数据,而不单单指文档。存储设备常见的是磁盘,也有基于NANDFlash的固态硬盘。文件系统信息世界数据世界未来计算机2.3PART未来计算机(a)微软,苏格兰奥克尼群岛海岸线附近水域(b)Google,芬兰,哈米纳海湾(c)腾讯,贵州省贵州新区,占地约770亩(d)Facebook,瑞典,离北极圈仅100公里各互联网公司部署服务器地址图未来计算机某校有多名学生,开设多门课程;一名学生可学习多门课程;一门课程可有多名学生学习;设计一个学生选课系统,对学生选课进行管理学生信息包括:学号、姓名、性别、籍贯等课程信息包括:课程号、课程名称、学时等学生修课的成绩计算机的未来发展方向:微型化。要利用微电子技术和超大规模集成电路技术,把计算机的体积进一步缩小。当计算机体积缩小以后,会影响它的计算速度吗?这个问题是否定的——科技的发展将使电脑芯片变得更小、传输速度更快、耗电量更少。就像我们使用的手机、iPad、智能手表,虽然体积很小,但是并不影响他们的计算速度。巨型化。这个巨型并不是指体积,而是指速度、存储量和计算机功能。如超级计算机、量子计算机、光子计算机、纳米计算机等,这类计算机将主要应用于天文、气象、地质、核技术、航天和卫星轨道计算等尖端科学技术领域,以提供计算支持。网络化。计算机的发展也离不开互联网的发展。借助网络技术可以更好地分享网上的信息,在这个动态变化的网络环境中,实现计算资源、知识资源、专家资源的共享,从而让用户享受可灵活控制的、智能的、协作式的信息服务。智能化。随着科技的发展,机器完全有可能具有模拟人的感觉、思维、情感等能力,实现“强人工智能”。但是,在发展人工智能的同时,社会需要用法律去约束人工智能,使人工智能向着积极正确的方向发展,造福于人类。未来计算机国家超级计算中心:国家超级计算中心是由国家科技部批准成立的数据计算机构,是科技部下属事业单位。截至2020年,科技部批准建立的国家超级计算中心共有八所,分别是国家超级计算天津中心、国家超级计算广州中心、国家超级计算深圳中心、国家超级计算长沙中心、国家超级计算济南中心、国家超级计算无锡中心、国家超级计算郑州中心、国家超级计算昆山中心。(a)国家超级计算长沙中心(b)国家超级计算天津中心未来计算机中国有三大超级计算机研制单位:曙光、天河、神威。天河三号超级计算机原型机在核心芯片上做到了自主、独立、创新,真正实现了“超算”的全国产。我国在这个领域已经实现了全球领先。此前中国在超级计算机领域相对于其他发达国家来说是稍逊一筹的,从1987年中国开始研发超级计算机,到现在中国已经突破了“超算”领域的核心技术封锁,中国超级计算机的更多突破未来可期。未来计算机2020年12月4日,中国量子计算机原型机“九章”问世,如图2.43所示。其算力实现全球领先,中国成为世界上第二个实现“量子优越性”的国家。量子计算原型机“九章”由中国科学技术大学潘建伟等人构建,国际学术期刊《科学》发表了这一成果,并称这是“世界上最先进的实验”和“一个重大成就”。“九章”量子计算机未来计算机随着计算机的不断发展,人类生产生活的数据和信息环境有了大幅提升,人工智能正从学术驱动转变为应用驱动,从专用智能迈向通用智能,人类社会与物理世界的二元结构正在进阶到人类社会、信息空间和物理世界的三元结构,人与人、机器与机器、人与机器的交流互动越来越频繁。而海量化的基础数据、持续提升的运算能力、不断优化的算法模型,结合多种应用场景的新应用已构成相对完整的闭环,成为推动新一代人工智能发展的三大要素Q&A谢谢!计算与人工智能概论第3章Python编程基础

python编程基础-问题求解的计算思维方法1PART3.1问题求解的计算思维方法3.1.1问题分解针对机器人投篮问题,首先,设定一个模拟篮球场的场景;然后,机器人要实现投篮百发百中,可以划分为3个子问题,如表3.1所示。第1个问题是投篮机器人对模拟篮球场的“记忆”;第2个问题是探索机器人在不同情况下投篮所得到的轨迹线,第3个问题是完成抛球的动作。3.1.2模式识别篮球运动员在球对于投篮机器人而言,可以通过计算机模拟篮球轨迹建立坐标系,先计算篮球投出后某一时间的坐标点,再循环计算篮球在空中多个坐标点的位置,最后计算不同初始条件下篮球轨迹坐标点,进而找出合适的投篮角度或篮球出手速度以实现机器人百分百投篮,如表3.2所示。

3.1.3抽象利用计算机模拟投篮过程,首先需要建立坐标系模拟机器人投篮场景,x轴代表篮球水平方向的坐标,y轴代表篮球垂直方向的坐标,如图3.1(a)所示;其次,机器人投篮轨迹线可通过在坐标系上绘制一条抛物线来模拟,如图3.1(b)所示。图3.2绘制了在不同条件下机器人投篮的篮球运动轨迹。3.1.4算法设计第1步:建立一个二维的坐标系,并计算篮球在某一时间的坐标点.第2步:在合理的范围内绘制篮球的一个坐标点,如图3.1(a)所示。第3步:在合理的范围内绘制篮球的n个坐标点,如图3.1(b)所示。第4步:绘制多次机器人投篮的篮球运动轨迹,如图3.2所示。第5步:在投篮出手速度与出手高度一定的条件下,找出合适的角度,解决机器人百分百投篮问题,如图3.3所示。

python编程基础-基本语法2PART3.2编程的基本概念3.2.1程序=算法+数据结构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。程序设计中常用的数据结构包括数组(Array)、栈(Stack)、队列(Queue)、链表(LinkedList)、树(Tree)和图(Graph)等。Python常用的数据结构包括列表、元组、字典与集合等。算法是为解决问题而精心设计的计算步骤和方法。它代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。3.2.2

Python简介Python安装Python的两个主要版本2.7和3.8如何安装?Anaconda

Anaconda

是一个包含数据科学常用包的Python发行版本。它基于conda——一个包和环境管理器——衍生而来。你将使用conda创建环境,以便分隔使用不同Python版本和不同程序包的项目。你还将使用它在环境中安装、卸载和更新包。通过使用Anaconda,处理数据的过程将更加愉快。下载地址:/distribution/

在哪写代码?SpyderIDLE/Jupter/pycharmVisualstudiocode113Spyder的使用:/tools/spyder开始→所有程序→Anaconda3→Spyder①

新建②编程③

运行(和保存)④运行结果1143.2.3第一个python程序--计算一个坐标点的值并输出根据公式计算坐标点math库是Python提供的内置数学类函数库math库不支持复数类型,一共提供了4个数学常数和44个函数。第一种:importmath对math库中函数采用math.<b>()形式使用第二种,frommathimport<函数名>对math库中函数可以直接采用<函数名>()形式使用第三种,frommathimport*对math库中函数可以直接使用1、import导入math库3.2.4

Python基本语法2、print()函数3、变量的赋值与变量类型name='千寻'

name='马冲’print(name)变量:其值可以改变的量。<变量>=<表达式>命名原则:见名知义尽量不要给变量命名为a、b、c等英文字母,类似于名字=张小明,小红,无法知义变量类型-字符型字符串:英文string,简写str字符串,顾名思义,就是由一个个字符串起来的组合,字符可以是一个数字、一个字母、一个文字,甚至是一个符号。字符串可以表达现实世界里的词、语句、表达式等

整数类型:整数英文为integer,简写做int。Python的整数和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字。整数类型:二进制:0b101、0B101,八进制:0o123,0O234,十六进制:0x123,0X234浮点数型:浮点数英文为float计算机里浮点数的运算是不精确的,会有四舍五入的误差浮点数类型:普通表示法:1.23科学及算法:复数类型:z=a+bjz.real实部,z.imag虚部数据变量类型-数值类型4、运算符与表达式---怎么计算表达式?算术运算符:a=10,b=21表达式的表示:求一元二次方程的根y=ax2+bx+c?运算符描述实例+加-两个对象相加a+b输出结果31-减-得到负数或是一个数减去另一个数a-b输出结果-11*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果210/除-x除以yb/a输出结果2.1%取模-返回除法的余数b%a输出结果1**幂-返回x的y次幂a**b为10的21次方//取整除-向下取接近商的整数9//2=4-9//2=-5print((60-4)**2-55/5)的计算顺序如何?print(0.55+0.3)的结果是???试一试:5、input()函数<变量>=input(<提示性文字>)

获得用户输入之前,input()函数可以包含一些提示性文字,但不管用户输入字符或数字,input()函数统一按照字符串类型返回结果122input函数作用:从键盘读入一个字符串试一试:请从键盘给h,v0,g,

θ赋值完成:h,v0,g,θ=1.9,14,9.8,40name=input('请输入你的姓名:')print('你的名字叫:',name)1233.2.5计算并绘制坐标点案例拓展训练python编程基础-模块化编程函数3PART3.3.1常用的内置函数内置函数的使用

函数名()形式参数,即在函数体中所使用的变量函数结果的输出并返回函数体数学上的函数只是一个符号表达,而计算机程序中的函数则是一段可以执行的程序函数调用,实参10传给形参C3.3.2自定义计算坐标的函数自定义函数:def函数名():语句1……语句nreturn语句函数体自定义计算坐标函数3.3.3调用函数绘制坐标点3.3.4函数的参数1.形参与实参函数的参数有形式参数与实隙地参数。定义函数时函数头中所包含的参数为形式参数(简称形参),而调用函数时使用的参数是实际参数(简称实参)。在定义函数时,形参类似于占位符,其不是拥有具体值的变量。只有在调用函数时,调用者将实参的值传递给形参,形参才拥有具体值。一般情况下,形参与实参的数量要相同,对应位置要一致,这样才能正确地传递参数。Python对象按内容来说可分为不可变与可变对象,不可变对象包括数字、字符串和元组,而可变对象包括列表与字典。Python参数传递采用的是“传对象引用”方式,即传递参数时,如果参数是可变对象,则函数内部的修改会影响到函数外部的实参;如果参数是不可变对象,则函数内部的修改不会影响到函数外部的实参。2.默认参数、位置参数、关键字参数和可变参数importnumpyasnpdefsolve(a,b,c=5):d=np.sqrt(b**2-4*a*c)x1,x2=(-b+d)/(2*a),(-b-d)/(2*a)returnx1,x2a,b,c=1,0,-1x1,x2=solve(a,b)#默认第三个参数为5 print('x1=%f,x2=%f'%(x1,x2))默认参数:放在所有参数的后面关键字参数

importnumpyasnpdefsolve(a,b,c=5):d=np.sqrt(b**2-4*a*c)x1,x2=(-b+d)/(2*a),(-b-d)/(2*a)returnx1,x2#a,b,c=1,0,-1x1,x2=solve(c=-1,b=0,a=1)#关键字参数

print('x1=%f,x2=%f'%(x1,x2))默认参数:放在所有参数的后面在定义函数时,在参数前面加*号,表示可以接收多个位置参数并把它们放到一个元组中。可选参数和可变参数

在形参前面加两个星号**,表示可以接受多个关键参数并把它们放入一个字典中。3.3.5函数返回函数返回是指返回函数的结果。与其他程序设计语言不同,Python支持函数返回0个到多个值。return返回多个值则以元组的方式保存案例拓展训练python编程基础-分支4PART1383.4.1单分支——if语句if分支1393.4.2二分支——if-else语句if-else分支若满足条件表达式则执行语句1~语句n,否则执行语句n+1~语句n+mif条件表达式:语句1……语句nelse:语句n+1……语句n+m注意:if.....else.......所代表的条件是互斥的else部分有时可以省略140比较运算符(最常用),结果为True

或False>

:大于,如x>0<

:小于,如x<0>=

:大于等于,如x>=0<=

:小于等于,如x<=0==

:等于,如x==0!=

:不等于,如x!=0141条件运算符的使用,结果为True

或Falseand:与(而且)例:"a>-1anda<1"表示"a>-1且a<1"注:"a>-1anda<1"也可写成"-1<a<1"or:或(或者)例:"a>1ora<-1"表示"a>1或a<-1"not:非(不是)例:"nota>1"表示"a不大于1"142计算x的绝对值习题流程图x>0?a=x是a=-x否输入x开始打印a结束x=eval(input('x='))ifx>0:a=xelse:a=-xprint('|x|=',a)3.4.3多分支——if-elif-else语句144例:

分段函数:

x=eval(input(‘x='))ifx<0:y=-1elifx==0:y=0else:y=1print(y)

规则嵌套例:求三个数的最大值的#求三个数的最大值1x,y,z=eval(input("enter3data:"))ifx>y:max_2=xelse:max_2=yifmax_2>z:max_3=max_2else:max_3=zprint(max_3)

#求三个数的最大值2:换一种方式x,y,z=eval(input("enter3data:"))max_2=xifx>yelsey#分支的紧凑格式max_3=max_2ifmax_2>zelsezprint(max_3)x=eval(input(‘x='))ifx<=0:ifx<0:

y=-1else:y=0else:y=1print(y)不规则嵌套3.4.4智能型计算坐标函数3.4.5在合理范围内绘制坐标点案例拓展训练编程基础-循环5PART1503.5.1while循环while循环(条件循环)重复执行语句1~语句n,直到条件表达式不再成立while条件表达式:语句1……语句n条件表达式与if中的规定相同循环体151例:依次打印1~100,最后打印'end'i=1whilei<=100:print(i)i=i+1print('end')12……100end152计算1+3+5+…+997+999习题=250000i=1s=0whilei<1000:ifi%2==1:s=s+ii=i+1print(s)i=1s=0whilei<1000:s=s+ii=i+2print(s)或3.5.2在合理范围内绘制多个坐标点循环中的(break,continue,else,pass)1、break/continue语句

if...break/continue的意思是如果满足了某一个条件,就提前结束/(本次)循环。#请运行代码体验效果foriinrange(5):print('明日复明日')ifi==3:#当i等于3的时候触发

break#结束循环#请运行代码体验效果i=0whilei<5:print('明日复明日')i=i+1ifi==3:#当i等于3的时候触发

break#结束循环1553.5.3循环嵌套循环嵌套(二重循环,多重循环)

1563.5.4在合理范围内绘制多条轨迹线(二重循环的函数调用方式)案例拓展训练案例拓展训练Q&A谢谢!计算与人工智能概论第4章python编程进阶

python编程进阶-列表1PART序列数据--列表列表(list)和元组(tuple)按顺序保存元素,通过索引(index)来访问所有的元素,它们的区别在于:列表是可以修改的,而元组是不可修改的。list1=[1,2,"C语言","Python","Java"]tuple1=('Python','Java','C++','JavaScript')#元组是不可变数据类型

4.1.1用列表存储多条轨迹线的坐标点1654.1.2列表的基本概念列表(List)包含若干元素,用[]表示元素是按序编号的(从[0~n-1],或者[-n~-1])利用编号可对元素进行增删改查等操作例如:Ls=["Python",1,3.0,[2,3,4],(1,2,3)]表示有5个元素的列表,元素可以是字符串,数字,列表和元组,可以通过下标对列表元素进行访问。167for循环(遍历循环)重复执行语句1~语句n,直到遍历结束退出循环for循环变量in遍历对象:语句1……语句n循环体168例:for与range()函数的应用

例:for循环遍历列表4.1.3列表的基本操作假设:ls=['helloword’]假设:lst=[101,25,38,29]170列表推导式

L=[包含x的表达式forxin序列if条件表达式]列表推导式在逻辑上等价于一个循环语句,只是形式上更简洁。示例如下。lst1=[x*xforxinrange(20)ifx%2==1]上述语句等价于如下程序。lst1=[]forxinrange(20):ifx%2==1:lst1.append(x*x)列表、range()等用函数调用列表实现绘制多条线

4.1.4用列表实现绘制多条线列表案例拓展训练

python编程进阶-字典2PART字典{dict}&&集合set集合(set)是一个无序的不重复元素序列。可以使用大括号

{}

或者

set()

函数创建集合例如:basket

=

{'apple',

'orange',

'apple',

'pear',

'orange',

'banana’}print(basket)#{‘orange’,

‘banana’,

‘pear’,

‘apple’}去掉重复元素关于集合的内容可参阅:/python3/python3-set.html

字典是另一种可变映射数据容器,可存储任意类型对象。键值对的方式存放在一对{}中,每个键值

key:value

,用逗号(,)分割。例如:dict1={'name':'HunanUniversity','url':'/','create_time':1903}关于字典的内容可参阅:/python3/python3-dictionary.html

在myMath.py中增加函数calCoordinateSmart3(g,h,v0,thetadegree,t0,t1),产生指定时间内的所有正常的坐标点。4.2.1用字典存储多条轨迹线的坐标点字典:{键值对(key-value)}

4.2.2字典的基本概念字典为无序可变序列,键为索引关键字,具有唯一性,值可重复。键必须是不可变的,如字符串,数字和元组;值可取任何数据类型。#访问格式:dictname[key]tup=(['two',26],['one',88],['three',100],['four',-59])#元组dic=dict(tup)#转换成字典print(dic['one'])#键存在print(dic['five'])#键不存在,报错#get()方法访问#访问格式:dictname.get(key[,default])a=dict(two=0.65,one=88,three=100,four=-59)#字符键不需要加引号print(a.get('one'))#88,当键不存在时返回Nonea=dict(two=0.65,one=88,three=100,four=-59)print(a.get('five','该键不存在'))#当键不存在时返回'该键不存在

'4.2.3字典元素的访问通过字典方法访问字典的键值对>>>dir(dict)['clear','copy','fromkeys','get','items','keys','pop','popitem','setdefault','update','values']keys()方法用于返回字典中的所有键(key)values()方法用于返回字典中所有键对应的值(value)items()用于返回字典中所有的键值对(key-value)scores={'数学':95,'语文':89,'英语':90}print(scores.keys())#dict_keys(['数学','语文','英语'])print(scores.values())#dict_values([95,89,90])print(scores.items())#dict_items([('数学',95),('语文',89),('英语',90)])

4.2.4字典的基本操作#和列表、元组一样,删除字典也可以使用del关键字a=dict(two=0.65,one=88,three=100,four=-59)print(a)delaprint(a)#使用del语句删除键值对a={'数学':95,'语文':89,'英语':90}dela['语文']dela['数学']print(a)#判断字典里是否有指定的键值对a={'数学':95,'语文':89,'英语':90}#判断a中是否包含名为'数学'的keyprint('数学'ina)#True#a是否包含名为'物理'的keyprint('物理'ina)#False#添加格式:dictname[key]=valuea={'数学':95}#添加新键值对a['语文']=89print(a)#再次添加新键值对a['英语']=90print(a)#修改键对应的值,键不能被修改a={'数学':95,'语文':89,'英语':90}print(a)a['语文']=100print(a)4.2.5字典的嵌套#1字典嵌套列表class1={'names':['张三','李四','王五'],'scores':[95,98,75]}print(class1['names’][2])print(class1['scores'][1])#2列表中嵌套字典class1=[{'name':'张三','score':95},{'name':'李四','score':98},{'name':'王五','score':75}]print(class1[0])print(class1[2]['name'])#3字典嵌套字典class3={"001":{'name':'张三','score':95},"002":{'name':'李四','score':98},"003":{'name':'王五','score':75}}print(class3['001’]) #{'name':'张三','score':95}print(class3["001"]["name"])#张三print(class3["001"]["score"])#95

4.2.6用字典实现绘制多条线字典案例拓展训练

python编程进阶-文件3PART4.3.1文件的基本概念1、文件的表示

文件名由主文件名和扩展名两部分组成,例如:文件myMath.py,文件名为myMath,扩展名为py

2.文件与目录

相对路径与绝对路径#绝对路径演示假设文件myMath.py保存在C盘User目录的子目录hzh下,则包含绝对路径下文件名由磁盘驱动器、目录层次和文件名三部分组成,即C:\User\hzh\myMath.py,在Python中表示为:“C:\\User\\hzh\\myMath.py"或“C:/User/hzh/myMath.py”#相对路径演示假设文件myMath.py保存在C盘User目录的子目录hzh下,源文件保存在C盘User目录下,则包含相对路径的文件名为hzh\myMath.py,在Python中表示为:“hzh\\myMath.py”或“hzh/myMath.py”3.文件编码#文本与UTF-8编码之间的转换示例s1='你好吗'print(s1.encode('utf-8'))#输出为b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0's2=s1.encode('utf-8')print(s2.decode())#输出为你好吗4.文件类型按照文件的编码方式,可以将文件分为文本文件(TextFile)和二进制文件(BinaryFile)。

文本文件是基于字符编码的文件,保存的是文本数据,这些文本采用一定的编码。在用记事本等软件保存文本文件时,通常需要指定编码方式(或用默认编码方式)。汉字文件有时打开是乱码,往往就是因为编码方式选择不当。文本文件由字符组成,可以看成是一个很长的字符串。二进制文件是基于值编码的文件,存储的是二进制数据,也就是说,数据按照其实际占用的字节数来存储的。二进制文件不是以字符为单位的,不能看成字符串,而是被当作特定格式的字节流来处理的。4.3.2常用文件操作打开文本文件:f

=open(file,mode='r',encoding=None)file:表示要打开的文件路径(相对或者绝对路径);mode:表示文件打开模式;encoding:用于设置编码格式,一般使用utf-8;在Python中,为了防止文件打开后忘记关闭,提供了with语句来使用文件:withopen(file,mode)as<文件对象名>:

语句块关闭文本文件:f=close()打开文本文件:mode参数的取值如下表所示:文件操作-读和写文件的写入Python提供了2种方法写入文件。第一种方法:<文件对象名>.write([str])write()方法用于向文件中写入一个字符串或字节流。第二种方法:<文件对象名>.writelines([str])writelines()方法用于向文件中写入一个序列的字符串,如元素为字符串的列表。换行需要自己添加换行符“\n”。文件的读写操作文件的读写操作例1:建立文本文件test1.txt,并用write()和read()方式读写取文件并输出注意:文件的相对路径与绝对路径的概念与演示

文件的打开方式a+,w+,w,r,r+test1.txt文件内容:

test1.txt文件内容:文件读的写操作

例2:假设要实现统计score.txt文件中这5个学生的作业总得分,写入一个totalScore.txt文件中,并将统计后的总成绩在屏幕上显示。设计思路:1、打开score.txt文件,并读出2、求每个学生的总成绩3、写入totalScore.txt中4、读出totalScore.txt在屏幕上显示4.3.3用文件存储多条轨迹线的坐标点

1、JSON数据(数组和对象数据)python数据(列表与字典)其中对象数据用大括号表示,由键值对组成,每个键值对用逗号隔开。其中key必须为字符串且是双引号,value可以是多种数据类型。例如:{"name":"Jack","address":"HuNanUniversity","scores":[75,85,90,60]}2、两种数据之间的转换可通过函数来实现python数据转成json字符串:json_data=json.dumps(python_data)json字符串转成python对象:python_data=json.loads(json_data)

#Python数据与JSON数据的转换importjson #先导入json模块Dict={'name':'Jack','address':'HuNanUniversity','scores':[75,85,90,60]}print(Dict) #显示字典数据Json_Dict=json.dumps(Dict) #转换成json数据print(Json_Dict) #显示json数据Dictdata=json.loads(Json_Dict) #还原成字典数据print(Dictdata) #输出还原后的字典数据3、Python操作JSON文件(1)用write()函数来实现json文件的写,如我们将上面的字典数据存入data.json文件中withopen(“data.json”,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论