中国大学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、基本输入输出语句
①屏幕行输出函数:
(,,...),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 即可。
【相关网站】
中国大学moocpython笔记_中国大学MOOC_高级语言程序设计(Python)笔记相关推荐
- 中国云计算市场排名_中国云计算市场排名第一
百度智能云位列中国云计算市场前四 | 美通社在Canalys发布中国云计算市场2021年第二季度报告中,百度智能云排名前四,Q2环比增速高于整个市场水平.百度近期发布的Q2财报,百度智能云第二季度营收 ...
- 中国药典 android,中国药典在线查询_中国药典v2.05.03安卓版
中国药典app是一款中医药典软件,这里有大量中医药知识,以及专家为你解答问题,让你可以学习权威的中医知识,使用起来非常方便,喜欢的朋友欢迎下载. 中国药典app介绍 <中国药典>是药品研制 ...
- tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)
1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...
- 中国大学moocpython笔记_[转载]中国大学MOOC_高级语言程序设计(Python)笔记
一.程序设计基础 1.Python历史 2.Python特点 Python的伪代码(形式语言)更接近于自然语言(自然语言) 胶水语言 3.Python的应用:Google.Youtube等 4.IDE ...
- 中国大学moocpython笔记_中国大学MOOC的APP(慕课)用Python玩转数据章节答案
I like the weather there. It's always ____.[ ]A. sunny B. snowingC. funnyD. raining 用所给单词的正确形式填空.1. ...
- 中国大学moocpython笔记_中国大学MOOC慕课用Python玩转数据章节答案
[单选题]零件上每个表面都要加工时应以加工余量和公差()的表面作为粗基准. A. 最小的 B. 最大的 C. 符合公差范围 D. 任何 智慧职教: 在Linux中创建分区的命令是 应当调整指定定密责任 ...
- 中国大学moocpython笔记_中国大学MOOC慕课2020年用Python玩转数据题目答案
[填空题] 减压蒸馏就是借助降低系统压下使()下降,在较低压力下沸腾,以达到降低精馏操作温度的目的. [填空题] 煤焦油可分为低温焦油和高温焦油,冶金厂一般处理的是()焦油. [填空题] 中温沥青软化 ...
- moocpython答案_中国大学慕课moocPython游戏开发入门答案
中国大学慕课moocPython游戏开发入门答案 更多相关问题 图中表示北半球气旋的是() 右图是"我国某天气系统在某地过境时的气压与风速随时间变化规律图",1.该天气现象是A.大 ...
- python高级语言特长_中国大学慕课mooc_高级语言程序设计(Python)CAP_章节测试答案...
参考答案如下 值班驾驶员应对驾驶台有关设备作定期检查,中国P章以确保().①手动操舵或自动舵按船舶正确的航向行驶:②每班应至少测定一次标准的罗经误差:③每班至少试验一次自动舵的手动操作. 大学Hous ...
最新文章
- Resin install document
- Nginx学习之五:Nginx第三方模块
- mysql用if判断关联的表_mysql表连接,子查询以及if判断
- iOS 玩转CocoaPods
- MySql 存储大量长字节 Text报错处理办法
- 虹软2.0 离线人脸识别 Android 开发 Demo
- Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
- python 反编译exe
- html中背景图片等比例缩放,CSS实现响应式全屏背景图+用CSS3实现全屏按比例缩放背景图片...
- 2.1 Apache Hadoop、HDFS - Apache Hadoop概述
- 人脸及指纹双重识别门禁系统
- Delphi 字体修改一例 (转)
- Activiti流程引擎架构概述
- 工具说明书 - 如何画时间轴(Timeline)
- 我的世界服务器怎么制作头颅,我的世界怎么用指令弄自己的头颅 | 手游网游页游攻略大全...
- Cesium 中的离屏渲染
- [精]Oracle 内存结构详解
- DTCC2014:钱岭:电信运营商大数据平台和应用实践
- ImageJ工具的使用
- 【2017年第3期】“云治理”设想
热门文章
- WinForm 图片变灰方法
- 2.2. 3.调度算法的评价指标
- 【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)
- 哔哩哔哩n倍速播放视频
- Leetcode--41. 缺失的第一个正数
- oracle的删除的row如何,Oracle 删除大表中部分数据
- unordered_map使用自定义enum作为键值
- 截取字符串的函数_常用的Excel函数
- ajax datatype_Ajax的基本使用
- samba安装_Centos安装Samba