中国大学moocpython笔记_中国大学MOOC_高级语言程序设计(Python)笔记

一、程序设计基础

1、Python历史

2、Python特点

Python的伪代码(形式语言)更接近于自然语言(自然语言)

胶水语言

3、Python的应用:Google、Youtube等

4、IDE

1)Python是解释性语言(“同声传译”),支持有两种方法使用解释器:交互式模式(interactive

mode)和脚本模式(script mode)。

(1)交互模式:退出exit()

(2)脚本模式:

三种代码格式:源代码py 字节代码pyc 优化代码pyo

代码注释行用#符号开始(用法同C++的//)

注释块:两个三双引号(""")内的代码

2)Spyder集成编程环境

5、基本输入输出语句

①屏幕行输出函数:

print

(,,...),Python2不需要括号。输出占一行。

print后面参数以逗号结尾,则输出变量值后不换行

print后面无参数,则输出一空行。

②键盘输入函数:

Python2和3中input(['']),接收键盘输入,并返回表达式;

Python2中raw_input

(['']),返回值是键盘输入的字符串(若用为数字则需强制类型转换);

input()等价于eval_r(raw_input())。

Python可以一边输入一边赋值。如

num1=int(raw_input())

二、常量变量

1、和C语言相似的转义字符

\n换行newline \'单引号

2、变量名是大小写敏感的,变量名的命名原则也符合一般的标示符规则;变量在使用前必须已经定义(先定义再使用)

Python的变量赋值(变量绑定对象),实际上是将值指向址,同一个值指向同一个址,而址可以映射不同的变量名。这是与其他语言区别的地方

三、数据类型

1、数据类型函数:type()

整数(integer):十进制21 八进制025

十六进制0x15

浮点数(float):1.65 2. .21 2.1E2

布尔数(boolean):布尔值(True False),注意大小写

复数(complex):1+2i

字符串(string):使用单引号、双引号或三引号括起来。三引号(''')括起来时,保留了字符串中的全部信息,包括回车。

2、Python并不需要使用变量前先要类型声明,但在使用前还是需要先初始化赋值

3、类型转换

和C一样,计算中也有自动类型转换:bool→int→float→complex

Python也支持强制类型转换: (),如int

('32'),int(3.9)等(类型转化的类型名不用加小括号,这与C不同)

四、运算符(按运算符优先级排列;除特别声明多为左结合性)

1、算术运算符:

**(乘方,即指数运算,右结合性,如2**2**3==256,而不是64)

*

/(除,除不尽结果用double型输出)

%取余 #(3.0以上版本,除,结果向下取整floor division)

+ -

加减乘除甚至可以用于字符串运算(级联),例如:'very'+'good'、'repeap'*3等

2、关系运算符

①>大于 =大于等于 <=小于等于

==等于 !=(或<>)不等于

②Python与C不一样的是,它可以这样写一个关系表达式1 < a

< 2

3、逻辑运算符

①not逻辑否 and逻辑与 or逻辑或

②逻辑运算的结果是逻辑常量True、False,但在表达式中所有非0数都被运算为True。有些与C不同的:

123 and 456 --> 456

123 or 456 -->123

4、赋值运算符(右结合性)

①= *= /= += -= %= //=

注意Python不支持C语言的自增自减

②Python支持这样的赋值写法:

a,b=1,2

a,b,c=eval_r(raw_input("输入三个数")) #eval用于转换字符为表达式

五、表达式

Python表达式和语句不同,表达式具有一个值,语句没有。

a+1是表达式

a=1是语句

六、控制结构流程图

一)顺序

二)分支

1、if :

elif :

else:

(和C语言不同的是)if、elif、else后面的表达式不用小括号括起来,表达式后面的语句组也不需要用大括号{}括起来(用强制缩进表示程序块),这意味着Python是以一行表示一个语句的(一行上语句过长,可用_续行);若if体中暂没有语句,可用pass占位;语句体只有一句,则可以喝if、elif或else合并为一行

if、elif、else按序检查,若满足其中一个条件,就执行,之后的就跳出if体。

2、条件赋值

=a,if else b

条件成立时,变量值为a,否则为b

三)循环

循环,一般由循环初始值、循环条件、循环动作、更新循环条件等组成

1、while循环和for循环(和C不同)

①while :

else:

②for in

range([,][,]):

else:

for用于已知次数的循环

2、for和while的转换

for和while还是有一些区别的,for是遍历数组值,while则是逻辑值

错在哪里?

右边的while循环,i的终值被多加了1个步长

3、循环控制(和C相同)

break跳出当前循环

continue跳出当次循环

七、函数

一)内置函数——模块

import

math这样的语句用于导入模块(类似C中的头文件、库文件)

●模块中有哪些对象方法属性,可用dir函数,dir

()

●模块的使用,类似于对象的属性、方法的调用(即“点记法”),如math.pi、math.sin()、math.log10()

●此外,还可以用from import

*,来导入模块中所有的对象,在使用时就可以直接使用,不需加和点

import math.tan [as

tg]则引入math中的tan,[并重命名为tg]

二)自定义函数

def ( )

返回值return 。

函数可以有1个或更多个形参,也可以无形参(但括号不能省);形参的作用域为local,可以用global来声明全局变量。

与C不同的一些地方:

①函数在使用前必须已经定义,但在使用前无需像有些高级语言那样声明

②参数指定

关键字赋值:在调用时指出,这样引用时就不受形参位置的影响

函数体内定义另一个函数,并调用。例如定义了一个函数f(big,small),调用时可以这样引用f(small=1,big=3)

缺省参数:

三)递归

一个函数使用时可以调用另一个函数,同样一个函数也可以调用它自己,这就是“递归”。

生活中的递归如老和尚讲故事、德罗斯特效应、两面相对的镜子等;数学上可以用递归编程的有阶乘、斐波那契数列、汉诺塔等。

一个递归函数一般由递归条件(“递”)和递归出口(“归”)构成;递归编程的口诀“掐头去尾留中间”

八、算法

九、数据结构

I、字符串String

一)字符串函数

长度:len()

拼接: +

重复: *n

成员运算符(是否包含,返回True、False): in

遍历: for c in :

二)字符数组的概念和使用

1、

[]

方括号[ ]就是索引运算符

索引号从0开始(整数第一个字符),负索引号从-1开始,即从字符串倒数第一个

2、切片:使用冒号可以引用索引号前后之间的字符串

[start:finish],start:子序列开始位置的索引值 finish:子序列结束位置的下一个字符的索引值

[start:finish:countBy] 间隔切片,countBy缺省为1

my_str='hello world'

my_str[0:11:2]

-->'hlowrd'

countBy为-1时可获得逆字符串

my_str='world'

my_str[::-1]

-->'dlrow' #my_str==my_str[::-1]用于判断单词是否回文

3、不能用字符串索引来改变字符串的值

my_str='hello world'

my_str[1]='l' #错误

但可以使用切片、拼接等方式,如

my_str=my_str[:1]+'a'+str[2:]

三)字符串方法

替换:replace(old,new)

my_str='hello'

my_str.replace('e','a')

-->'hallo'

注意replace方法并没有改变字符串的值,只是输出一个替换的字符串,原字符串还是'hello'

可以用dir(str)查看字符串的更多属性方法

四)字符串比较

可以对两个字符串关系运算,比较ASCII顺序

五)字符串格式化与正则表达式

II、文件File

一)文件打开和关闭

f=open('')

f.close

二)遍历文件行

f=open('names.txt')

for line in f:

f.close

III、列表List

一)=[,,...] ,列表有点像数组,但列表中的元素可以是不同类型的。

和字符串一样,可以通过下标、索引、切片等来引用列表元素,用法也相似,同样支持长度、拼接、重复、成员运算等。但和字符串不同的,列表及其元素是可以改变的。

二)列表内建方法

.append #在列表末尾追加一个元素,相当于列表做加法(+)

.expend([]) #在列表末尾追加一个列表

.insert(,)

.pop() #从后删除一个元素

.remove() #删除指定元素值

.sort() #元素排序

.reverse(() #元素逆序

.swap(,,) #交换元素

三)遍历算平均

for num in :

s+=num

avg=s/len()

四)列表内建函数

sum() #求数值列表的和

max

min

五)查找和排序

1、线性查找

.index() #线性查找元素第一次在列表中出现的位置,若找到返回该值的索引号,反之返回出错信息

线性查找的时间复杂度为O(n)

.find() #类似index,但不同的是找不到子字串时返回-1

2、二分查找

二分查找要先排序

二分查找的时间复杂度为O(log2n)

3、选择排序

即每次遍历将最小值剪切到前面(或将最小值与初始最前面元素交换)

选择排序时间复杂度为O(n2)

4、冒泡排序

每一次遍历都将小值排前,大值排后,循环一次以后,最大的元素被“沉底”;

这样的循环遍历直到遍历时找不到小值在后的元素(即lst(i)>lst(i+1)始终不成立。

冒泡排序的时间复杂度也是O(n2) ,但实际运行时冒泡法往往比选择排序时间少,因为冒泡排序法通常执行的比较操作更少

5、使用内建的排序函数和方法

sorted() 和 .sort() #返回一个拍好序(默认升序)的列表(源列表不变)。它使用了快速排序算法(quicksort),其时间复杂度O(nlogn)

内建排序后面省略了两个参数(key=,reverse=),reverse的缺省值即False

六)嵌套列表(二维列表)

列表 lst = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

这是一个三行四列的嵌套列表

若访问第三行、第二列lst [2][1]

len(lst)的结果是3(“行数”),不是12(总元素个数)

那么如何知道列表的列数呢?len(lst[0])、len(lst[1])、len(lst[2])均可

七)列表推导

lst=[x**2 for x in range(1,10)]

IV、元组Tuple

相当于不可变的列表,用小括号来建立元祖

可以使用索引、切片、len、print、index等方法;不可以使用append、extend、del等

V、字典Dict

1、用大括号来建立字典,字典元素由不可重复的键和值构成;键必须是不可变的且不重复(如整型、浮点型、元祖等不可变类型),值可以是任意类型(如列表等也可以)

my_dict{'Tom':78,'Jim':89,'Mary':80}

2、字典元素存储时并不按输入先后顺序排列,也不按字母顺序排列,所以字典不支持排序。因此,引用字典时应使用键名引用: my_dict['Jerry']=99

3、字典也支持长度函数len、成员运算符in(判断一个“键”是否在字典中,它的时间复杂度为O(1),相比较字符串和列表的O(n),速度更快)等,此外字典还支持以下方法

.items() #获取全部的键-值对

.keys() #获取全部的键

.values() #获取全部的值

.clear() #清空字典

VI、集合Set

1、无序不重复元素(键)值。相当于没有值只有键的字典(所以也可以用{

}建立集合,集合的元素类似于字典的键,其类型应是不可变不重复的,如整型、浮点型、元祖等);和字典一样,集合也没有顺序,不支持排序。

2、集合的创建,使用set函数

x=set()

集合的添加add方法和删除remove方法

x.add('body')

x.remove('body')

3、集合的运算符

& 交集

| 并集

- 差集

== 等于

!= 不等于

in 成员

for key

in set 枚举

VII、类和对象

十、GUI简介

GUI的第三方API库:TKinter、wxPython、PyQt、PyGtk等

from Tkinter import

* #导入GUI库

def changeRelief( )

root=Tk( ) #建立控件

label1=Label(root,text="Hello")

button1=Button(root,text="OK",command=changeRelief) #command=changeRelief事件处理绑定

label.pack( )

button1.pack( )

root.mainloop( )

十二、数据库

数据库管理系统(DataBase Management System,DBMS)

商业系统:Oracle、Microsoft SQL Server、IBM DB2等

开源(Open Source)系统:MySQL、PostgreSQL、SQLite等

其中,SQLite3版本的基本用法:

1、安装:将zip解压即可

2、创建或打开数据库

sqlite3

test.db

3、创建一个表creat

sqlite > creat table

(name,num,phone)

4、插入一行(记录)

sqlite > insert into

values('Zhang',1,'13150201234');

5、查询

select from

select from where

id=

select from where id

like

6、删除delete

delete from

7、修改update

update set Attribue=NEW

8、在Python中使用SQLite3

import sqlite3

con=sqlite3.connect('test.db')

cur=con.cursor() #创建一个游标

cur.execute('select * from student')

rows=cur.fetchall()

for row in rows:

print row

十三、Web编程基础

Django

1、安装

python setup.py install

>djang-admin.py startproject mysite

2、运行

>python manage.py runserver

3、创建应用

python manage.py startapp addr_book

编辑addr_book

4、模板

HTML语言

模板不是必须的,可以将HTML代码写在视图中,但是这样不便于改动和分工(可以由专门的美工负责设计网页)。

5、模型

数据库

HTML表单

模型不是必须的,可以将数据库操作代码写在视图中,但是这样不便于切换到新的数据库,需要针对新的数据库修改代码。有了模型,切换数据库仅需要修改

settings.py 即可。

【相关网站】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html调用chr,FpHtmlEnCode 函数之标题过滤特殊符号的代码

FpHtmlEnCode 函数之标题过滤特殊符号的代码更新时间&#xff1a;2007年09月01日 22:11:50 作者&#xff1a;函数名&#xff1a;FpHtmlEnCode作 用&#xff1a;标题过滤参 数&#xff1a;fString ------字符串Function FpHtmlEnCode(fString)If IsNull(fString)False or fS…

html怎么给code标签添加语言,html code标签怎么用?html code标签的作用解释

本篇文章主要的讲述了关于HTML code标签的用法解释&#xff0c;和HTML code标签的用法实例&#xff0c;最后还有code标签的总结。接下来让我们一起来看这篇文章吧首先我们先看看html code标签的用法解释:标签用于表示计算机源代码或者其他机器可以阅读的文本内容。软件代码的编…

git ssh创建分支_将git项目导入GitHub的方法(附创建分支)

前言&#xff1a;我们应该很多都会有自己的私有项目,大多情况都是存放在自己的硬盘中,今天我分享一下怎么讲自己的私有项目更新到GitHub上,这样再也不用担心项目丢失了。一&#xff1a;下载git下载链接二&#xff1a;生成.ssh下载git安装以后了我们右键单击桌面选择Git Bash He…

删除目录文件html代码,ASP创建目录、删除目录,删除文件代码范例

网站开发项目中对文件的操作是必不可少的&#xff0c;例如&#xff1a;生成HTML静态页的时候要创建HTML文件&#xff0c;生成目录文件夹&#xff0c;删除的时候删除相应的文件与目录。下面跟大家分享&#xff1a;ASP创建目录、删除目录&#xff0c;删除文件。ASP创建目录、删除…

vgc机器人编程1到13题_工业机器人编程与实操-期末试题

ABB机器人考试试题姓名&#xff1a;李智鹏班级&#xff1a;工业机器人161一、判断题(Y/N)正确填Y错误填N1&#xff0e;机械手亦可称之为机器人。(Y)2&#xff0e;完成某一特定作业时具有多余自由度的机器人称为冗余自由度机器人。(Y)3、关节空间是由全部关节参数构成的。(Y)4、…

为什么到处都在推python_Python为什么能取得越来越超然的地位

展开全部Python在人工智能领域的e69da5e887aa62616964757a686964616f31333365643632应用2016年开发语言使用情况统计机器学习与数据科学领域各语言的雇主招聘指数对比上图是利用美国职位搜索引擎 indeed.com得出的机器学习、数据科学招聘趋势&#xff0c;我们可以清楚看出&…

uploadify插件html5,免费的HTML5版uploadify送上

相信有不少同学用过uploadify这一款文件上传插件&#xff0c;它支持多文件选择、能显示进度条、可配置性高&#xff0c;总体来说是比较好用的。官网有两个版本供下载&#xff0c;分别是flash版和HTML5版。不过令人惋惜的是&#xff0c;HTML5版是收费的。活了这么多年&#xff0…

gensim提取一个句子的关键词_聊一聊 NLPer 如何做关键词抽取

微信公众号&#xff1a;NLP从入门到放弃​有兴趣的去github看更多NLP相关知识总结&#xff1a;https://github.com/DA-southampton/NLP_ability​github.com关键词的提取&#xff0c;也可以称之为文本标签提取。比如说&#xff0c;”今天这顿烧烤是真不错啊“&#xff0c;在这句…

网页挂码方式html css,CSS代码 解决网页挂马问题

CSS代码 解决网页挂马问题发布时间&#xff1a;2009-10-01 02:13:24 作者&#xff1a;佚名 我要评论两行CSS来解决网页挂马问题&#xff0c;共5种方案。两行CSS来解决&#xff0c;共5种方案一、iframe{n1ifm:expression(this.srcabout:blank,this.outerHTML);}/*这行代码是…

华为可以看游戏时长吗_怎么测试华为手机玩游戏的帧率情况

有的人会问&#xff0c;怎么来测试手机玩游戏的帧率情况&#xff1f;其实很简单&#xff0c;这是我第一次安装的原话&#xff0c;结果发现问题并不那么容易&#xff0c;我们之前通俗使用的测试软件要么不准、要么就太单方面啦&#xff0c;现在我们有了快否这个工具后&#xff0…

计算机应用基础的听课记录,听课记录-计算机应用基础

听课记录-计算机应用基础-Excel 2003的条件格式的应用3.单击“条件格式”对话框中的“格式”按钮&#xff0c;弹出“单元格格式”对话框&#xff0c;设置字形为加粗&#xff0c;颜色为红色&#xff0c;底纹为黄色。4.单击“确定”按钮&#xff0c;返回“条件格式”对话框。 二、…

微型计算机原理risc,微型计算机原理习题及解答-20210409003329.docx-原创力文档

????????微机原理习题1、微处理器、微型计算机和微型计算机系统三者之间冇什么不同&#xff1f;答&#xff1a;微型计算机系统&#xff1a;包括微型计算机的硬件系统利必箜的系统软件。微型计算机的换件系统包括&#xff1a;微型计算机和外例设备.微型计算机&#xff1…

请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...

单片机C语言编程中&#xff0c;定时器的初值对于初学者真的是比较不好计算&#xff0c;因此我总结了以下几种方法。第1种方法&#xff1a;#define FOSC 11059200L //晶振的频率#define TIMS (65536-FOSC/12/1000) //12T mode 对于8051系列单片机通用//#define TIMS (65536-FOSC…

fortify hp 价格_惠普推出“惠普Fortify软件安全中心套件”

近日&#xff0c;惠普今天宣布推出一套自动化和管理企业应用安全的新产品&#xff0c;包括唯一一款整合的应用安全测试解决方案&#xff0c;既可以在企业内部部署&#xff0c;也可以按需使用支持成千上万种的应用漏洞扫描。应用漏洞给企业带来巨大威胁&#xff0c;使企业遭受日…

计算机科学系小学教育专业就业前景,小学教育专业就业方向与就业前景

【导语】现在大学生就业形势越来越严峻&#xff0c;在填报志愿时&#xff0c;如果不是特别喜欢某一专业的话&#xff0c;选一个好就业的专业就显得尤为重要了&#xff0c;就业的专业排名是很多考生和家长朋友们关心的问题&#xff0c;以下是无忧考网整理的小学教育专业就业方向…

java绘制图形代码_ImagePy_Learn | 图形学绘制代码学习:core\draw\polygonfill.py

最近在学图形学绘制&#xff0c;想到了ImagePy框架的ROI涂抹交互很方便&#xff0c;于是啃起了绘制代码。这里主要对ImagePy中一个填充工具进行难点讲解。让我们好好学习Python中的图形学绘制吧。例子代码来源&#xff1a;https://github.com/Image-Py/imagepy/blob/master/ima…

2017qs计算机专业排名,2018年度QS世界大学专业排名|2017QS精算专业排名

出国留学网权威发布2016年度QS世界大学专业排名&#xff0c;更多2016年度QS世界大学专业排名相关信息请访问出国留学网。传播学/媒体研究 Communication&Media Studies001南加州大学University of Southern California002威斯康星大学麦迪逊分校University of Wisconsin-Ma…

曲奇云盘资源搜索引擎_曲奇云盘下载-曲奇云盘官网版v3.2.4-sosyes

手机里面有太多的文件存储不下&#xff0c;不舍得舍弃&#xff0c;不妨下载曲奇云盘进行存储&#xff0c;将会在这为你带来更多云盘服务&#xff0c;你可以在这了解到更多资源下的存储服务&#xff0c;还可以在这进行免费空间下的拓展&#xff0c;为你带来更多文档线上的观看服…

计算机管理中添加用户属性,如何在计算机右键菜单栏中添加属性选项

如何在计算机右键菜单栏中添加属性选项电脑是现在最常用的工具之一&#xff0c;有些用户想知道如何在计算机右键菜单栏中添加属性选项&#xff0c;接下来小编小编就给大家介绍一下具体的操作步骤。具体如下&#xff1a;1. 首先第一步按下【winr】快捷键打开【运行】窗口&#x…

mo汇编指令_汇编指令大全

一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把…