欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Python学习心得总结.docx

    • 资源ID:1471185       资源大小:40.84KB        全文页数:29页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Python学习心得总结.docx

    。、吩咐行常用吩咐吩咐行(WindoWS下叫“吩咐提示符”,MaC下叫“终谓”)里的常用吩咐。打开吩咐行,我们会看到每行前面都有诸如C:DocumentsandSettingsCrossin>或者MyMacBookcrossin$之类的。这个提示符表示了当前吩咐行所在书目。第一个常用的吩咐是:dir(windows环境下)Is(mac环境下)dir和IS的作用紫不多,都是显示出当前书目下的文件和文件夹。其次个常用吩咐是:cd书目名通过dir或IS了解当前书目的结构之后,可以通过“cd书目名”的方式,进入到当前书目下的子书目里。假如要跳回到上级书目,可以用吩咐:cd.另外,WindOWS下假如要写换盘符,须要输入盘符:比如从c盘切换到d盘C:DocumentsandSettingsCrossin>d:有r以上两个吩咐,就可以在文件书目的迷宫里游荡了。虽然没可视化的书目下的操作那么直观,但是会显得你更像个程序员。于是乎,再说个高阶玩法:现在你可以不用idle那套东西了,随意找个顺手的文本软件,把你的代码写好,保存好,最好是保存成Py文件。然后在吩咐行下进入到Py文件保存的书目,运用吩咐:PythOn程序保存的文件名就可以运行你写的程序了。一、关于分号“广在C、JaVa等语言的语法中规定,必需以分号作为语句结束的标识。Python也支持分号,同样用于一条唐句的结束标识。但在Python中分号的作用已经不像C、JaVa中那么重嘤了,PythOn中的分号可以省略,主要通过换行来识别语句的结束。例如,以下两行代码是等价的:1. print"helloworld!"2. print"helloworld!"第1行代码的输出结果:helloworld!第2行代码的输出结果:helloworld!假如要在一行中书写多条句,就必需运用分号分隔每个语句,否则Python无法识别语句之间的间隔:1. #运用分号分隔语句2. X=1;y=1;Z=I第2行代码有3条赋值语句,语句之间须要用分号隔开。假如不隔开语句,Python说明器将不能正确说明,提示语法错误:SyntaxError:invalidsyntax留意分号不是Python举荐运用的符号,Python倾向于运用换行符作为每条语句的分隔,简洁K门是Python语法的特点通常一行只写一条语句,这样便于阅读和理解程序。行写多条语句的方式是不好的习惯。二、关于迩行符-CR反斜杠似乎不行以,已潮试)PythOn同样支持多行写一条语句,PythOn运用“”作为连行符.在实践中,一条语句写在多行也是特别常见的。【例】把SQ1.语句作为参数传递给函数,由于SQ1.的语句一般特别长,为了阅读便利,因此须要换行书写。1. #字符串的换行2. #写法一3. Sql="selectid,name4. fromdept5. wherename="A"'7. #写法二8. sql="selectid,name"9. "fromdept"o."wherename三'A'".printsql写法一只运用了一对双引球,把SQ1.语句分为SeIeCt、from>Where等3部分分别书写。第6行代码输出结果:selectid,namefromdeptwherename='A,写法二运用3对双引号,select、from、Where分别对应一对双引号。第11行代码输出结果:selectid,namefromdeptwherename='A'其次种写法比第一种写法的可读性更强,可以运用空格和制表符对齐语句,使代码显得更工整。对于简短的语句不举荐换行的写法,这种写法只会造成阅读的困难性。卜.面这段程序是不合理的换行写法:1. #一条语句写在多行2. print3. "helloworld!"第2行第3行代码是一个整体,调用Print输出he11oworld!",这种状况不适合分行书写。三、关于单引号和双引号双引号和单引号都是可以用的,只不过用单引号的时候可以在字符串里面运用双引号。同理,运用双引号时也可以在字符串里面运用单引号先说1个双引号与3个双引号的区分,双引号所表示的字符串通常要写成一行如:si="hello,world"假如要写成多行,那么就要运用(“连行符”),如s2="hello,world"s2与Sl是一样的。假如你用3个双引号的话,就可以干脆写了,如E:s3="""hello,world,hahaha.""",那么s3事实上就是"hello,nworld,nhahaha.",留意“n”,所以,假如你的字符串里n许多,你又不想在字符串中用n的话,那么就可以运用3个双引号。而且运用3个双引号还可以在字符串中增加注稚,如下:s3三hello,#hoho,thisishello,在3个双引号的字符串内可以有注稀峨world,#hoho,thisisworldhahaha."""这里我试过一F,的确可以加注释,不过在PrintS3的时候连注释内容会一起给打印出来SteveJobs'")print(-'Stayhungry,#这里用了三个双引号,没用换行符stayfoolish.-SteveJobs""")这三个输出的结果都是三行:Stayhungry,stayfoolish.SteveJobs(4)print("Stayhungry,stayfoolish.SteveJobs")这个输出的结果是一行:Stayhungry,stayfoolish.SteveJobs四、关于注释符用井号作为注释一行#此处为注释般用E(三个英文引号)也可以注稀多行,不过一般用来表示函数文档IHtII此处是注秣此函数功能为°。五、2MMtTrue和False首字母必Il大写Ithon中的None:None是一个特殊的常量。None和False不同。None不是OoNOne不是空字符串。None和任何其他的数据类型比较恒久返InIFalseeNone有自己的数据类型NoneType0你可以将None复制给任何变最,但是你不能创建其他NoneType对象。六、if语句,ifdifdse语句,while储环,for循环,break和8iItinUeif条件:#留意冒号必需有选择执行的语句#留意这里有四个空格的缩进if,elif,else可组成一个整体的条件语句:if是必需方的;elif可以没力,也可以有许多个,每个elif条件不满意时会进入卜一个elif推断;else可以没有,假如有的话只能有一个,必需在条件语句的最终。ifa三三1:print'onc'elifa=2:print'two'else:print'toomanywhile条件:#留意目号必需有选择执行的语句#留意这里有四个空格的缩进foriinrange(1,101):#i从1取到100printi注:range(x,y,C)表示一个list:x,x+c,x+2c,,y-c.假如没有第三个参数c,默认C=1.breakwhile循环在条件不满意时结束,for循环遍历完序列后结束.假如在循环条件仍旧满意或序列没有遍历完的时候,想要强行跳出循环,就须要用到break语句。ntinuebreak是彻底地跳出循环,而COntinUe只是略过本次循环的余下内容,干脆进入下一次循环C七、支命名规则python在定义一个变墙时不融给它限定类型变属会依据赋给它的值,自动确定它的类型。你也可以在程序中,变更它的值,于是也就变更了它的类型。变量命名时第一个字符必需是字母或者F划线剩卜.的部分可以是字母、下划线或数字(0-9)变最名称是对大小写敏感的,myname和myName不是同一个变盘。八、字符串的输出和运算字符申之间可以通过加法连接起来:strl='good'str2=,bye'print(strl+str2)print('very'+strl)print(strl+,and'+str2)print('Myageis'+str(18)num=18print('Myageis%d,%num)#留意,num可以干脆用18代替,但是num和字符串之间不能加逗号,只能是空格(没方空格也可以)print('Todayis%s.'%'Friday')print(4Priceis%.21,%4.99)留意:%d表示整数,%s表示字符串,%f表示浮点数,%.4f表示带4位小数的浮点数print("%s'sscoreis%d"%(,Mike,87)无论你有多少个值须要代入字符申中进行格式化,只须要在字符串中的合适位置用对应格式的表示,然后在后面的括号中按依次供应代入的值就可以了。占位的和括号中的值在数域上必需相等,类型也要匹配.CMike',87)这种用O表示的一组数据在PythOn中被称为元组(tuple),是python的一种基本数据结构,以后我们还会用到。九、变曹制类型转换int(x)#把X转换成整数float(x)#把X转换成浮点数str()行把X转换成字符串bool(x)#把X转换成bool值例如,以下等式的结果均为真:int('123')=123float(-3.3,)=3.3Str(Ill)='111'bool(0)=Falsebool(,abc')=Truebool('Falsej=Truebool11=False并不是全部的值都能做类型转换,比如int(Wbc)同样会报错,Python没方法把它转成个数。关于bool类型的转换,在Python中,以下数值会被认为是False:为。的数字,包括0,0.0空字符串,包括”,""表示空值的None(None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样)空集合,包括(),(I,其他的值都认为是TrUetl十、函数假如我们要写一个函数,就须要去定义它。Python里定义函数的关健字是def,格式如下:defsayHello():print'helloworld!'我们用SayHello()来调用这个函数.(留意括号必需带着)return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。十一、list列表格式:用中括号包卧逗号隔开的一组元素;列表中的元素可以是不同的类型。例如,range(l,10)或者1,2,3,4,5,6,7,8,9;I=1365,'everyday,0.618,Trueh掾作li8t:1 .访问list中的元素python计数是从0起先,例如I0=365,I=,everyday,2 .修改IiSt中的元素修改HSt中的某个元素,只须要干脆给那个元素赋值就可以了:40=123留意如F例子:c=l,2,3b=ca=cb0=2printa得到a=2,2,3特殊留意:假如用一个IiSt赋值给另一个list,但是想要变更一个IiSt的时候另一个不变,这时御用如卜.赋值方法:a=lf2b=llb0:len(八)=a0:len(八)b.append(3)printa得到1,2printb得到1,2,33 .向list中添加元索IiSt行一个append方法,可以增加元素。以I这个列表为例,调用的方法是:I.aend(1024)#留意这里是小括号输出I,你会看到123,'everyday.,0618,True,1024,1024被添加到了I,成为最终个元索。(第个元索在上步被改成了123。)然后同样可以用I得到1024。4 .删除IiSt中的元素删除IiSt中的某个元素,要用到del:delI0),然后输出I,得到'everyday:0.618,True,1024o这时候再调用,会得到'everyday.,其他元素的序号也相应提前。例子,#=点球小嬉戏=#fromrandomimportchoiceprint'Chooseonesidetoshoot:"printleft,center,right'you=raw_input()printYoukicked'+youdirection='left','center','right'com=choice(direction)print'Computersaved,+comifyou!=com:print'Goal!'else:print'Oops.'5 .求和:例如sum(l,2,3)=6,sum(range(101)=5050IiSt有两类常用操作:索引(index)和切片(SIiCe)用D加序号访问的方法就是索引操作除r指定位置进行索引外,list还可以处理负数的索引,例如1卜1表示1中的最终个元素,卜3表示倒数第3个元素。切片操作符是在。内供应一对可选数字,用冒号分割。目号前的数表示切片的起先位置,冒号后的数字表示切片到哪里结束。同样,计数从。起先。留意,起先位置包含在切片中,而结束位置不包括。例如,I=365,everyday',0.618,True,I1:3得到的结果是'everyday,,O.618o假如不指定第一个数,切片就从列表第一个元素起先。假如不指定其次个数,就始终到最终个元素结束。都不指定,则返回整个列表的一个拷贝。1|:31|1:11:同索引一样,切片中的数字也可以运用负数。比如得到everyday,0.618)十二、字符串的*引和切片(类似IiSt的操作)1 .遍历通过for.in可以遍历字符串中的每一个字符。word三,helloworld'forcinword:printc2 .索引访问通过。加索引的方式,访问字符串中的某个字符。word0)='h'word-2三与list不同的是,字符串不能通过索引访问去更改其中的字符。wordl=a,这样的赋值电错误的。3 .切片通过两个参数,截取一段子串,详细规则和HSt相同Cprintword(5:7printword|:-5printword(:|4 .连接字符join方法也可以对字符串运用,与list的join用法类似。,'.join(word)='h,e,l,l,o,w,o,r,l,d十三、字符串的分割一Ust假设须要把一个句子中的每一个单词拿出来单独处理。sentence='IamanEnglishsentence'这时就须要对字符串进行分割:aentence.splitO字符串.8PIito会把字符串依据其中的空格进行分割,分割后的每段都是一个新的字符串,最终返同这些字符申组成一个IiSa于是得到T,'am','an',English','sentence'除空特别,SPlit()同时也会依据换行符n,制表符t进行分割。所以应当说,8plit默认是依据空白字符进行分得.之所以说默认,是因为SPlit还可以指定分割的符号。比如你有一个很长的字符串section=Hi.Iamtheone.Bye.,通过指定分割符号为可以把每句话分开:section.eplitC.')得到HfJIamtheone','Bye',"o这时候,:作为分割符被去掉了,而空格仍旧保留在它的位置匕留意最终那个空字符串。每个'.'都会被作为分割符,即使它的后面没有其他字符,也会有一个空串被分割出来。例如,aaa二split3)将会得到由四个空串组成的list。十四、连接Hst一字符串join:和split正好相反Join把个IiSt中的全部字符串连接成个字符串,而split是把一个字符串分割成许多字符串组成的Iistojoin的格式有些惊奇,它不是IiSt的方法,而是字符串的方法。忏先须要有一个字符串作为list中全部元素的连接符,然后再调用这个连接符的join方法,join的参数是被连接的list:例如:s=Ii=('apple','pear','orange'fruit=s.join(li)printfruit得到结果apple;pear;Orange'。又例如:".join('hello','world'DJhelloworld',字符串被无缝连接在一起C十一*、元组(tuple)元组(tuple)也是一种序列,和我们用了许多次的list类似,只是元蛆中的元索在创建之后就不解ft修改。例如position=(1,2)geeks=('Sheldon','1.eonard',Rajesh',Howard')都是元蛆的实例。它有和HSt同样的索引、切片、遍历等操作:1. printpostion02. forgingeeks:3. printg1. printgeeksl:3其实我们之前始终在用元组,就是在Print语句中:print,%sis%dyearsold,%('Mike',23)('Mike',23)就是个元组。这是元组最常见的用处。再来看下元组作为函数返回值的例子:1. defget_pos(n):2. return(n2,n*2)得到这个函数的返回值有两种形式,一种是依据返回值元组中元素的个数供应变量:1. X,y=get-os(50)2. printx3. printy这就是我们在开头那句代码中运用的方式。还有一种方法是用一个变成记录返回的元蛆:1. pos=get_pos(50)2. printpos03. printposl十五、读文件新建个文件,就叫它data.txt。在里面随意写上一些话,保存C把这个文件放在接下来你准备保存代码的文件夹下,这么做是为了便利我们的程序找到它。打开一个文件的吩咐很简洁:AIM'文件名这里的文件名可以用文件的完辂路径,也可以是相对路径。因为我们把要读取的文件和代码放在了同一个文件夹下,所以只须要写它的文件名就够了。f=file('data.txt')#留意这里f不是字符串,是文件对象但这步只是打开了一个文件,并没有得到其中的内容。变ItU保存了这个文件,还须要去读取它的内容。你可以通过read()函数把文件内全部内容读进一个字符申中。data=f.read()#这里data是字符串做完对文件的操作之后,记得用CloSeo关闭文件,释放资源。完整程序示例:f=file('data.txt,)data=f.read()printdataf.close()读取文件内容的方法还有:readline#读取一行内容readlines()#把内容按行读取至一个list中去替换程序的其次行,看看它们的区分。十六、写文件打开文件的几种模式:PythOn默认是以只读模式打开文件。假如想要写入内容,在打开文件的时候须要指定打开模式为写入:f-file('output.txt',W)'W就是Writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,假如文件不存在,会自动创建文件C不加参数时,file为你默认为T,reading,只读模式,文件必需存在,否则引发异样。另外还有一种模式是f-filefoutputtxt','a'),其中a,是appending。它也是种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。打开文件还有一种方法,就是。Pen(),用法和file。是一样的。写文件:写入内容的方法同样简洁:1.writefastringyouwanttowrite')write的参数可以是一个字符串,或者一个字符串变成。示例程序:data='Iwillbeinafile.Socool!'out=open('output.txf,wjout.write(data)out.closeQ在你的程序保存书目下,打开output.txt就会看到结果。类似的,Writelines(Iist)#把HSt的每一个元素写成一行没有Writeline(Iist)o十七、处理文件中的数据比如我现在拿到份文档,里面有某个班级里全部学生的平常作业成果。因为每个人交作业的次数不一样,所以成果的数H也不同,没交作业的时候就没有分。我现在须要统计每个学生的平常作业总得分。看下我们的文档里的数据:#scores.txt刘备2335444751关羽607768张飞97998991诂萼亮1001 .先把文件读进来:f=file('scores.txt,)2 .取得文件中的数据。因为每行都是条学生成果的记录,所以用readlines,把每一行分开,便于之后的数据处理:lines=f.readIines()1.closeO提示:在程序中,常常运用Print来查看数据的中间状态,可以便于你理解程序的运行。比如这里你可以PrintHnes,看一F内容被存成了什么格式。3 .对每一条数据进行处理。依据空格,把姓名、每次的成果分割开:forlineinlines:data=line.split()#这里data是list接下来的4、5两个步骤都是针对条数据的处理,所以都是在for循环的内部。1.整个程序最核心的部分到了。如何把个学生的几次成果合并,并保存起来呢?我的做法是:对于每一条数据,都新建一个字符串,把学生的名字和算好的总成果保存进去。最终再把这些字符串起保存到文件中:sum=0forscoreindatal:sum+=int(score)result='%st:%dn1%(dataO,sum)这里几个要留意的点:对于每一行分割的数据,dataO是姓名,data":是全部成果组成的列表。每次循环中,SUm都要光清零。SCore是一个字符串,为了做计算,须要转成整数值int。result,我加了一个制表符t和换行符n,让输出的结果更好看些。5.得到一个学生的总成果后,把它添加到一个IiSt中。results.append(result)#这里results是listresults须要在循环之前初始化results=116最终,全部成果处理完毕后,把results中的内容保存至文件。因为results是一个字符串组成的list,这里我们干脆用writclines方法:output三file('result.txt',w')output.writclincs(rcsults)outpus.close()十八、界祥处理在PythOn中,可以运用try.except语句来处理异样。做法是,把可能引发异样的语句放在try-块中,把处理异样的语句放在except-块中。例如:try:f=file('non-exist.txt')print'!,f.close()except:print,exists.'printDone'十九、字典dictionaryPythOn中的基本类型-字典(dictionarj,):字典这种数据结构有点像我们平常用的通讯录,有个名字和这个名字对应的信息.在字典中,名字叫做“键(key)”,对应的内容信息叫做“值(value)”0字典就是一个键/值对的集合。键/值对用冒号分割,每个对之间用逗号分割,整个字典包括在花括号中。d-kql:ValUe1,key2:value2举个简洁的字典例子:score=萧峰Y95个段誉,:97,虚竹,:89关于字典的健要留意的是:1 .健必Il是唯一的;2 .健只能是饰洁对氟,比如字符串、*RS浮点数、bl值.list就不能作为健,但是可以作为值。3 .python字典中的健/值对没有依次,我们无法用*引访问字典中的某一而是要用健来访问。例如printSCOre,段誉1或者printscore.get(段誉假如你的键是字符串,通过键访问的时候就须要加引号,假如是数字作为健则不用。留意,字典类的get方法是依据给定key找寻对应澳,假如不存在这样的kb,就返回空值NOne4 .字典也可以通过for.in遍历:fornameinscore:printscorename#这里要用中括号或者printscore.get(name)#这里要用小括号留意,遍历的变值中存储的是字典的健。5 .假如耍变更某一项的值,就干脆给这一项赋值:SCOrer虚竹1=916 .增加一项字典项的方法是,给一个新键赋值:SeOrer慕容复'=887 .删除一项字典项的方法是del:delSCOrN萧峰留意,这个健必需已存在于字典中。8 .假如你想新建一个空的字典,只须要:d=U二十、球python自带了功能丰富的标准库,另外还有数量浩大的各种第三方库。运用这些功能的基本方法就是运用模块通过函数,可以在程序里重用代码;通过模块,则可以重用别的程序中的代码。模块可以理解为是一个包含了函数和变量的py文件.在你的程序中引入了某个模块,就可以运用其中的函数和变量。来看一个我们之前运用过的模块:importrandomimport语句告知PythOn,我们要用random模块中的内容。然后便可以运用random中的方法,比如:random.randint(l,10)random.randchoic(1,3,5)留意,函数前面须要加上"random.",这样Python才知道你是要调用random中的方法。想知道random有哪些函数和变量,可以用dir方法:dir(random)假如你只是用到random中的某一个函数或变Iih也可以通过fromimport指明:fromrandomimportrandint;frommathimportpiprintpi等同于importmathprintmath.pi为了便于理解和避开冲突,你还可以给引入的方法换个名字:frommathimportpiasmath_piprintmath_pi二十一、函数的好分数之前我们用过函数,比如:defhello(name):print'hello'+name然后我们去调用这个函数:hello('world)程序就会输出:helloworld假如许多时候,我们都是用WOrkl来调用这个函数,少数状况才会去改参数。那么,我们就可以给这个函数一个默认参数:defhello(name='world'):print'hello'+name当你没有供应参数值时,这个参数就会运用默认值;假如你供应了,就用你给的,这样,在默认状况卜.,你只要调用hello()就可以输出helloworld同样你也可以指定参数:hello(ython'),输出hell。python留意,当函数有多个参数时,假如你想给部分参数供应默认参数,那么这些参数必需在参数的末尾。比如:deffunc(a,b=5)是正确的deffunc(a=5,b)就会出错二十二、数学运算PythOn的数学运算模块叫做math,再用之前,须要importmath1.math包里有两个常城:math.pi圆冏率兀:3.141592.math.e自然常数:2.718281.2.数值运算:math.ceil(x)对X向上取整,比如x=l2,返回2math.floor(x)对X向F取整,比如x=1.2,返回1math.pow(x,y)指数运算,得到X的y次方math.log(x)对数,默认基底为e。可以运用其次个参数,来变更对数的基底.比如math.log(100,10)math.sqrt(x)平方根math.fabs(x)确定值三角函数:math.sin(x)math.cos(x)math.tan(x)math.asin(x)math.atan(x)留意:这里的X是以孤度为单位,所以计算角度的话,须要先换算角度和弧度互换:math.degrees(x)弧度转角度math.radians(x)角度转邮度以上是你平常可能会用到的函数。除此之外,还有一些,这里就不排列,可以去查看正式的完整文档。二十三、类ClaSS和对象.objectclassPerson:def_init_(self,name):self.name=namedefsayHi(self):printHello,mynameis',self.namep=PersonCSwaroop')p.sayHi()_init_函数会在类被创建的时候自动调用,用来初始化类。它的参数,要在儡建类的时候供应(所以定义P时PeraOn后置的括号里有东酉)ff*:前后各有两道F划线

    注意事项

    本文(Python学习心得总结.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开