人工智能与Python程序设计 课件全套 第1-25次-人工智能和课程介绍-高级循环神经网络与文本生成_第1页
人工智能与Python程序设计 课件全套 第1-25次-人工智能和课程介绍-高级循环神经网络与文本生成_第2页
人工智能与Python程序设计 课件全套 第1-25次-人工智能和课程介绍-高级循环神经网络与文本生成_第3页
人工智能与Python程序设计 课件全套 第1-25次-人工智能和课程介绍-高级循环神经网络与文本生成_第4页
人工智能与Python程序设计 课件全套 第1-25次-人工智能和课程介绍-高级循环神经网络与文本生成_第5页
已阅读5页,还剩1114页未读 继续免费阅读

下载本文档

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

文档简介

《人工智能与Python程序设计》——绪论提纲

人工智能Python

课程基本情况课程介绍人工智能国家战略• 人工智能已上升为我国的国家战略– 2017年3月,科技创新2030重大项目增加人工智能2.0– 2017年7月,《新一代人工智能发展规划》明确了我国新一代人工智能发展的战略目标2020年 2025年 2030年人工智能基础理论实现重大突破、基于与应用部分达到世界领先水平人工智能总体技术和应用与世界先进水平同步人工智能理论、技术与应用总体达到世界领先水平,成为世界主要人工智能创新中心人工智能产业应用智慧医疗新药发现基因序列分析自动驾驶新零售供应链金融欺诈检测/风险管理股市交易制造业能源智慧城市智能司法智慧农业生成式人工智能增长迅猛• 2022年开始生成式AI爆发增长5https://github.blog/2023-11-08-the-state-of-open-source-and-ai/人工智能最新的突破AI最新进展:Sorahttps:///sora• AIGC已经达到了以假乱真的水平• AGI即将到来?!Prompt:

A

stylish

woman

walks

down

aTokyo

street

filled

withwarm

glowing

neon

and

animated

city

signage.

She

wears

ablack

leather

jacket,

along

red

dress,

and

black

boots,

andcarries

a

black

purse.

She

wears

sunglasses

and

red

lipstick.She

walks

confidently

andcasually.

The

street

is

damp

andreflective,

creating

a

mirror

effect

of

the

colorful

lights.Many

pedestrians

walk

about.ChatGPT:出色的表现——内容生成ChatGPT:参加高考Credit:XipengQiuAI被誉为新时代的“电力”“About

100

years

ago,

electricitytransformed

every

majorindustry.AIhas

advanced

to

thepoint

where

it

hasthepower

to

transform

every

majorsector

incoming

years.”—

Andrew

Ng,

Stanford

University来自人工智能的收益(billionUSD)(数据来源:IDC)解释一下人工智能中三个常见的词人工智能(Artificial

Intelligence)机器学习(Machine

Learning)深度学习(Deep

Learning)人工智能“Abranch

of

computer

sciencedealingwith

thesimulation

of

intelligent

behavior

incomputers.”(Merriam-Webster)‘artificial

intelligence’isappliedwhen

a

machinemimics‘cognitive’

functions

that

humans

associatewith

other

human

minds,

such

as

‘learning'

and‘problem

solving’.(Wikipedia)• 人工智能是关于知识的学科——怎样表示知识以及怎样获得知识并使用知识的科学

——尼尔逊教授• 人工智能就是研究如何使计算机去做过去只有人才能做的智能工作 ——温斯顿教授机器学习• 维基百科中关于机器学习的几种定义–

机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。– 机器学习是对能通过经验自动改进的计算机算法的研究。– 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。– 一种经常引用的英文定义是:Acomputerprogram

is

said

to

learn

from

experienceEwithrespect

to

some

class

of

tasksT

andperformance

measure

P,if

its

performance

attasksin

T,

as

measuredby

P,

improves

withexperienceE.深度学习• 维基百科上定义– 深度学习(英语:deep

learning)是机器学习的分支,是一种以人工神经网络为架构,对资料进行表征学习• 深度学习的优势–能够更好地逼近复杂的实际场景– 表征学习:自动学习数据的表达的算法。(多层)人工神经网络:模型更加复杂,人工智能曲折的发展历程曲折的发展历程AI实现人类智能了吗?图灵测试• 图灵测试一词来源于艾伦·图灵写于1950年的一篇论文《计算机器与智能》– 测试者在与被测试者(一个人或一台机器)隔开的情况下,通过一些装置(如:键盘)向被测试者随意提问– 进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能AI技术在解决任务中螺旋式发展• 任务:国际象棋– 1997年5月11日IBM的超级电脑深蓝战胜卡斯帕罗夫– 世界上第一台超级国际象棋电脑是一台RS6000SP2超级并行处理计算机,平均每秒可计算棋局变化2OO万步– 通过近似穷举的方式完成下棋• 深蓝实现了真正的“智能”?NO!– 国际象棋太简单,会下围棋才可以– 为什么是围棋?搜索空间太大,无法穷举卡斯帕罗夫在与“深蓝”对弈(右为“深蓝”现场操作者)AI技术在解决任务中螺旋式发展• 任务:围棋–

2016年3月,DeepMind开发的人工智能围棋程序AlphaGo击败职业棋手李世石– 通过深度强化学习模型估算每一步落子的胜率AlphaGO实现了“智能”?NO!– 到底机器要在什么任务上战胜人才能证明其实现了“智能”?回答问题?AI技术在解决任务中螺旋式发展• 任务:回答问题–

2011年,IBM

Watson参加危险边缘(Jeopardy)节目,打败了最高奖金得主布拉德·鲁特尔和连胜纪录保持者肯·詹宁斯,赢得了100万美元– Watson通过加载数以百万计的字典、百科全书、网页主题分类、宗教典籍、小说、戏剧等,构建它的知识库– 运用了自然语言处理、信息检索、知识表达/推理和机器学习等技术IBM

Watson具有“智能”?NO!– 归根到底,人类还不清楚自己拥有的智能是什么人工智能技术在图灵测试中螺旋式发展• 任务:内容自动生成(AIGC)– 大模型(千亿级参数)– 海量数据– ……ChatGPT具有“智能”?YES

orNO!?– 大力真的能出奇迹!?– 人类并不清楚自己拥有的智能是什么– 也不清楚机器达到什么样的状态算是真正拥有智能• 人工智能技术发展史是人类不断“耍赖”的历史!• 需要人类智能的任务可以用“非智能”的方式解决!你认为计算机最终可以实现人类智能吗?可以不可以AB提交投票最多可选1项这一次AI热潮的特点多个应用领域获得突破大数据•

体量大•

多源、多模态强算力CPUGPU、TPU深网络DNN、RNN、CNNBERT、GPT高投入GPT-4

XXX?•

GPT-3训练成本1200万美元•

GPT-2

4.3万BERT

1.2

万规模大到甚至引发了对环境保护的担忧GPT系列模型的规模2017年,谷歌提出Transformer• 2018年,OpenAI提出GPT(1亿+参数)• 2019年,GPT2(15亿参数)• 2020年,GPT3(1750亿参数)• 2021年,CodeX(基于GPT3,赋予了代码和思维链能力)• 2021年,WebGPT(搜索能力)• 2022年2月,InstructGPT(理解人类指令)• 2022年11月,ChatGPT(对话能力)提纲

人工智能Python

课程基本情况课程介绍本次AI热潮的另一个特点• 开源社区贡献巨大,尤其是基于Python语言的开源社区– 代码开源:前沿的深度学习软件包源码公布与开源社区,企业可以直接进行改造、应用于产品– 数据开源:带人工标签的图像、文本数据驱动了算法的研究– 硬件开源:可以通过公开渠道获得的硬件设计,可以对已有的设计进行学习,修改,发布,制作和销售PyTorch开源代码ResNet开源代码计算机程序设计语言的历史蛮荒之初1940年之前初露锋芒40年代ENIAC

codingC-10百花齐放50与60年代LISPFORTRANCOBOLCPL

,BCPLBASIC开宗立派1967-1978PascalCSmalltalkPrologSQL内外兼修C++AdaPerlTcl80年代互联网时代90年代PythonVisual

BasicRubyJavaDelphiJavaScriptPHPPython的由来吉多·范罗苏姆(Guido

van

Rossum)– 荷兰国家数学和计算机科学研究所– 1989年,Guido

van

Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序– 吉多·范罗苏姆是一个名为Monty

Python喜剧团体的爱好者• 设计哲学:“优雅”、“明确”、“简单”– 对于一个特定的问题,只要有一种最好的方法来解决就好了(There

should

be

one--

and

preferablyonly

one

--obvious

way

to

do

it.

)– 易读、易维护Python语言在人工智能中的优势• 人工智能常用的开发语言:LISP、PROLOG、C/C++、JAVAPython的优势– 语法简单,易学,代码可读性好– 强大的标准库和第三方库支持– 开源社区的广泛支持– 可兼容各种AI硬件设备33https://github.blog/2023-11-08-the-state-of-open-source-and-ai/高级语言的分类• 编译型语言(C/C++等)解释型语言(BASIC、Python等)此题未设置答案,请点击右侧设置按钮一般情况下,实现同样的功能,下面哪种语言运行速度最快?编译型语言解析型语言汇编语言高级语言ABCD提交单选题1分人工智能时代Python迎来大发展知乎版:https://zhuanlan.zhihu.com/p/114459313Git版:https://hellogithub.com/report/tiobe/为什么人工智能用Python?• 因为脚本语言写起来简单容易– 简单快速聚焦问题本身而不是繁琐底层细节– Python历史上一直都是科学计算和数据分析的重要工具• 解析语言运行速度慢怎么解决?– Python慢但适合上层写逻辑– C/C++速度快适合底层写算法– CPython的胶水语言特性• Python可以很容易通过跨语言接口对接到C/C++如何学习Python?ChatGPT的回答:提纲

人工智能Python

课程基本情况课程介绍课程目标与定位• 课程目标:本科生AI入门课程,统领后续AI教学和知识普及• 思维能力的培养– 计算思维与人工智能思维的融合• 知识体系的完善– Python编程语言为主的程序设计– 人工智能基础知识及应用• 实践能力的锻炼– 面向人工智能应用的程序设计能力• 课程体系的支撑– 为后续人工智能相关课程提供理论和实践基础课程总体设计人工智能概论(本次课)初步了解人工智能AI中的Python语言课程安排Python程序设计Python程序设计基础Python功能库Python实现简单AI模型机器学习基础与深度学习平台机器学习和深度学习的基本模式深度学习平台PyTorch介绍PyTorch实现AI模型AI应用实践CNN模型及图像应用大作业:人脸识别RNN模型及文本应用大作业:诗歌生成国产AI平台国产AI平台介绍在国产平台上实现AI应用课程总结与人工智能展望课程内容总结与复习AI发展趋势教学进度安排:理论教学教学进度安排:实验教学如何学好这门课?总结:人工智能与Python程序设计• 人工智能迎来第三次爆发– 大数据、强算力、深网络、高投入– 基于Python语言的开源社区贡献巨大• 面向理工大类学科开设的专业课程– Python语言:夯实程序设计– 人工智能:理论联系实际• 下一节课:开始Python之旅谢谢!人工智能与Python程序设计

教研组《人工智能与Python程序设计》——Python简介提纲

计算机程序设计语言Python程序实例初识Python什么是程序?程序(Program)– 流程、议程、行程、…– 为了完成某项任务,解决某个问题所需要执行的一系列步骤• 计算机程序– 为了完成某项任务,解决某个问题由计算机执行的一系列指令(步骤)起床洗漱穿衣出门是否下雨否打伞是什么是计算机?计算机(Computer)– 能够按照程序自动运行的机器• 组成硬件(Hardware)• 计算机的躯壳软件(Software)• 计算机程序• 计算机的灵魂计算机的基本组成• 冯•诺依曼体系结构• 计算机之父:冯•诺依曼– 计算机应该按照程序顺序执行– 采用二进制作为计算机的数制基础存储器输入设备输出设备控制器运算器CPUCompute

1+1101110000000000100000000000001010000000100000000机器执行的程序(最初形式)MOV

AX,

1101110000000000100000000ADD

AX,

1000001010000000100000000汇编语言(Assembly

Language)print(1+1)高级语言(High-level

Language)如:Python语言Recap:Python是解析型高级语言• 编译型语言(C/C++等)解释型语言(BASIC、Python等)提纲

计算机程序设计语言Python程序实例初识Python你的第一个Python程序:”Hello

World”打印HelloWorld– 注释:每一行 #

后面都是注释Python命令:print输入:字符串“Hello,World”输出:“Hello,World”更多Python的例子print(2

*

3)– 打印数字2*3的结果– 2和3是常量,不可以改变• a、b、c是变量,=为赋值符号– a

=

2:a赋值2– b

=

3:b赋值3– c=a

+

b:先算a+b,结果赋值c– c=a

*

b:先算a*b,结果赋值c温度转换程序实例:问题描述• 温度刻画存在不同体系– 摄氏度:以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画。– 华氏度:以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画。• 其它温度刻画体系– 开氏温标:描述客观世界真实的温度……温度转换程序实例:问题分析• 问题:如何利用Python程序进行摄氏度和华氏度之间的转换– 步骤1:分析问题的计算部分:采用公式转换方式解决计算问题– 步骤2:确定功能• 输入:华氏或者摄氏温度值、温度标识• 处理:温度转化算法• 输出:华氏或者摄氏温度值、温度标识– 步骤3:设计算法,转换公式如下:• C

=

(F

-

32)

/

1.8• F=

C*

1.8

+32F表示华氏度,82F表示华氏82度C表示摄氏度,28C表示摄氏28度温度转换程序实例:编写程序• 问题:如何利用Python程序进行摄氏度和华氏度之间的转换– 步骤3:设计算法,转换公式如下:• C

=

(F

-

32)

/

1.8• F=

C*

1.8

+

32– 步骤4:编写程序温度转换程序实例:程序运行• 运行方法1(本门课的主要方法)– 在Jupiter

Notebook中输入源程序– 点击“运行”按钮• 适合实验和教学温度转换程序实例:程序运行• 运行方法2:通过IDE进行运行和Debug– 编辑程序– 设置断点– 单步运行– 查看变量值• 适合编写规模较大的项目和工程温度转换程序实例:程序运行• 运行方法3:通过Python命令运行– 启动Anaconda

Prompt– 确认.py文件的地址– 执行命令行

python

<.py文件>温度转换程序实例:程序运行• 运行方法4:在Python环境中输入和运行启动Anaconda

Prompt执行Python命令,启动Python环境– 一遍输入代码一边执行• 适合快速验证Python语句的功能程序元素分析:程序的格式框架• Python语言采用严格的“缩进”来表明程序的格式框架。– 缩进指每一行代码开始前的空白区域,建议用Tab键表示缩进• 1个缩进=4个空格• 用以在Python中标明代码的层次关系• 缩进是Python语言中表明程序框架的唯一手段– 其它语言如C和Java用大括号{

}表示• 缩进可以有多层,以表示更复杂的逻辑关系程序元素分析:程序的格式框架•

Python的注释以#号开头,#号之后一直到一行末尾的所有字符,都是注释的一部分,Python解释器将忽略它们,不予执行。• 多行注释以

’’’开头和结尾(做大段地说明)• 注释有助于提升程序的可读性– 帮助他人读懂你的程序提出建议改正错误– 帮助以后的你读懂你自己的程序以便复用– 帮助你的同事使用你的程序程序元素分析:命名• 两类标识符– 常量:程序中值不发生改变的元素– 变量:程序中值发生改变或者可以发生改变的元素• Python语言允许采用大写字母、小写字母、数字、下划线和汉字等字符及其组合给变量命名– 但名字的首字符不能是数字– 中间不能出现空格– 长度没有限制– 标识符对大小写敏感,python和Python是两个不同的名字• 示例程序中的标识符TempStrCF程序元素分析:保留字• 保留字,也称为关键字,指被编程语言内部定义并保留使用的标识符。– 程序员编写程序不能定义与保留字相同的标识符–

每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。– Python

3.x一共有33个保留字– 掌握一门编程语言首先要熟记其所对应的保留字• 示例程序中的保留字– if

、elif、else、in。。程序元素分析:字符串• Python语言中,字符串是用两个双引号”字符串”

或者单引号’字符串’

括起来的一个或多个字符。• Python字符串的两种序号体系– 从左到右,从0开始逐位递增– 从右到左,从-1开始,逐位递减😓• 示例中的字符串处理– TempStr[-1]:取字符串最后一个字符– Temp[0:-1]:取字符串从第1个到倒数第二个程序元素分析:赋值语句• Python语言中,等于号=表示“赋值”–

将等号右侧的值计算后将结果值赋给

左侧变量,包含等号(=)的语句称为“赋值语句”–

切记:这不是数学中的相等!!!!表示:把input(用户输入的字符串)返回的值放到TempStr这个字符串变量中程序元素分析:同步赋值• 同步赋值语句:同时给多个变量赋值– <变量1>,

,<变量N>

=

<表达式1>

,

,<表达式N>– A,

B=

12,

13

等价于

A

=12

B=

13– 好处:省代码• 举例:交换A和B的值程序元素分析:

input()函数• input()是一个系统内置的函数,获取并返回用户在命令行中的输入字符串– 注意:input不是保留字– 获得用户输入之前,input()函数可以包含一些提示性文字– <变量>

=

input(<提示性文字>)程序元素分析:

eval()函数• eval(<字符串>)

是Python语言中一个很特殊的函数– 以Python表达式的方式解析并执行字符串,将返回结果输出– 下面两句语句实现了相同的功能程序元素分析:输出函数print()• print()函数用来输出字符信息,或以字符形式输出变量。– 可以输出各种类型变量的值– 可以通过%来选择要输出的变量程序元素分析:流程控制语句• if:如果满足某个,则执行其控制下(缩进的)程序部分(跳过else和elif部分)• else:

与if相对应,如果不满足,则执行其控制下的程序elif:elseif的缩写– 如果第一个if不满足条件,抢在后面的else之前再判断一次(截胡)– 如果满足条件,执行其控制的程序(跳过else部分)– elif可以有0-N个Python画图程序实例:问题描述用Python画一条蟒蛇• 问题1:

计算机绘图是什么原理?– 一段程序为何能够产生窗体?为何能在窗体上绘制图形?• 问题2:

Python蟒蛇绘制从哪里开始?– 如何绘制一条线?如何绘制一个弧形?如何绘制一个蟒蛇?示例程序:在Jupiter

Notebook中运行示例程序:在PyCharm中运行Python画图程序解析:库引用importturtleimport

为保留字引入会图库turtle– 更加简洁的用法import

turtle

as

t• 引入函数from

turtle

import

<函数名>from

turtle

import

*Python画图程序解析:构建画板t.setup(width=_CFG["width"],

height=_CFG["height"],startx=_CFG["leftright"],

starty=_CFG["topbottom"])– 设置主窗口的大小和位置。– width

--

默认为屏幕的

50%– height

--

默认为屏幕的

75%– startx

--

表示初始位置距离屏幕左边缘多少像素– starty

--

表示初始位置距离屏幕上边缘多少像素Python画图程序解析:画笔控制• t.penup():提笔,不留笔迹• t.pendown():下笔,开始画t.pensize(width):画笔宽度t.pencolor():画笔颜色– 颜色值– RBG

t.pencolor(0.63,0.13,

0.94)Python画图程序解析:画笔运动t.fd(d)– 海龟前进distance

指定的距离,方向为海龟的朝向。t.circle(radius,

extent=None)– 绘制一个

radius

指定半径的圆,圆心在海龟左边radius个单位;extent

为一个夹角,用来决定绘制圆的一部分Python画图程序解析:方向控制turtle.seth(to_angle)– 设置海龟的朝向为

to_angleturtle.left

(angle)– 海龟向左转turtle.right

(angle)– 海龟向右转Python画图程序解析:循环语句与Range()函数for<变量> in

range(<次数>):<被循环执行的语句>• range(N):

产生整数序列

[0,

1,2,

…,N-1]• <变量>表示每次循环的计数,0到<次数>-1代码执行过程分析:在PyCharm中设置断点• 鼠标双击红点的位置– 可以设置多个• 点击绿色小虫子运行• 单步执行– 点击相应图标F9:ResumeF8:StepoverF7:Stepinto– …在DebugConfig窗口中设置Script

Path代码执行过程分析:画笔初始状态代码执行过程分析:执行第一次循环.......更多的画图最后:关于IDEJupiter

Notebook适合学习,缺点也很明显– 无法单步执行跟踪程序执行中状态– 无法管理比较大的工程(多文件、多人协作)– ……Integrated

Development

Environment(IDE)– 高级编程者必备PyCharm是一个比较流行的Python

IDEhttps://www.jetbrains.com/pycharm/downl

oad/其他IDE:eclipse、VSCode

……谢谢!工智能与Python程序设计

教研组《工智能与Python程序设计》——基本数据类型上次课回顾:初识Python设计一个Python程序– 问题分析与模型– 程序格式与框架– 变量与常量命名规则– 字符串– 注释Python保留字– 输入/输出函数– 流程控制语句IDE提纲

数字及基本操作

字符串及其操作Python

02基本数据类型Python中的数字• 程序元素:010

/

10,存在多种可能– 表示十进制整数值10– 字符串• 数字类型对Python语言中数字的表示和使用进行了定义和规范• Python中的数字类型包括– 整数– 浮点数– 复数整数• 与数学中的整数概念一致,没有取值范围限制• 数的运算:pow(x,

y):计算x的y次方课堂练习:在Jupiter

Notebook中计算– pow(2,

10),

pow(10,

2)– pow(2,

1000)– pow(2,

pow(2,

3))判断两个数的大小,哪个选项正确?5533

>66225533

<6622AB提交单选题1分不懂Python

v.s.

懂Python∵5533

533

×

11336622

622

×

1122==533

×

1111

533

×

211

×511622

222

×322>=544211

×

322>344211

×

322

211=322>

1∴

5533

>

6622Python显著降低了此题的难度!其它整数表示的例子• 负数:-2010,-100• 16进制整数表示:以0x或者0X开头– 0x11、0x1a• 2进制整数表示:以0b或者0B开头• 8进制整数表示:以0o或者0O开头浮点数• 带有小数点及小数位的数• Python语言中对浮点数的表示存在限制– 数值范围存在限制(上溢出,overflow)– 小数精度也存在限制(下溢出,underflow)– 这种限制与不同计算机系统有关浮点数的表示形式• 最常用:小数– 0.12、-77.、-2.17• 科学计数法:使用字母“e”或者“E”作为幂的符号,以10为基数– 科学计数法含义:

a

E

b

=

a

*

10b– 96e4、4.3e-1、9.6E5复数• 与数学中复数的概念一致– �

+

�𝑗, 𝑗

= −1– �:

实部,�:虚部• 如

𝑧 = 1

+

5𝑗– z.real

:获取实部– z.imag:获取虚部• 复数的运算规则– z1=a+bj,z2=c+dj是任意两个复数– 和:

(a+bj)+(c+dj)=(a+c)+(b+d)j– 差:

(a+bj)-(c+dj)=(a-c)+(b-d)j– 积:(a+bj)(c+dj)=(ac-bd)+(bc+ad)j数字类型的操作• 不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型– 123+4.0=127.0

(整数+浮点数=浮点数)• 规则(按照最宽的返回):– 整数之间运算,如果结果一定是整数(包括整除、求余),结果是整数;– 整数之间的除法(“/”操作符),结果是浮点数;– 整数和浮点数混合运算,输出结果是浮点数二元操作符号对应的增强赋值操作符x

=x

op

y

x

op=y– 其中op为二元操作符– 例如:op可以为

+

-*

/

**

%等• 举例:x

=3.14– x=x**

3

x**=

3数字类型的关系• 类型间可进行混合运算,生成结果为"最宽"类型– 三种类型存在一种逐渐"扩展"或"变宽"的关系:整数->浮点数-> 复数• 例如:123

+4.0

=127.0

(整数+浮点数=

浮点数)数值的类型判断与转换• 数值类型判断:type(x)• 方式1:数值运算操作符可以隐式地转换输出结果的数字类型• 方式2:通过内置的数字类型转换函数可以显式地在数字类型之间进行转换– float(5)=5.0(增加小数部分)– int(5.6)返回5(直接去掉小数部分,有精度损失)数值运算函数math库• Python语言本身提供的数值运算符号有限,是Python提供的内置数学类函数库– 提供了4个数学常数和44个函数– pi、e、无穷大、非数值– 16个数值表示函数– 8个幂对数函数– 16个三角对数函数– 4个高等特殊函数• 使用方法– 1.

引入math库:import

math– 2.

调用math库中的功能函数,如:math.cos(math.pi)• 注意:计算机无法直接表示无理数,用float近似表达,有精度损失math库中的函数math库中的函数示例:DayDayUp365• 问题:一年365天,如果好好学习时能力值相比前一天提高1‰,当放任时相比前一天下降1‰。效果相差多少呢?• 课堂练习:输入上述程序,试试提高ratio(比如:5‰、1%),感受一下指数的力量关系运算符(Relational

Operators)• 判断一个数

x

是否为偶数– x

%

2

是否等于

0– x

%

2==0– 若为True,则x

为偶数– 若为False,则

x

为奇数• 用于判断两个值的关系– 大小、相等或不相等• 运算的结果只有两种(布尔型)– 若结果为True,表示条件成立– 若结果为False,表示条件不成立关系运算符含义举例==等于(equal)10

==

20isFalse!=

,<>不等于(not

equal)10

!=

20is

True>大于(greater)10

>

20is

False<小于(less)10

<

20is

True>=大于等于(greater

orequal)10

>=

20isFalse<=小于等于(lessorequal)10

<=

20isTrue逻辑运算符(Logical

Operators)• 现实世界中处处体现逻辑– 你们班有没有身高一米九以上的男生?––地铁里禁止喝水吃东西……• 逻辑运算符身高

>

1.9

and

性别

==

男禁止:喝水or

吃东西关系运算符含义举例and与(全真才真)True

andFalse

==

Falseor或(全假才假)Trueor

False

==

Truenot非(真变假、假变真)notTrue

==

False12345该图形是否为红色三角形?颜色

==

红色形状

==

三角形and逻辑运算示例1AFBTA

and

BF2FFF3TFF4TTT5FFFABA

and

BFFFFTFTFFTTT12345该图形是否为红色或三角形?颜色

==

红色

or 形状

==

三角形ABT1FT2FFF345TTFFTFTTF逻辑运算示例A

or

BABA

or

BFFFFTTTFTTTT12345该图形是否非红色?not

颜色

==

红色逻辑运算示例1AFnot

AT2FT3TF4TF5FTAnot

ATFFT逻辑运算示例:判断闰年• 如果年份

y能被

4

整除但是不能被

100整除,或者能被

400

整除,则是闰年– 2014、1900年不是闰年– 2012、2000

年是闰年(y

%

4==

0and

y%

100

!=

0)or(y

%

400==

0)1年≈365.24219天运算符优先级• 下面两个表达式– 2

*

1

+3– 2

*

(1+3)先乘后加先加后乘• 括号()– 改变了语言内在的默认优先级– 具有最高优先级• 嵌套括号按照由内而外结合– (2

*(1

+2))**2

==

36– 2

*

(1

+

2)**2

==

18优先级顺序:• 括号:()• 一元运算:+,-• 幂次:**• 算术运算:*

,/

,%,//• 算术运算:+,-• 比较运算:==,!=,

<>• 逻辑非:not• 逻辑与:and• 逻辑或:or•<= >=赋值运算:=,

*=,

/=,+=,-=,%=,//=提纲

数字及基本操作

字符串及其操作Python

02基本数据类型字符串类型• 字符串是用双引号""或者单引号''括起来的一个或多个字符。• 字符串可以保存在变量中,也可以单独存在• 可以用type()函数测试一个字符串的类型• Python语言转义符:\– 输出带有引号的字符串,可以使用转义符– 使用\\输出带有转移符的字符串– 使用\n输出带有换行符号的字符串– \t字符串索引• 字符串是一个字符序列:字符串最左端位置标记为0,依次增加• 字符串中的编号叫做“索引”• 单个索引辅助访问字符串中的特定位置,如:读取特定位置上的字符– Python中字符串索引从0开始,一个长度为L的字符串最后一个字符的位置是L-1– Python同时允许使用负数从字符串右边末尾向左边进行反向索引,最右侧索引值是-1字符串的范围索引• 可以通过两个索引值确定一个位置范围,返回这个范围的子串– 格式:<string>[<start>:<end>]–

start和end都是整数型数值,这个子序列从索引start开始直到索引end结束,但不包括end位置• 注意:当<start>位于<end>后面,返回空字符串字符串运算• 字符串之间可以通过+或*进行连接– 加法操作(+)将两个字符串连接成为一个新的字符串– 乘法操作(*)生成一个由其本身字符串重复连接而成的字符串• len:求字符串长度– 英文:字母数(包括空格)– 中文:汉字数• str:

把其他类型的数据转为字符串说明第一行结果123.00123和第二行结果1230.00123是如何计算出来的。正常使用主观题需2.0以上版本雨课堂作答主观题10分字符串操作• 常见字符串操作– 注意:字符串操作并不改变原来的字符串,生产一个新的字符串• 举例1:替换和变成大写• 举例2:可以通过for和in组成的循环来遍历字符串中每个字符:for<var>in<string>:操作字符串格式化处理format()• 常见于生产格式化的文本,比如:系统日志信息等• 基本语法格式:<模板字符串>.format(<逗号分隔的参数>)更加高级的用法:格式控制• 槽的内部样式如下:{<参数序号>:

<格式控制标记>}– 参数序号表示从第几个参数中取值– 格式控制标记用来控制参数显示时的格式,包括:• <填充><对齐><宽度>,<.精度><类型>6个字段• 字段都是可选的,可以组合使用字符串使用实例1• 问题:输入一个月份数字,返回对应月份名称缩写– 输入:输入一个表示月份的数字(1-12)– 处理:利用字符串基本操作实现该功能– 输出:输入数字对应月份名称的缩写

(如:1

->

Jan)• 设计思路– 1.

将所有的月份名称缩写存储在一个字符串中– 2.

在字符串中截取适当的子串来查找特定月份– 3.

找出在哪里切割子串• 每个月份的缩写都由3个字母组成• 如果pos表示一个月份的第一个字母,则months[pos:pos+3]表示这个月份的缩写monthAbbrev

=

months[pos:pos+3]字符串使用实例1• 月份与字符串初始位置关系:

(n

1)*3• 编写程序字符串使用实例2• 任务:简单的非刷新文本进度条• 设计思路:– 利用print()函数实现– 按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次进度条。– 每一行输出包含进度百分比,代表已完成的部分(**)和未完成的部分(..)的两种字符,以及一个跟随完成度前进的小箭头字符串使用实例• scale=10:分成10段执行,每一段提升10%• 每一个循环画出一个进度条– i:当前的轮数的进度,0,1,2,

…,

10– a:

把字符串“**”重复i次,表示完成的进度– b:

把字符串

“..”重复scale

–i

次,表示未完成的进度– c:

当前进度度百分比,scale

=10时候,就是i*10– 通过字符串格式化画得到进度条字符串进度条单行动态刷新• 了解“回车”和“换行”字符– 回车<\r>(carriage

return):把打印头定位到左边界(打印头重新放在这一行的开始)。– 换行<\n>(line

feed):把纸向下移一行。• Unix系统:每行结尾只有"<换行>",即"\n";• Windows:每行结尾是"<回车><换行>",即"\r\n";• Mac:每行结尾是"<回车>"。• 如何单行刷新?– 只回车,不换行– 用后打印的内容覆盖原来的内容试一下效果• print("\r{:3}%".format(i),

end="")– \r:回到最左列开始打印– end=“”:

print函数不打印\n•

注意:如果后打印的字符比之前的字符段,不能覆盖的部分将任然保留在屏幕上改动图示的程序,实现进度条单行动态刷新正常使用主观题需2.0以上版本雨课堂作答主观题10分练习与思考• 练习:三天打鱼两天晒网– 如果好好学习时能力值相比前一天提高1‰,当放任时相比前一天下降0.8‰– 写出程序,计算好好学习3天然后放任2天,学习365天后的能力值• 思考:关于数的进制– 为什么一个整数能被3整除,则它所有数位上数字之和也能被3整除?– 还有那些数字具有这样的特点?– 8进制和16进制表达的整数,是否也存在这样的数字?– 关于进制的效率问题:https://www.zhihu.com/question/314924440谢谢!人工智能与Python程序设计

教研组《工智能与Python程序设计》——程序的控制结构上次课回顾:数字与字符串Python中的数字– 整数– 浮点数math库– 数值运算– 逻辑运算Python中的字符串– 字符串索引– 字符串+和*字符串format关于数的进制• 为什么一个整数能被3整除,则它所有数位上数字之和也能被3整除?• 还有那些数字具有这样的特点?• 8进制和16进制表达的整数,是否也存在这样的数字?• 𝑥

=

𝑎0100

+

𝑎1101

+

+

𝑎𝑁10𝑁

=⋯

+99

9𝑎𝑁𝑎0

+

𝑎1

+

𝑎𝑁

+

9𝑎1

+

99𝑎2

+– 𝑎𝑖

∈ 0,

1,

2,

3,

4,

5,

6,

7,

8,

9• 8进制数– 𝑥

=

𝑎080

+

𝑎181

+

+

𝑎𝑁8𝑁

=77

7𝑎𝑁– 𝑎𝑖

∈ 0,

1,

2,

3,

4,

5,

6,

7𝑎0

+

𝑎1

+

𝑎𝑁+

7𝑎1

+

77𝑎2

+

+关于数的效率一个下溢出的例子• 𝑒

=

lim 1

+

1𝑛→∞𝑛𝑛提纲

程序的基本结构

分支结构

循环结构Python

03程序的控制结构程序过程描述的基本方式:流程图• 程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程• 流程图的基本元素包括7种程序基本结构• 顺序结构是程序的基础,但功能极为有限• 三种基本结构组成– 顺序结构– 分支结构– 循环结构• 任何程序都由这三种基本结构组合而成程序的基本结构• 顺序结构:程序按照线性顺序依次执行– 语句块1和语句块2表示一个或一组顺序执行的语句• 分支结构:程序根据条件判断结果而选择不同向前执行路径– 包括单分支结构和二分支结构– 由二分支结构会组合形成多分支结构• 循环结构:根据条件判断结果向后反复执行– 包括条件循环和遍历循环结构分支结构•

分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式,包括单分支结构和二分支结构。由二分支结构会组合形成多分支结构顺序结构示例:圆的面积与周长计算• 输入:圆半径R• 处理:– 圆面积:S=π*R*R– 圆周长:L=2*π*R• 输出:圆面积S、周长L分支结构示例:实数绝对值计算• 输入:实数R• 处理:– 如果R>=0,|R|=R– 如果R<0,|R|

=

-R• 输出:

|R|循环结构示例:整数累加• 输入:整数R• 处理:– S=

1+2+

…+

R• 输出:

S提纲

程序的基本结构

分支结构

循环结构Python

03程序的控制结构简单情况:单分支结构if语句if

<条件>:语句块• 语句块是if条件满足后执行的一个或多个语句序列• 语句块中语句通过与if所在行形成缩进表达包含关系• if语句首先评估<条件>的结果值– 如果结果为True,则执行语句块里的语句序列,然后控制转向程序的下一条语句– 如果结果为False,语句块里的语句会被跳过。• 注意:– if语句中语句块执行与否依赖于条件判断– 无论什么情况,控制都会转到if语句后与该语句同级别的下一条语句if语句的条件判断• if语中<条件>部分可以使用任何能够产生True或False的语句• 形成判断条件最常见的方式是采用关系操作符• Python语言共有6个关系操作符举例:空气PM2.5预警• 输入:接收外部输入PM2.5值• 处理:– IfPM2.5值>=75,打印空气污染警告– If35<=PM2.5值<75,打印空气污染警告– IfPM2.5值<35,打印空气质量优,建议户外运动• 输出:打印空气质量提醒如图所示的程序,输入75时,程序的输出是什么?空气优质,快去户外运动!空气良好,适度户外活动!空气污染,请小心!空气良好,适度户外活动!空气污染,请小心!ABCD提交单选题1分二分支结构:if

else语句• 语法格式如下:if<条件>:<语句块1>else:<语句块2>• <语句块1>是在if条件满足后执行的一个或多个语句序列• 语句块2>是if条件不满足后执行的语句序列• 二分支语句用于区分<条件>的两种可能True或者False,分别形成执行路径if

else语句紧凑结构表示<表达式1>

if

<条件>

else

<表达式2>• 适合对出现的特殊值进行处理多分支结构:if-elif-else语句if

<条件1>:<语句块1>elif<条件2>:<语句块2>...else:<语句块N>• 用于设置同一个判断条件的多条执行路径–

依次评估寻找第一个结果为True的条件,执行该条件下的语句块,同时结束后跳过整个if-elif-else结构– 如果没有任何条件成立,else下面的语句块被执行– else子句可选多分支结构示例:PM2.5预警多分支结构单分支结构示例2:BMI计算• 编写一个根据体重和身高计算BMI值的程序,并同时输出国际和国内的BMI指标建议值示例:求一元二次方程的解开始输入a,b,c无实根结束a==0?FTΔ=b*b-4*a*cΔ<0?FΔ==0?F-b/2aTTx

b

b

4ac2a2示例:源代码程序异常处理• 用户输入类型与预期不符合,产生了异常行号:1

num

=eval(……NameError:

name

‘a’is

notdefined– NameError:异常类型– name

‘a’is

…:内容提示• 问题:如何捕捉上述异常,避免程序直接退出异常处理用法1:捕捉所有异常用法2:捕捉特定类型的异常异常处理的高级使用try:<正常程序块>except:<发生异常执行>else:<不发生异常执行>finally:<一定执行>提纲

程序的基本结构

分支结构

循环结构Python

03程序的控制结构有限循环:for语句遍历循环for

<循环变量>

in

<遍历结构>:<语句块>• 遍历结构可以是字符串、文件、组合数据类型或range()函数无限循环while语句while<条件>:<语句块>语句块•

无限循环一直保持循环操作直到特定循环条件不被满足才结束,不需要提前知道确定循

环次数。循环执行过程生成

count

变量,值为

0在PyCharm中Debug该程序循环执行过程count

值为

0,小于

5循环执行过程打印字符串循环执行过程count

值加

1,结果为

1循环执行过程count

值为

1,小于

5循环执行过程打印字符串循环执行过程count

值加

1,结果为

2循环执行过程count

值为

2,小于

5循环执行过程打印字符串循环执行过程count

值加

1,结果为

3循环执行过程count

值为

3,小于

5循环执行过程打印字符串循环执行过程count

值加

1,结果为

4循环执行过程count

值为

4,小于

5循环执行过程打印字符串循环执行过程count

值加

1,结果为

5循环执行过程count

值为

5,不小于

5循环执行过程继续执行

while

后面的语句循环辅助保留字break• break用来辅助控制循环执行break用来跳出最内层for或while循环– 脱离该循环后程序从循环后代码继续续执行– 每个break语句只有能力跳出当前层次循环循环辅助保留字continue• continue用来结束当前当次循环– 跳出循环体中下面尚未执行的语句– 但不跳出当前循环• 对于while循环,继续求解循环条件。• 对于for循环,程序流程接着遍历循环列表break与continue对比:– continue语句只结束本次循环,而不终止整个循环的执行。– break语句结束整个循环过程,不再判断执行循环的条件是否成立举例:求圆周率• 圆周率的求解方法– 刘徽:割圆术– 几何方法– 莱布尼茨级数– 分析方法– 蒲丰投针– 随机抽样或统计试验方法蒙特卡罗法求圆周率• 基本思想:利用离散点值表示图形的面积,通过面积比例来求解π值• 基本步骤– 随机向单位正方形和圆结构,抛洒大量“飞镖”点– 计算每个点到圆心的距离,判断该点在圆内或圆外– 用圆内的点数除以总点数就是π/4值• 随机点数量越大,越充分覆盖整个图形,计算得到的π值越精确– 前提条件:真正的随机数如何得到随机点?Python的random库– 提供了不同类型的随机数函数,所有函数都是基于最基本的random.random()函数扩展而来求圆周率精度的变化其它圆周率计算公式• 莱布尼茨公式• 欧拉公式BBP公式:• 拉马努金以及……https://www.zhihu.com/question/312520105/answer/601728029谢谢!人工智能与Python程序设计

教研组《人工智能与Python程序设计》——函数与代码复用上次课回顾:程序的控制结构Python中的分支结构– 单分支– 二分支– 多分支– 异常处理Python中的循环结构– 遍历循环– 条件循环breakcontinue提纲

函数的基本使用

函数的参数传递

函数递归Python

AI函数与代码复用函数的定义•

函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名完成功能调用。– 输入参数传递– 返回输出•

函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执行,不需要在每个执行地方重复编写这些语句。每次

温馨提示

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

评论

0/150

提交评论