Python的伪代码(形式语言)更接近于自然语言(自然语言)
1)Python是解释性语言(“同声传译”),支持有两种方法使用解释器:交互式模式(interactive
三种代码格式:源代码py 字节代码pyc 优化代码pyo
代码注释行用#符号开始(用法同C++的//)
注释块:两个三双引号(""")内的代码
print后面参数以逗号结尾,则输出变量值后不换行
print后面无参数,则输出一空行。
(['']),返回值是键盘输入的字符串(若用为数字则需强制类型转换);
Python可以一边输入一边赋值。如
1、和C语言相似的转义字符
2、变量名是大小写敏感的,变量名的命名原则也符合一般的标示符规则;变量在使用前必须已经定义(先定义再使用)
Python的变量赋值(变量绑定对象),实际上是将值指向址,同一个值指向同一个址,而址可以映射不同的变量名。这是与其他语言区别的地方
1、数据类型函数:type()
字符串(string):使用单引号、双引号或三引号括起来。三引号(''')括起来时,保留了字符串中的全部信息,包括回车。
2、Python并不需要使用变量前先要类型声明,但在使用前还是需要先初始化赋值
('32'),int(3.9)等(类型转化的类型名不用加小括号,这与C不同)
四、运算符(按运算符优先级排列;除特别声明多为左结合性)
**(乘方,即指数运算,右结合性,如2**2**3==256,而不是64)
/(除,除不尽结果用double型输出)
②Python与C不一样的是,它可以这样写一个关系表达式1 < a
②逻辑运算的结果是逻辑常量True、False,但在表达式中所有非0数都被运算为True。有些与C不同的:
4、赋值运算符(右结合性)
注意Python不支持C语言的自增自减
②Python支持这样的赋值写法:
Python表达式和语句不同,表达式具有一个值,语句没有。
(和C语言不同的是)if、elif、else后面的表达式不用小括号括起来,表达式后面的语句组也不需要用大括号{}括起来(用强制缩进表示程序块),这意味着Python是以一行表示一个语句的(一行上语句过长,可用_续行);若if体中暂没有语句,可用pass占位;语句体只有一句,则可以喝if、elif或else合并为一行
if、elif、else按序检查,若满足其中一个条件,就执行,之后的就跳出if体。
条件成立时,变量值为a,否则为b
循环,一般由循环初始值、循环条件、循环动作、更新循环条件等组成
for用于已知次数的循环
for和while还是有一些区别的,for是遍历数组值,while则是逻辑值
右边的while循环,i的终值被多加了1个步长
3、循环控制(和C相同)
break跳出当前循环
math这样的语句用于导入模块(类似C中的头文件、库文件)
●模块中有哪些对象方法属性,可用dir函数,dir
*,来导入模块中所有的对象,在使用时就可以直接使用,不需加和点
函数可以有1个或更多个形参,也可以无形参(但括号不能省);形参的作用域为local,可以用global来声明全局变量。
①函数在使用前必须已经定义,但在使用前无需像有些高级语言那样声明
关键字赋值:在调用时指出,这样引用时就不受形参位置的影响
函数体内定义另一个函数,并调用。例如定义了一个函数f(big,small),调用时可以这样引用f(small=1,big=3)
一个函数使用时可以调用另一个函数,同样一个函数也可以调用它自己,这就是“递归”。
生活中的递归如老和尚讲故事、德罗斯特效应、两面相对的镜子等;数学上可以用递归编程的有阶乘、斐波那契数列、汉诺塔等。
一个递归函数一般由递归条件(“递”)和递归出口(“归”)构成;递归编程的口诀“掐头去尾留中间”
二)字符数组的概念和使用
方括号[ ]就是索引运算符
索引号从0开始(整数第一个字符),负索引号从-1开始,即从字符串倒数第一个
2、切片:使用冒号可以引用索引号前后之间的字符串
3、不能用字符串索引来改变字符串的值
但可以使用切片、拼接等方式,如
注意replace方法并没有改变字符串的值,只是输出一个替换的字符串,原字符串还是'hello'
可以用dir(str)查看字符串的更多属性方法
可以对两个字符串关系运算,比较ASCII顺序
五)字符串格式化与正则表达式
一)=[,,...] ,列表有点像数组,但列表中的元素可以是不同类型的。
和字符串一样,可以通过下标、索引、切片等来引用列表元素,用法也相似,同样支持长度、拼接、重复、成员运算等。但和字符串不同的,列表及其元素是可以改变的。
.append #在列表末尾追加一个元素,相当于列表做加法(+)
.index() #线性查找元素第一次在列表中出现的位置,若找到返回该值的索引号,反之返回出错信息
线性查找的时间复杂度为O(n)
二分查找的时间复杂度为O(log2n)
即每次遍历将最小值剪切到前面(或将最小值与初始最前面元素交换)
选择排序时间复杂度为O(n2)
每一次遍历都将小值排前,大值排后,循环一次以后,最大的元素被“沉底”;
这样的循环遍历直到遍历时找不到小值在后的元素(即lst(i)>lst(i+1)始终不成立。
冒泡排序的时间复杂度也是O(n2) ,但实际运行时冒泡法往往比选择排序时间少,因为冒泡排序法通常执行的比较操作更少
5、使用内建的排序函数和方法
六)嵌套列表(二维列表)
这是一个三行四列的嵌套列表
len(lst)的结果是3(“行数”),不是12(总元素个数)
相当于不可变的列表,用小括号来建立元祖
1、用大括号来建立字典,字典元素由不可重复的键和值构成;键必须是不可变的且不重复(如整型、浮点型、元祖等不可变类型),值可以是任意类型(如列表等也可以)
2、字典元素存储时并不按输入先后顺序排列,也不按字母顺序排列,所以字典不支持排序。因此,引用字典时应使用键名引用: my_dict['Jerry']=99
3、字典也支持长度函数len、成员运算符in(判断一个“键”是否在字典中,它的时间复杂度为O(1),相比较字符串和列表的O(n),速度更快)等,此外字典还支持以下方法
1、无序不重复元素(键)值。相当于没有值只有键的字典(所以也可以用{
}建立集合,集合的元素类似于字典的键,其类型应是不可变不重复的,如整型、浮点型、元祖等);和字典一样,集合也没有顺序,不支持排序。
2、集合的创建,使用set函数
集合的添加add方法和删除remove方法
其中,SQLite3版本的基本用法:
1、安装:将zip解压即可
模板不是必须的,可以将HTML代码写在视图中,但是这样不便于改动和分工(可以由专门的美工负责设计网页)。
模型不是必须的,可以将数据库操作代码写在视图中,但是这样不便于切换到新的数据库,需要针对新的数据库修改代码。有了模型,切换数据库仅需要修改