事先声明,这里记录的是我刷二级题时遇到的不熟悉的问题时记录下来的笔记。可能并不适合所有人,仅供参考。
任何问题请联系邮箱:[email protected] (因为不常上网站,所以留言和私信可能无法及时回复)
个人介绍:业余“开发者”一枚,Python为其启蒙语言,但已经很久没有认真写过Python直到不久前突然想考计算机二级,于是慢慢开始刷二级Python题库。
##一、语法或函数
本项主要记录刷题时经常遇到,但我使用较少,或完全没有使用过的语法或函数
以下函数解释多来自于:菜鸟教程
x = "abc"
y = "abc"
print(id(x)==id(y))
输出:True
aList = [123, 'xyz', 'zara', 'abc', 123];
bList = [2009, 'manni'];
aList.extend(bList)
print "Extended List : ", aList ;
输出:
Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
aList = [123, 'xyz', 'zara', 'abc']
aList.insert( 3, 2009)
print "Final List : ", aList
输出:
Final List : [123, 'xyz', 'zara', 2009, 'abc']
lambda 语法
详见:lambda
三元运算:
val = 1 if 条件 else 2
条件为True时val=1
否则=2
下列对象的布尔值都是False:
NONE;
False(布尔类型)
所有的值为零的数
0(整型)
0.0(浮点型)
0L(长整型)
0.0+0.0j(复数)
""(空字符串)
[](空列表)
()(空元组)
{}(空字典)
>>>divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
输出:a-b-c
一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
定义一个异常非常简单,如下所示:
def functionName( level ):
if level < 1:
raise Exception("Invalid level!", level)
# 触发异常后,后面的代码就不会再执行
s = None
if s is None:
raise NameError
print 'is here?' #如果不使用try......except这种形式,那么直接抛出异常,不会执行到这里
>>>str = 'runoob'
>>> str.center(20, '*')
'*******runoob*******'
>>> str.center(20)
' runoob '
print("{0:{2}^{1}}".format("a", 10, "*"))
输出:
****a*****
1、比较字符串是否相同:
==:使用==来比较两个字符串内的value值是否相同
is:比较两个字符串的id值。
2、字符串的长度比较
len():显示字符串的长度,返回数字整型。可以进行长度的比较。
3、使用比较运算符
>、<、> = 、< =、比较的规则为:从第一个字符开始比较,排序在前边的字母为小,当一个字符串全部字符和另一个字符串的前部分字符相同时,长度长的字符串为大。
>>> 2**2**3
256
而非:
>>> 2**2**3
64
运算时先运算 2**3 = 8
再运算 2**8 = 256
file.isatty()
判断文件是否连接到一个终端设备,如果是,返回True,如果否,返回False。
a = [0,1,2,3,4,5,6,7,8,9]
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了
b = a[i:j:s]这种格式呢,i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东
链式比较:
a < b < c 等价于 a < b and b < c
而非 (a < b) < c
for else
当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for循环中含有break时则直接终止循环,并不会执行else子句。
for i in range(10):
if i == 5:
print 'found it! i = %s' % i
else:
print 'not found it ...'
输出:
found it! i = 5
not found it ...
for i in range(10):
if i == 5:
print 'found it! i = %s' % i
break
else:
print 'not found it ...'
输出:
found it! i = 5
注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。
>>> type(pow(2, 3))
>>> type(pow(2.0, 3))
>>> pow(2, 3)
8
>>> pow(2.0, 3)
8.0
>>> 8 == 8.0
True
>>> 8.0 == 8
True
dict = {'Name': 'Zara', 'Age': 27}
print "Value : %s" % dict.get('Age')
print "Value : %s" % dict.get('Sex', "Never")
输出:
Value : 27
Value : Never
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
输出:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
ls =list({'shandong':200, 'hebei':300, 'beijing':400})
print(ls)
输出:
['shandong', 'hebei', 'beijing']
###基本用法
>>>import jieba
>>>ls = jieba.lcut("全国计算机等级考试Python科目")
>>>print(ls)
['全国','计算机','等级','考试','Python','科目']
>>>import jieba
>>>ls = jieba.lcut("全国计算机等级考试Python科目", cut_all=True)
>>>print(ls)
['全国','国计','计算','计算机','算机','等级','考试','Python','科目']
>>>import jieba
>>>ls = jieba.lcut_for_search("全国计算机等级考试Python科目")
>>>print(ls)
['全国','计算','算机','计算机','等级','考试','Python','科目']
>>>import jieba
>>>jieba.add_word("Python科目")
>>>ls = jieba.lcut("全国计算机等级考试Python科目")
>>>print(ls)
['全国,'计算机','等级','考试','Python科目']
###模式选择
搜索引擎模式更倾向于寻找短词语,这种方式具有一定冗余度,但冗余度相比全模式较少。 如果希望对文本准确分词,不产生冗余,只能选择jieba.lcut(s)函数,即精确模式。如果希望对文本分词更准确,不漏掉任何可能的分词结果,请选用全模式。如果没想好怎么用,可以使用搜索引擎模式。
###实例
统计红楼梦词频,并输出前十五的词语和词频
import jieba
f = open("红楼梦.txt", "r")
txt = f.read()
f.close()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1: #排除单个字符的分词结果
continue
else:
counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(15):
word, count = items[i]
print ("{0} {1}".format(word, count))
输出:
宝玉 3748
什么 1613
一个 1451
贾母 1228
我们 1221
那里 1174
凤姐 1100
王夫人 1011
你们 1009
如今 999
说道 973
知道 967
老太太 966
起来 949
姑娘 941
排除无用词语:
excludes = {"什么","一个","我们","那里","你们","如今", \
"说道","知道","老太太","起来","姑娘","这里", \
"出来","他们","众人","自己","一面","太太", \
"只见","怎么","奶奶","两个","没有","不是", \
"不知","这个","听见"}
for word in excludes:
del(counts[word])
###数据结构
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言
程序设计风格:清晰第一,效率第二。
结构化程序设计原则:自顶向下,逐步求精,模块化,限制使用goto语句(Python无 goto 语句)。
模块设计要求:高内聚,低耦合。
面对对象基本特点:继承性、多态性、封装性
软件的概念:
软件包括程序、数据、及相关文档的完整集合。
机器能执行的是程序、数据,不能执行的是文档。
工程化的3个要素:方法、工具、过程
软件的生命周期:提出、实现、使用、维护、停止使用、退役
原则:抽象、信息屏蔽、模块化
具有:局部化、确定性、一致性、完备性、可验证性
在程序流程图中,用带有箭头的线段表示控制流;在数据流程图中,用带有箭头的线段表示数据流。
软件测试目的:尽可能多地发现程序中的错误,不能也不可能证明程序没有错误。
测试方法:白盒测试(测试软件内部方法:逻辑覆盖基本路径测试)黑盒测试(测试软件外部即在软件接口处进行,主要完成软件功能验证方法:等价步、划分法、边界值、分析法、错误推断法、因果图等)
软件设计包括软件的结构、数据接口和过程设计(系统结构部件转换成软件的过程描述)
软件开发模型包括 Ⅰ、瀑布模型 Ⅱ、扇形模型 Ⅲ、快速原型法模型 Ⅳ、螺旋模型Ⅰ、Ⅲ、Ⅳ
软件生命周期的主要活动阶段:需求分析
pip升级pip:pip install -U pip
整数类型有4种进制表示,十进制、二进制(0b)、八进制(0o)、十六进制(0x)
软件需求规格说明书的作用不包括:软件可行性研究的依据
将E—R图转换到关系模式时,实体与联系都可以表示成
数据处理的最小单位是数据项
软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指:系统结构部件转换成软件的过程描述
软件开发离不开系统环境资源的支持,其中必要的测试数据属于:辅助资源
下列路径表示错误的是:F:\PythonTest\abc.txt
可用表示方式:F:\PythonTest\abc.txt F:/PythonTest/abc.txt F://PythonTest//abc.txt
映射类型是“键值”数据项的组合,每个元素是一个键值对,元素之间是无序的。
binary 二进制的
octal 八进制的
hexadecimal 十六进制的
decimal 十进制的
如果改变一个数值类型变量的值,变量的内存地址就会改变
单分支结构指只有if语句,没有else语句的分支结构
以下选项,不属于程序流程图基本元素的是:
A.判断框
B.循环框
C.连接点
D.起始框
答案:B
函数:
函数是一种功能抽象
使用函数后,代码的维护难度降低了
函数名可以是任何有效的Python标识符
使用函数的目的只是为了增加代码复用(错误)
软件开发的结构化生命周期方法将软件生命周期划分成:
定义、开发、运行维护