收藏 分销(赏)

人工智能和机器学习--PPT02-Python编程简介.pdf

上传人:精**** 文档编号:3563680 上传时间:2024-07-09 格式:PDF 页数:64 大小:2.15MB
下载 相关 举报
人工智能和机器学习--PPT02-Python编程简介.pdf_第1页
第1页 / 共64页
人工智能和机器学习--PPT02-Python编程简介.pdf_第2页
第2页 / 共64页
人工智能和机器学习--PPT02-Python编程简介.pdf_第3页
第3页 / 共64页
人工智能和机器学习--PPT02-Python编程简介.pdf_第4页
第4页 / 共64页
人工智能和机器学习--PPT02-Python编程简介.pdf_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、Python编程简介王秋月中国人民大学信息学院目录 Python起源 为什么要学习Python?怎样高效学习Python?Python的开发环境 Jupyter Notebook Python基本编程 数据类型和变量 运算符和表达式 容器类型 控制流语句 函数 文件操作Python起源1989年末,Guido van Rossum为了打发圣诞节的无聊,创造了Python语言。2005年12月,入职Google工作。2012年12月,加入Dropbox公司。Guido van Rossum(1956-)TOBIE IndexIEEE top programming languages of 20

2、19Python特点丰富的库简单、易学可扩展、可嵌入解释性面向对象、高层免费开源、可移植为什么要学Python?人生苦短,我用Python!Python的特点 简单、易学简单、易学 一种代表简单主义思想的语言,有简单的语法,容易上手。伪代码本质是它最大的优点之一。使你能够专注于解决问题而不是去搞明白语言本身。面向对象的高层语言面向对象的高层语言 无需关注底层细节,而C/C+中需要操作指针。与其他语言相比,以强大而又简单的方式实现面向对象编程。解释性解释性 不需要被编译成二进制代码,可以直接在源代码上运行。对于编译性语言(C/C+),源文件-编译/链接器-可执行文件。Python的特点 免费开源

3、,可移植性免费开源,可移植性 Unix衍生系统,Win32系统家族,掌上平台(掌上电脑/手机),游戏控制台(PSP)等等。可扩展性,可嵌入性可扩展性,可嵌入性 如果一段关键代码希望运行得更快或者希望算法不公开,你可以把这部分程序用C或C+编写,然后在Python程序中使用。可以把Python嵌入到C/C+程序中,从而向程序用户提供脚本功能。丰富的库丰富的库 Python标准库确实很庞大,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器等等。此外还有其他高质量的库,如wxPython、Twisted和图像库等等。如何高效学习Python?不需要具有计算机专业的学位 不需要上一门完整的

4、Python编程课 不需要记住所有的语法 自顶向下学习法:先学习核心的编程概念 再学习使用一些相关的库 最后通过实际项目来运用知识和改进技术Python 2还是Python 3?Python 3不向下兼容Python 2,即Python 2中的一些函数和包不能在Python 3中使用 2010年发布的Python 2.7是Python 2最后的版本,Python 2将不再更新 2020年1月1日起,Python核心开发团队将不再对Python 2提供任何官方支持 Python 3是未来的主流 本课程中使用Python 3Python的开发环境 Anaconda 一个用于科学计算的Python发

5、行版 提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题 支持 Linux,Mac OS,Windows系统 下载:https:/ NumPy(http:/www.numpy.org/):用于处理(大)数组 Pandas(http:/pandas.pydata.org/):数据分析工具包 Matplotlib(http:/matplotlib.org):用于绘制图表 SciPy(http:/www.scipy.org):包含许多有用的科学函数 Scikit-learn(http:/scikit-learn.org/):机器学习算法 IPython

6、(http:/ipython.org/):基于Shell或浏览器的开发环境 Spyder(https:/www.spyder-ide.org/):交互式集成开发环境 此 前 被 称 为 IPythonNotebook 多语分析环境支持40多种编程语言 Jupyter 是 Julia,Python和R几个词的变位词 支持多种内容类型:代码、描述文本、图像、视频等等 http:/jupyter.org/Jupyter Notebook HTML&Markdown LaTeX(公式)Code(代码)Jupyter Notebook HTML&Markdown LaTeX(公式)Code(代码)Jup

7、yter Notebook HTML&Markdown LaTeX(公式)Code(代码)Jupyter Notebook HTML&Markdown LaTeX(公式)Code(代码)Jupyter Notebook 代码被划分成多个单元代码被划分成多个单元,可以控制执行过程可以控制执行过程 允许进行交互式开发允许进行交互式开发 非常适合探索式分析与非常适合探索式分析与建模建模Jupyter Notebook%matplotlib inline 将图表显示在Jupyternotebook中Jupyter魔术命令%matplotlib inline 将图表显示在Jupyternotebook中

8、Jupyter魔术命令%matplotlib inline 将图表显示在Jupyternotebook中%timeit 记录一个单元的执行时间Jupyter魔术命令Jupyter魔术命令%matplotlib inline 将图表显示在Jupyternotebook中%timeit 记录一个单元的执行时间%run filename.ipynb 运行另一个notebook或python文件的代码Jupyter魔术命令%matplotlib inline 将图表显示在Jupyternotebook中%timeit 记录一个单元的执行时间%run filename.ipynb 运行另一个notebo

9、ok或python文件的代码%load filename.py 将外部文件的内容拷贝粘贴到单元中import caffeSolverName=/root/workspace“sovler=caffe.AdamSolver(SolverName)test.pyJupyter快捷键可以通过Help Keyboard Shortcuts查看所有的快捷键从命令行转换:从命令行转换:jupyter nbconvert-to python notebook.ipynb从从Notebook导出代码:导出代码:抽取Python代码Jupyter Notebook参考资料 Jupyter官网:https:/ju

10、pyter.org/Jupyter Notebook快速入门:http:/ 一个语句占一行 单个语句占多行,用反斜杠 多个语句在一行,使用分号;分隔 Python使用缩进表示代码块,而不是一对花括号 注释:单行注释用#多行注释用三个单引号 或者三个双引号 将注释括起来Hello World!print函数:print(“Hello World!”)数据类型(1)基本数据类型:数字(number)整数(int):2,59,100,-3 小数(float):0.4,5.0,-0.78 布尔(bool):True,False 字符串(str):”How are you?”,this is a str

11、ing.数据类型(2)容器类型:列表(list):1,2,5,10 元组(tuple):(1,two)集合(set):Mike,John,Marry 字典(dictionary):20120010:98,20120011:89,20120023:100变量 变量在被赋值的时候创建,无需声明 变量可以在任何时候被重新赋值为任何其他类型的值message=“Hello World!”print(message)message=“Hello Python Course!”print(message)type(message)message=3.6print(“Python“,message)type

12、(message)message=100print(“There are“,message,“cars”)type(message)a,b,c,d=20,5.5,True,4+3jprint(type(a),type(b),type(c),type(d)变量命名规则 变量名只能包含字母、数字和下划线。变量名只能以字母或下划线开头。变量名是大小写敏感的。变量名不要使用Python的关键字或函数名下面哪些变量名是不合法的:current balance,current_balance,currentBalance,current-balance,4account,account4,_spam,_S

13、pam,print,hello算术表达式 基本的算术运算符:+、-、*、/、/、%、*5+4#加法4.3-2#减法3*7#乘法2/4#除法,得到浮点数2/4#除法,得到整数17%3#取余2*5#乘方x=3print(type(x)#Prints print(x)print(x+1)print(x-1)print(x*2)print(x*2)x+=1print(x)x*=2print(x)y=2.5print(type(y)#Prints print(y,y+1,y*2,y*2)布尔表达式 True 和 False为预定义值;实际上是整数1 和 0 比较运算符:、=、=、!=,结果是布尔值 布尔

14、运算符:not、and、or12 1312=1212!=13True*120 and 1(3+2)(5-7)(7=6)and(12!=21)t=Truef=Falseprint(type(t)#Prints print(t and f)#Logical AND;print(t or f)#Logical OR;print(not t)#Logical NOT;print(t!=f)#Logical XOR;字符串 字符串用单引号或双引号括起来 使用反斜杠转义特殊字符:n 换行符,t 制表符,三引号用于大块的文本内容a=Hello world!b=Hello world!a=ba=Pers le

15、ctureprint(a)a=One line.nAnother line.print(a)b=One line,another line.print(b)字符串运算36#字符串拼接a=Part 1b=and part 2a+b#字符串重复并拼接s=a*2print(s)#提取子串s0print(s0:4)print(s5:)print(s6:-1)#字符串长度len(s)#子串检测p in sP in sPart in s字符串不能改变37#直接修改字符串会报错s0=B#构建新字符串s=B+s1:Python中的字符串不可修改!hello=helloworld=world“#字符串格式化hw

16、12=%s%s%d%(hello,world,12)print(hw12)如果要改变一个字符串:用旧的字符串片段生成一个新的 如果要生成许多新串,尝试字符串格式化 列表(List)处理能让字符串处理更为有效字符串的方法38s=a string,with stuffs.count(st)#有多少子串?s.find(stu)#寻找子串,如果有,给出子串的位置s.replace(stuff,characters)#替换子串(全部出现过的子串)s.replace(s,X,1)#只替换一次s=3s.isdigit()#是纯数字串吗?字符串有一组内建(built-in)方法 没有方法可以改变原串,有几个方

17、法可以生成新串s=helloprint(s.capitalize()#首字母大写;输出Helloprint(s.upper()#所有字符转换成大写字符;输出HELLOprint(s.rjust(7)#右对齐,左端补空格;输出 helloprint(s.center(7)#居中对齐,左右两端补空格;输出 hello print(world.strip()#去除前后的所有空白符;输出world列表39r=1,2.0,3,5#列表实例,不同的值type(r)#输出r1#通过下标来访问;偏移量为 0 r-1#负的下标代表从尾部开始计数r1:3#列表的片段;给出新的列表w=r+10,19#合并列表;给出

18、另外的一个列表wr#原列表不变;w 和 r 不同t=0.0*10#用重复生成一个初始向量t 有序的对象序列 异质的;可以包含任意类型的对象的混合列表操作40r=1,2.0,3,5r3=word#通过下标改变一个元素(项)r#显示1,2.0,3,wordr0=9,8#列表可以嵌套r#显示9,8,2.0,3,wordr0:3=1,2,5,6#改变列表的一个片段,可以改变列表的长度r#显示1,2,5,6,wordr1:3=#通过设置列表的片段为空集来移除元素r#显示1,6,wordlen(r)#列表的长度,即项的个数,显示36 in r#成员测试,显示Truer.index(6)#搜索并给出位置,如

19、果没有的话,报错,这里显示1列表是可变的,可以改变局部列表的方法(1)41r=1,2.0,3,5r.append(thing)#在列表尾增加一个项r#显示1,2.0,3,5,thingr.append(another,list)#增加的列表被看作一个单一项r#显示1,2.0,3,5,thing,another,listr=1,2.0,3,5r.extend(item,another)#列表的项逐次添加r#显示1,2.0,3,5,item,anotherk=r.pop()#移除最后一项k#显示anotherr#显示1,2.0,3,5,itemr.insert(3,4.0)#在指定位置插入一项r#

20、显示1,2.0,3,4.0,5,itemr.remove(item)#删除一项r#显示1,2.0,3,4.0,5列表的方法(2)42r=2,5,-1,0,20r.sort()r#显示-1,0,2,5,20w=apa,1,2,1234w.sort()#字符串:使用ASCII顺序w#显示1,1234,2,apaw.reverse()#反转列表!w#显示apa,2,1234,1v=w:#首先生成新表v.reverse()#反转这份拷贝v#显示1,1234,2,apaw#显示apa,2,1234,1 使用内建的sort方法:排序是内部进行的,不产生新列表!外部函数sorted,不改变原列表的顺序 ht

21、tps:/ few wordsw=s.split()#基于空白符(空格,新行)切分w#显示a,few,words|.join(w)#对其他串用方法join,显示a|few|words元组44t=(1,3,2)t1#由下标访问,偏移量从0开始,显示3(a,b,c)=t#元组赋值a#显示1b#显示3a,b,c#一个实际上的元组表达式!显示(1,3,2)a,b=b,a#交换值的技巧a,b#显示(3,1)r=list(t)#转换元组为列表r#显示1,3,2tuple(r)#转换列表为元组,显示(1,3,2)和列表一样,除了不可变,即一旦生成,就不可改变某些函数会返回元组集合45student=Tom,

22、Jim,Mary,Tom,Jack,Roseprint(student)#输出集合,重复元素被自动去掉Mary,Jim,Rose,Jack,Tomprint(Rose in student)#成员测试Truea=set(abracadabra)#字符串转换成集合b=set(alacazam)print(a)b,a,c,r,d print(a-b)#a和b的差集b,d,rprint(a|b)#a和b的并集l,r,a,c,z,m,b,dprint(a&b)#a和b的交集a,cprint(a b)#a和b中不同时存在的元素l,r,z,m,b,d一个无序无序的没有重复元素没有重复元素的序列基本功能是进

23、行成员关系测试和删除重复元素,可以进行集合运算字典46h=key:12,nyckel:wordhkey#由键访问,显示12h.has_key(nyckel)#显示TruehPer=Kraulishnyckel:word,Per:Kraulis,key:12#输出顺序是随机的键(键(key)值()值(value)对的无序集合键必须使用不可变类型。可以用数字、字符串或元组,不能用列表在同一个字典中,键必须是唯一的,值不必增加一个键/值替换一个键对应的值hPer=Johansson hnyckel:word,Per:Johansson,key:12字典的方法(1)47h=key:12,nyckel:

24、wordPer in h#测试一个键是否在字典中,显示FalsehPer#报错len(h)#字典中键值对的个数,显示2 h.keys()#字典中所有的键nyckel,keyh.values()#字典中所有的值word,12h.items()#字典中所有的键值对dict_items(key,12),(nyckel,word)h.get(Per,unknown)#返回值,或者返回缺省值,显示unknownh.get(key,unknown)#显示12删除数据的命令:del48a=thing#定义一个变量a#显示thingdel a#把这个变量忘掉a#报错h=key:12,nyckel:wordde

25、l hkey#移除键和它的值h#显示nyckel:wordr=1,3,2del r1#另一个删除列表项的方式r#1,2 命令!不是函数!实际上移除变量(名字),不是对象字典方法(2)49g=h.copy()#拷贝字典del hkeyh#显示nyckel:wordg#显示nyckel:word,key:12hPer=Johanssonh#显示nyckel:word,Per:Johanssonh.update(g)#根据g添加或者更新所有的键值h#显示nyckel:word,key:12,Per:Johanssong.clear()#清除字典中的所有项print(len(g)#显示0 条件语句:i

26、fif condition_1:statement_block_1elif condition_2:statement_block_2else:statement_block_3age=17if age=18:print(You are old enough to vote!)print(Have you registered to vote yet?)else:print(Sorry,you are too young to vote.)print(Please register to vote as soon as you turn 18!)age=12if age 4:print(You

27、r admission cost is$0.)elif age 18:print(Your admission cost is$5.)else:print(Your admission cost is$10.)循环语句:whilewhile condition:statement_blockcurrent_number=1while current_number=5:print(current_number)current_number+=1pets=dog,cat,dog,goldfish,cat,rabbit,catprint(pets)while cat in pets:pets.rem

28、ove(cat)print(pets)循环语句:forfor variable in sequence:statement_blockelse:statement_blockmagicians=alice,david,carolinafor magician in magicians:print(magician.title()+,that was a great trick!)r=for c in this is a string with blanks:#一个字符一个字符地遍历字符串if c=:continue#跳过后面的代码块,继续循环r.append(c)print(.join(r)s

29、quares=for value in range(1,11):squares.append(value*2)print(squares)循环中的break,continue和else53r=1,3,10,98,-2,48for i in r:if i 0:print(input contains negative value!)break#跳出整个循环,包括elseelse:pass#什么都不做else:#如果循环是正常结束的,则执行print(input is OK)break语句跳出循环continue语句结束本轮循环,开始下一轮循环else在循环条件不满足时被执行,被break的循环不

30、执行elsepass语句是空语句,什么都不做,占位语句列表循环与List Comprehension54nums=0,1,2,3,4squares=for x in nums:squares.append(x*2)print(squares)#Prints 0,1,4,9,16nums=0,1,2,3,4squares=x*2 for x in numsprint(squares)#Prints 0,1,4,9,16 nums=0,1,2,3,4even_squares=x*2 for x in nums if x%2=0print(even_squares)#Prints 0,4,16ani

31、mals=cat,dog,monkeyfor idx,animal in enumerate(animals):print(#%d:%s%(idx+1,animal)字典循环与Dictionary Comprehension55nums=0,1,2,3,4even_num_to_square=x:x*2 for x in nums if x%2=0print(even_num_to_square)#Prints 0:0,2:4,4:16d=person:2,cat:4,spider:8for animal in d:legs=danimalprint(A%s has%d legs%(anima

32、l,legs)d=person:2,cat:4,spider:8for animal,legs in d.items():print(A%s has%d legs%(animal,legs)集合循环与Set Comprehension56from math import sqrtnums=int(sqrt(x)for x in range(30)print(nums)#Prints 0,1,2,3,4,5animals=cat,dog,fishfor idx,animal in enumerate(animals):print(#%d:%s%(idx+1,animal)函数def 函数名(参数

33、列表):函数体def greet_user():print(Hello!)greet_user()def greet_user(username):print(Hello,+username.title()+!)greet_user(jesse)def describe_pet(animal_type,pet_name):print(nI have a +animal_type+.)print(My“+animal_type+s name is +pet_name.title()+.)describe_pet(hamster,harry)describe_pet(dog,willie)函数参数

34、的默认值58def describe_pet(pet_name,animal_type=dog):print(nI have a +animal_type+.)print(My“+animal_type+s name is +pet_name.title()+.)describe_pet(willie)describe_pet(pet_name=harry,animal_type=hamster)describe_pet(animal_type=hamster,pet_name=harry)参数可以有默认值 当调用时没有给定参数,会采用默认值 有默认值的参数必须放在参数列表的最后 显式调用参数

35、,可以改变参数顺序函数返回值59def get_formatted_name(first_name,last_name):full_name=first_name+last_namereturn full_name.title()musician=get_formatted_name(jimi,hendrix)print(musician)一个函数不一定要有return语句 实际上,函数默认总会返回一个值:None None 是一个特殊的值,意味着 什么都没有模块60from math import*#导入模块math中的所有函数print(e,pi)print(cos(radians(180

36、.0)print(log(10.0)print(exp(-1.0)将函数存储在被称为模块的独立文件中,再将模块导入到主程序中数学函数在一个单独的模块中import math#导入整个math模块print(math.e,math.pi)print(math.cos(math.radians(180.0)print(math.log(10.0)print(math.exp(-1.0)from math import log,cos#导入math模块中的log和cos函数from math import log as lg#导入math模块中的log函数,起别名lg文件操作:读61f=open(t

37、est.txt)#默认:只读模式line=f.readline()#读一行line#显示This is the first line.nlines=f.readlines()#读所有剩余行lines#显示This is the second.n,And third.n一个文件操作对象由内建函数 open 创建文件对象有一系列函数read:读取整个文件(或者说N 字节),返回一个单独的字符串readline:读取一行(然后跳到新的一行)readlines:读取所有的行,返回一个字符串的列表文件操作:写62w=open(output.txt,w)#写模式(默认写的是文本)w.write(stuff

38、)#并不自动添加新行w.write(n)w.write(moren and even moren)w.close()stuffmoreand even morewrite 函数只是简单地输出给定字符串字符串不一定是ASCII码,二进制串也可以用for循环读取文件63infile=open(test.txt)#只读模式outfile=open(test_upper.txt,w)#写模式;创建文件for line in infile:#遍历文件中的每一行outfile.write(line.upper()infile.close()#并不严格要求;系统会自动执行outfile.close()注意:每行结尾会尾随一个换行符 n 可以使用字符串方法strip或者rstrip去除它参考资料和教程 Python文档:https:/docs.python.org/3/“用Python玩转数据”:https:/www.coursera.org/learn/hipython/Python编程:从入门到实践编程:从入门到实践 第2、3、4、5、6、7、8章

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服