python 二级选择题总结[上]

1.python 生态第三方库归纳

用于数据分析方面的第三方库有:numpy、scipy、pandas、Seaborn

用于Web开发框架方面的的有:Flask、Django、Pyramid、Tornado、WeRoBot(微信小程序)

用于视图可视化的有:mayavi、matplotlib、TVTK

用于网络爬虫的有:scrapy、requests、Pyspider

用于用户图形界面(GUI)的有:PyQt5、wxPython、PyGTK、turtle(但turtle属于标准库,不是第三方库)

数据存储:redis-py

自然语言处理:NLTK

人工智能领域:PyTorch、MXNet、Keras

视觉领域:OpenCV、Luminoth

深度学习方向的第三方库是:TensorFlow、Scikit-learn、Theano、MXNet、Caffe2、Keras、Pandle、PyTorch、Neon

机器学习灵域:Tensorflow、Theano、scikit-learn

文本处理(office办公):openpyxl、SnowNLP、dfminer、python-docx、beautifulsoup4、python-pptx

安装:pip(第三方安装工具)

将Python脚本程序转变为可执行程序的第三方库是: PyInstaller

图像处理:PIL

艺术类:wordcloud(生成词云)、MyQR(生成二维码)、jieba(中文分词)

游戏开发方向的第三方库是:Pygame、Panda3D、cocos2d、Arcade(图形)、FGMK、Panda3d

Python支持符号计算的第三方库是:SymPy

用于硬件开发的第三方库是:Pyserial

2.基础知识类


Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但名字的首字符不能是数字,标识符中间不能出现空格,长度没有限制。



A答案错再“所有代码都需要缩进”,Python语言采用严格的缩进来表示程序逻辑。
缩进指每行语句开始前的空白区域,用来表示Python程序间的包含和层次关系。
一般代码不需要缩进,顶行编写且不留空白。当表示分支、循环、函数、类等程序含义时,在if、while、for、def、class等保留字所在完整语句后通过英文冒号(:)结尾并在之后进行缩进,表明后续代码与紧邻无缩进语句的所属关系。



len(x)返回字符串x的长度,一个中文字符和一个西文字符的长度都记为1。单个\表示为转义字符,而"\0"表示一个空格,长度记为1,所以字符串长度为5。



B答案是错误的,因为python的生态十分丰富和宽泛,单单就论第三方库就有十几万了,所以它涉及的领域非常宽广和全面,而不是这里强调“主要用作”。

Python语言是一种被广泛使用的高级通用脚本编程语言,具有通用性,可以用于几乎任何与程序设计相关应用的开发,不仅适合训练编程思维,更适合诸如数据分析、机器学习、人工智能、web开发等具体的技术领域。



这题主要考的的是运算符的优先级,关键在于弄懂整除的意思(向下取整)。

我们先算括号里面的所以:
x = 2 + 9 * 28 // 10
   = 2 + 252 // 10
   = 2 + 25
   = 27



常识送分题:什么是源文件?即我们编写的代码保存为文件后的结果。


python关键字即(保留字)如下图(共33个):

while with yield
and as assert break class continue
for from False global if import
in is lambda nonlocal not None
or pass raise return try True
def del elif else finally except


双等号==用于判断值是否相等,判断后的结果是True(真)或False(假),分别对应值相等或值不相等。左侧是浮点数运算结果为0.30000000000000004,右侧结果为0.3,值不相等,所以输出False。

至于为什么不是0.3,这涉及到计算机的浮点数定义,大家可以用python自带的idle数去测试下,0.1+0.2到底是等于0.3还是0.30000000000000004


Python字符编码可以使用ASCII编码和Unicode编码。

记忆小技巧:
chr 将数字转变为字符 ,为了和ord区分,避免混淆记不住,
我们可以单独就记一个chr就好了,ch即change的缩写,r则是str的缩写
还有小写字母的ASCII编码大于大写字母ASCII编码


complex(r,i)函数的作用是创建一个复数r+i*1j,其中i可以省略。



表达式中的运算符中,幂的运算级最高,所以先计算4**2

3*4**2//8%7
=3*16//8%7
=48//8%7
=6%7
=6
6对7求余求不了,保留原来。


[N:M]切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。

简单点理解就是[N:M]切片,包头不包尾,D答案就是错在(包含N和M),正确的说法应该是包含N不包含M。



常识题



高级语言根据计算机执行机制的不同可分成两类:静态语言和脚本语言,静态语言采用编译方式执行,脚本语言采用解释方式执行(如果用过python的debuger调试工具,就可以清晰看到python语言是一行一行解释执行的,和js脚本语言一样)。



IPO模式包括输入(input)、输出(output)和处理(process)。



Python中使用print()函数打印输出,是最常见的一个函数。字符串是字符的序列表示,根据字符串内容多少分为单行字符串和多行字符串。单行字符串由一对单引号或双引号作为边界表示;多行字符串由一对三单引号或三双引号作为边界表示。



二进制整数以0b引导,由字符0和1组成。



Python语言中的浮点数类型必须带有小数部分,小数部分可以是0。
我们认为的浮点数就是有小数点的,小数部分可以是0,比如3.000,4.0



Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但名字的首字符不能是数字,标识符中间不能出现空格,长度没有限制。



解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。执行解释的计算机程序成为解释器。

我们用过调试工具就知道,它是逐行运行的,而不是一次性。



一般代码不需要缩进,顶行编写且不留空白。当表示分支、循环、函数、类等程序含义时,在if、while、for、def、class等保留字所在完整语句后通过英文冒号结尾并在之后进行缩进,表明后续代码与紧邻无缩进语句的所属关系。

代码编写中,缩进可以用Tab键实现,也可以用多个空格(一般是4个空格)实现,但两者不混用。不会增加编程难度。

Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但首字符不能是数字。

Python保留字是大小写敏感的,True是保留字,true不是。


sum不是保留字,可以被当做变量使用。


[N:M]切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。反向从-1开始,正向从0开始。

A答案:tstr[-6:6]表示截取字符串反向第6个字符v到正向第7个字符s(不包括s)之间的字符,即vi。
B答案:截取到的是is
C答案:截取到的是vis
D答案:visi


id()函数是Python内置函数之一,作用是获取对象的内存地址,返回对象的内存地址(是一个正整数)。



Python语言的三个重要特点:
(1)通用性:Python语言可以用于几乎任何与程序设计相关应用的开发,不仅适合训练编程思维,更适合诸如数据分析、机器学习、人工智能、Web开发等具体的技术区域。
(2)语法简洁。
(3)生态高产:Python解释器提供了几百个内置类和函数库,此外,世界各地程序员通过开源社区贡献了十几万个第三方函数库。
除此之外,还有一些具体特点:
(1)平台无关。
(2)强制可读。
(3)支持中文。



TypeError表示类型错误。



count不是保留字,可以被当做变量使用。



eval()函数将去掉字符串最外侧的引号,并按照Python语句执行去掉引号后的字符内容。运算符//表示计算整数商,500//10结果为50。



type(x)函数对变量x进行类型判断,type('45')输出为<class 'str'>,type(type('45'))输出为<class 'type'>。


**是数值运算操作符,x**y表示x的y次幂。
+=是增强赋值操作符,x+=y等价于x=x+y。
&是按位与运算符,参与运算的两个二进制值,如果两个相应位都为1,则该位的结果为1,否则为0。


do不是保留字,d开头的保留字只有def和del。



Python语言使用保留字try和except进行异常处理。



[N:M]切片操作,包含N,不包含M


加法运算级最低的,其余平级。
这里5%6求不了余,保留为5.
所以就是
3 + 5 * 2 // 8
=3 + 10 // 8
=3 + 1
=4


**是数值运算操作符。
&是按位与运算符,&=则是对应的二元操作符。
^是按位异或运算符。



保留字大小写敏感,True和False是保留字,true和false不是保留字。



if不用于异常处理逻辑,用于分支结构。
异常处理4兄弟:try - except - else - finally


Python语言的三个重要特点:
(1)通用性:Python语言可以用于几乎任何与程序设计相关应用的开发,不仅适合训练编程思维,更适合诸如数据分析、机器学习、人工智能、Web开发等具体的技术区域。
(2)语法简洁。
(3)生态高产:Python解释器提供了几百个内置类和函数库,此外,世界各地程序员通过开源社区贡献了十几万个第三方函数库。
除此之外,还有一些具体特点:
(1)平台无关。
(2)强制可读。
(3)支持中文。



Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但首字符不能是数字。


3.文件处理类


Python语言中写文件的操作方法:
f.write(s):向文件写入一个字符串或字节流。
f.writelines(lines):将一个元素为字符串的列表整体写入文件。



当文件以文本方式打开时,读写按照字符串方式;当文件以二进制方式打开时,读写按照字节流方式。

你可以这样理解,比如我们打开一个.txt文本,我们看得懂的就是字符串写出来的,而不是二进制形式0101表达的那种。



二维数据,也称表格数据,由关联关系数据构成,采用二维表格方式组织,对应于数学中的矩阵,常见的表格属于二维数据。

这里A答案错在“通用”2个字上,存储二维数组的形式有很多,比如json格式,csv格式即逗号分隔值,详情要去学习csv内置模块。

关于一维数据和二维数据图解:


二维数据


split()通过指定分隔符对字符串进行切片。
join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
replace()方法把字符串中的old(旧字符串)替换成new(新字符串)。
format()方法用于解决字符串和变量同时输出的格式安排问题。



str(x):将x转换为等值的字符串类型。
fo.write(s):向文件写入一个字符串或字节流。
f.writelines(lines):将一个元素为字符串的列表整体写入文件。
代码执行后的输出结果为['book','23','201009','20'],你可能很好奇为什么 fo.write(s)方法最后输出了列表,这是因为ls = ['book','23','201009','20']本身是个列表,所以直接输出了。



创建写模式x,文件不存在则创建,存在则返回异常FileExistsError。

拓展:
r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


逗号分隔的存储格式叫作CSV格式(逗号分隔值),是一种通用的、相对简单的文件格式,用途广泛,主要用于不同程序之间的数据交换;CSV文件不需要特定的字符编码;CSV文件的每一行是一维数据,整个CSV文件是一个二维数据;一维数据和二维数据都可以使用CSV格式保存成CSV文件。


一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中数组的概念。一维数据十分常见,任何表现为序列或集合的内容都可以看作是一维数据。

这是二维数组
[1,2,3,[4,4],[2,3,4,5,6],[7,7]]

    打开并关闭文件的操作,需要文件的路径名,
由于"\"是字符串中的转义符,所以表示路径时,使用"\\"或"/"代替"\"。

记住python里面反斜杠代表转义的意思。

join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
    二维数据存储为CSV格式,需要将二维列表对象写入CSV格式文件以及将CSV格式读入成二维列表对象。
    二维列表对象输出为CSV格式文件方法采用遍历循环和字符串的join()方法相结合。实例如下:
    #ls代表二维列表,此处省略
    f = open("cpi.csv","w")
    for row in ls:
    f.write(",".join(row)+"\n")
    f.close()

split() 方法用于把一个字符串分割成字符串数组。

strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。



文件是存储在辅助存储器上的一组数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象。


    Python通过open()函数打开一个文件,并返回一个操作这个文件的变量,语法形式如下:
    <变量名> = open(<文件路径及文件名>,<打开模式>) 
    open()函数有两个参数:文件名和打开模式。打开模式用于控制使用何种方式打开文件,open()函数提供7中基本的打开模式,如下:
    r:只读模式,如果文件不存在,返回异常FileNotFoundError,默认值
    w:覆盖写模式,文件不存在则创建,存在则完全覆盖原文件
    x:创建写模式,文件不存在则创建,存在则返回异常FileExistsError
    a:追加写模式,文件不存在则创建,存在则在原文件最后追加内容
    b:二进制文件模式
    t:文本文件模式,默认值
    +:与r/w/x/a一同使用,在原功能基础上增加读写功能

默认是只读模式,可以省略,C答案还错在必须要用r或w指定打开方式,太过绝对了,还可以指定x创建写模式,b二进制文件模式等等模式。


    split()方法是常用的字符串处理方法之一。
    Python文件操作方法:
    f.read(size):从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流。
    f.readline(size):从文件中读入一行内容。参数可选,如果给出,读入该行前size长度的字符串或字节流。
    f.readlines(hint):从文件中读入所有行,以每行为元素形成一个列表。参数可选,如果给出,读入hint行。
    f.seek(offset):改变当前文件操作指针的位置,offset的值:0为文件开头;1为当前位置;2为文件结尾。
    f.write(s):向文件写入一个字符串或字节流。
    f.writelines(lines):将一个元素为字符串的列表整体写入文件。


一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中数组的概念。
二维数据,也称表格数据,由关联关系数据构成,采用二维表格方式组织,对应于数学中的矩阵,常见的表格都属于二维数据。
高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。高维数据相比一维和二维数据能表达更加灵活和复杂的数据关系,可以用字典类型表示。



open()方法的作用是打开一个文件,而所给的代码未对文件exam.txt进行读写操作,直接关闭,运行后代码输出的结果是<_io.TextIOWrapper name='book.txt' mode='r' encoding='cp936'>。


    Python文件读操作的方法:
    f.read(size):从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流。
    f.readline(size):从文件中读入一行内容。参数可选,如果给出,读入该行前size长度的字符串或字节流。
    f.readlines(hint):从文件中读入所有行,以每行为元素形成一个列表。参数可选,如果给出,读入hint行。
    f.seek(offset):改变当前文件操作指针的位置,offset的值:0为文件开头;1为当前位置;2为文件结尾。


open()方法的作用是打开一个文件,而所给的代码只指定了模式而未对文件book.txt进行读写操作,直接关闭,运行后输出<_io.TextIOWrapper name='book.txt' mode='r' encoding='cp936'>。

改成这样才不报错:

txt = open('book.txt','r')
print(txt.read())
txt.close()

f.read(size):从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流。
    split(str,num)通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔num个子字符串。
    f.read().split(","):从文件中读入整个文件内容,并以逗号分隔。原文的第一行后有一个换行符"\n",
所以读入文件内容时,这里的字符串应为"巴巴多斯\n白俄罗斯"。
    运行代码后的输出结果是['巴哈马', '巴林', '孟加拉国', '巴巴多斯\n白俄罗斯', '比利时', '伯利兹']。

备注:csv格式的文件就是excel表格



fo.writelines(lines)方法的含义是将一个元素为字符串的列表整体写入文件。
代码运行后的输出结果是book2320100920。




采用二进制方式打开文件,文件被解析成为字节流。
Python通过open()函数打开一个文件,并返回一个操作这个文件的变量。
f.write(s):向文件写入一个字符串或字节流。

C答案错误,并不会载入内存当中,而是存在一个变量空间里面,这涉及到堆栈地址什么的。


格式化方法.format()用于解决字符串和变量同时输出时的格式安排问题,使用方式如下:
<模板字符串>.format(<逗号分隔的参数>)
其中,模板字符串是一个由字符串和槽组成的字符串,用来控制子串和变量的显示结果。
槽用大括号({})表示,对应format()方法中逗号分隔的参数。
程序中使用strip()方法去掉数据尾部的逗号,
所以程序填空处应该重新加上逗号,所以选项A错误。
选项C中使用了中文状态下的引号(若将引号修改为英文状态,
输出到文件的内容也与题意不符),所以选项C错误。使用选项D中的代码输出到文件中的内容与题意不符,所以选项D错误。


对于列表类型,使用等号无法实现真正的赋值,不能产生新列表。img1 = img2语句并不是拷贝img2中的元素给变量img1,而是新关联了一个引用,即增加一个别名,img1和img2所指向的是同一套内容,所以调用函数modi()后,输出的img1,指向的是img2的内容,即[1,2,3,4,5]。在函数外部,img1内容不变,所以输出的是[12,34,56,78]。



列表的索引值由0开始。



pip常用的子命令有:
install、download、uninstall、freeze、list、show、search、wheel、hash、completion、help。



'b':二进制文件模式。
'+':与r/w/x/a一同使用,在原功能基础上增加同时读写功能。
f.readlines(hint=-1):从文件中读入所有行以每行为元素形成一个列表。参数可选,如果给出,读入hint行。

A错在加载到内存中,应该是存到一个变量中。



f.writelines(lines):直接将列表类型的各元素连接起来写入文件f。



str.split(sep=None):返回一个列表,由str根据sep被分割的部分构成,省略sep默认以空格分割。
str.strip(chars):从字符串str中去掉在其左侧和右侧chars中列出的字符。
str.replace(old,new):返回字符串str的副本,所有old子串被替换为new。
str.center(width,fillchar):字符串居中函数,fillchar参数可选。


pip常用的子命令有:
install、download、uninstall、freeze、list、show、search、wheel、hash、completion、help。


str.split(sep=None):返回一个列表,由str根据sep被分割的部分构成,省略sep默认以空格分割。
str.strip(chars):从字符串str中去掉在其左侧和右侧chars中列出的字符。
str.join(iter):将iter变量的每一个元素后增加一个str字符串。
这三个方法用来增加字符串中的分隔字符或者去掉指定字符,是在进行CSV文件读写时,可能会使用的处理方法。
index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。


Python通过open()函数打开一个文件,并返回一个操作这个文件的变量,语法形式如下:
<变量名> = open(<文件路径及文件名>,<打开模式>)
f就是等号左边的变量名,不是特殊的变量,仅仅是个变量名,右边赋值给它的。



执行print(f)确实会报错,因为没有进行任何文件的操作


B答案:高维数据在Web系统中十分常用,作为当今Internet组织内容的主要方式,高维数据衍生出HTML、XML、JSON等具体数据组织的语法结构。

D答案:在列表中,元素的类型可以是字符串,可以是整数等等。例如:[3,4,'6','my']

A答案:高维数据由键值对类型的数据构成,采用对象方式组织。故字典用于表示高维数据,一般不用来表示一二维数据,字典类似json格式。



perf_counter()不是Python内置函数。



install:安装
uninstall:卸载
download:下载
search:查找



randint(a,b):生成一个[a,b]之间的整数,含a和b。
random.random() 随机生成一个(0,1)的浮点数,
uniform(a,b):生成一个[a,b]之间的随机小数。



使用time.time()获取当前时间戳,返回值为数字形式,得到当前时间戳Timestamp,是一个浮点数。


choice(seq):从序列类型(例如列表)中随机返回一个元素。
shuffle(seq):将序列类型中元素随机排列,返回打乱后的序列。
getrandbits(k):生成一个k比特长度的随机整数。
sample(pop,k):从pop类型中随机选取k个元素,以列表类型返回。



install:安装
uninstall:卸载
download:下载
search:查找




pencolor():设置画笔的颜色
pensize():设置画笔宽度
seth():改变画笔绘制方向
right(angle):向右旋转angle角度

这里强调颜色控制。

4.条件控制类


属于分支逻辑的保留字有if、else、elif,属于循环逻辑的保留字有break、continue、for、while。


列表、字典和字符串类型的元素是有限的,浮点数的个数是无限的。


基本的语法格式如下:
    try:
        <语句块1>
    except:
        <语句块2>
    语句块1是正常执行的程序内容,当执行这个语句块发生异常时,则执行except保留字后面的语句块2。


缩进是指每行语句开始前的空白区域,用来表示Python程序间的包含和层次关系。一般代码不需要缩进,顶行编写且不留空白。当表示分支、循环、函数、类等程序含义时,在if、while、for、def、class等保留字所在完整语句后通过英文冒号(:)结尾并在之后进行缩进,表明后续代码与紧邻无缩进语句的所属关系。



异常和错误是不同的概念,异常仅指程序运行层面的错误,而错误范围更广泛,还包括程序的逻辑错误等。



break用来跳出最内层for或while循环,脱离该循环后程序从循环后的代码继续执行。



Python语言的循环结构包括两种:遍历循环和无限循环。遍历循环使用保留字for,无限循环使用保留字while。



t.fd(50)表示沿着当前方向前进指定距离,t.left(90)表示向左旋转90度。range(start, stop[, step])表示计数从start开始,到stop结束,但不包括stop,步长默认为1,则i的取值为1、2、3、4,所以绘制的图形是正方形。



分支结构中的判断条件可以使用任何能够产生True或False的语句或函数。形成判断条件最常见的方式是采用关系操作符。11<=22<33是合法的条件,输出为True。



range(start, stop[, step])表示计数从start开始,到stop结束,但不包括stop,步长默认为1,则i的取值为1、2、3、4、5。根据程序可知,当i不能被4整除时,执行输出语句;当i能被4整除时,跳出for循环,则输出结果为"1,2,3,"。



Python的单分支结构使用if保留字对条件进行判断;二分支结构使用if-else保留字对条件进行判断;多分支结构使用if-elif-else保留字对多个相关条件进行判断,并根据不同条件的结果按照顺序选择执行路径。其中,else子句是可选的,这里错在每个if必须搭配使用,其实是没有限制要求的,可以单个if关键字出现



列表的索引采用正向递增序号或反向递减序号,正向递增序号从0开始,即ls索引的取值范围是0到9(含)的整数;反向递减符号从-1开始,即ls索引的取值范围是-1到-10(含)的整数。



键盘输入数字5,则n的值为5,s的值为0。此时n>=5条件成立,n减1为4,s被赋值为4。此时n<5条件成立,n减1为3,s被赋值为3。程序结束,输出s的值为3,因为没有continue子句,所以不会再继续下去的哦



Python语言的循环结构包括两种:遍历循环和无限循环。遍历循环使用保留字for,无限循环使用保留字while。



输入数字5之后,程序执行try之后的语句块。语句块中只包含函数定义过程,并未调用函数,所以程序没有任何输出,要增加一个调用函数:pow2()。



顺序结构、分支结构和循环结构是Python语言中3种最基本的控制结构。异常处理以程序异常为判断条件,根据一段代码执行的正确性进行程序逻辑选择,是分支结构的一种扩展。



纠错下:这题答案应该选A
二分支结构使用if-else保留字对条件进行判断,多分支结构使用if-elif-else保留字对多个相关条件进行判断。


运算符//表示计算整数商。当guess == 0x452//2条件成立时,跳出while循环,输出guess的值。
0x452是16进制数,0x代表16进制标志,所以456(16进制)转换成十进制为4*16**2+5*16**1+2*16**0=1024+80+2=1106,则0x452//2的值为553。
十六进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的数


continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。由代码可知,当s=="a"或s=='e'条件成立时,跳出当前当次循环,不输出s的值,则最后的输出结果为tsttst。



while循环也可以用来实现遍历循环。



divmod(x,y)函数同时返回两个值,分别是x和y的整数商和除法余数,输出为二元组形式(也称为元组类型)。



len(x):返回字符串x的长度,也可返回其他组合数据类型的元素个数。
B答案:字符串不支持除法,但支持乘法(就是对字符串的复制效果)



C答案:用法错误



D答案:isnumeric() 方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。
对字符串中某个子串或区间的检索成为切片。切片的使用方式如下:
<字符串或字符串变量>[N:M]
切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,
可以混合使用正向递增序号和反向递减序号。反向从-1开始,正向从0开始。
str1[2:]表示截取字符串正向第3个字符p到字符串末尾之间的字符,即'python@*'。
str.strip(chars)表示从字符串str中去掉在其左侧和右侧chars中列出的字符。
因为得到的子字符串'python@*'最左和最右都没有字符@,所以最后的结果依然为'python@*'。


字符串按位比较,x>y是成立的,所以输出True。
比较的是字符对应的ASCII码大小,如果两个字符串字符相同,但是一个字符串的字符多,则多的大,比如:
"ABC"小于"ABCD"



break是辅助循环控制的保留字,用来跳出最内层for或while循环,脱离该循环后程序从循环后的代码继续执行。

break语句,对循坏次数没有影响。



round(x):返回对x四舍五入的整数值。


eval()函数将去掉字符串最外侧的引号,并按照Python语句执行去掉引号后的字符内容。
对字符串中某个子串或区间的检索成为切片。切片的使用方式如下:
<字符串或字符串变量>[N:M]
切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。反向从-1开始,正向从0开始。
tstr[3:-1]表示截取字符串正向第4个字符5到字符串末尾(不包括末尾字符)之间的字符,即'52'。

上面语句运行会出错,星号是字符串的形式,所以要加上一对引号才行。

str.center(width,fillchar):返回长度为width的字符串,
其中,str位于新字符串中心位置,两侧新增字符采用fillchar填充。
正确的语句是print(str1.center(10,'*')),运行后的结果为**python**。



纠错:题目有问题。


all(x):组合类型变量x中所有元素都为真时返回True,否则返回False;若x为空,返回True。
any(x):组合类型变量x中任一元素都为真时返回True,否则返回False;若x为空,返回True。
y中第一个元素为一个空格,在ascii2和unicode码表中空格是算一个字符,第二个元素为空,即null,
所以第一个元素为真,第二个元素为假,all(y)输出False,any(y)输出True。


for i in range(len(ls))中,i的值是数字类型,for i in ls中i是列表中的元素,是字符串类型。这两个i的值不同。


使用函数主要有两个目的:降低编程难度和增加代码复用。代码复用降低了代码行数和代码维护难度,增强代码可读性。

python的代码是解释型的,是一行一行逐行解释的,所以代码执行速度相较于其他语言是慢的。



全局变量在函数内部使用时,需要提前使用保留字global声明,而且我们的代码习惯都是置顶声明全局变量(第一行),而且global不是语句而是一个保留字。


如果一个函数需要以多种形式来接收实参,定义时一般把位置参数放在最前面,
然后是默认参数,接下来是一个星号的可变长度参数,最后是两个星号的可变长度参数。
例:def foo(x,*args,**kwargs):


len(d):字典d的元素个数(长度)。字典中每一个元素是一个键值对,共有3个键值对,所以结果为3。



常见的组合数据类型有集合类型、序列类型和映射类型。
序列类型的典型代表是字符串类型和列表类型,映射类型的典型代表是字典类型。集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。

准确的说python没有数组这一个概念,只有列表,容易和其他编程语言混淆




文件包括文本文件和二进制文件两种类型。文本文件一般由单一特定编码的字符组成,如UTF-8编码,内容容易统一展示和阅读。二进制文件直接由比特0和比特1组成,没有统一的字符编码。

现在流行的编辑器都默认utf-8



round(x,d):对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数值。



chr(x):返回Unicode编码x对应的单字符。




都说是无限循环了,还要确定循环次数吗?

Python通过保留字while实现无限循环,不需要提前确定循环次数。
循环结构有两个辅助循环控制的保留字:break和continue。
无限循环也有一种使用保留字else的扩展模式,使用方式如下:
while <条件>:
      <语句块1>
else:
      <语句块2>


常见的组合数据类型有集合类型、序列类型和映射类型。
序列类型的典型代表是字符串类型和列表类型,映射类型的典型代表是字典类型。集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。


5.组合类


列表没有长度限制,元素类型可以不同,不需要预定义长度。
例子:list1=[1,2,'3',(4,5,6),{‘age’:21}],这个列表涵盖了整数类型、字符串类型、元组类型、字典类型,所以元素类型不必相同。



python语言中通过字典类型实现映射。由于字典元素"键值对"中键是值的索引,因此,可以直接利用键值对关系进行索引元素,而列表是通过整数索引的,例如a = [1,2,3,4]求a[0]。

字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。

字典中的没有任何类型限制,值可以是整数类型,字符串类型、列表, 可以是任意Python对象,但是字典中的是有类型限制的。

不允许一个键对应多个值。必须明确一条原则:每个键只能对应一个项。也就是说:一键对应多个值是不允许的。 当有键发生冲突(即字典键重复赋值),取最后(最近)的赋值。

当有键和值重复不会出现报错的提醒信息,Python并不会因字典中的键存在冲突而产生一个错误,它不会检查键的冲突。



append(x):在列表最后增加一个元素x。
insert(i,x):在列表第i位置增加元素x。


索引是列表的基本操作,用于获得列表中的一个元素。该操作沿用序列类型的索引方式,
即正向递增序号和反向递减序号,使用中括号作为索引操作符,索引序号不能超过列表的元素范围,
否则会出现IndexError错误。正向递增序号从0开始,反向递减序号从-1开始。
    ls[2][1][-1]的执行过程:[2010,'stud1']-> stud1->1,即最后的结果是"1"。


查找要逐级查找,不能越过,这里应该先找food键再找cake键。

d.get(key,default)根据键信息查找并返回值信息,如果key存在则返回相应值,否则返回默认值。
    代码d.get('cake','no this food')中的键"cake"在运行的时候找不到,
所以输出结果:no this food;
但是如果将代码d.get('cake','no this food')修改为d['food']['cake'],运行后输出结果:1。

Python通过保留字for实现遍历循环,使用方法如下:
    for <循环变量> in <遍历结构>
        <语句块>
    遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,
对于每个所提取的元素执行一次语句块。for语句的执行次数是根据遍历结构中元素个数确定的。
    使用range()函数,可以指定语句块的循环次数。
    题目中的代码循环过程如下:
    c=[1,2,3],j=0,c[0]=1,s=1;
    c=[1,2,3],j=1,c[1]=2,s=3;
    c=[1,2,3],j=2,c[2]=3,s=6;
    c=[4,5,6],j=0,c[0]=4,s=10;
    c=[4,5,6],j=1,c[1]=5,s=15;
    c=[4,5,6],j=2,c[2]=6,s=21;
    c=[7,8,9],j=0,c[0]=7,s=28;
    c=[7,8,9],j=1,c[1]=8,s=36;
    c=[7,8,9],j=2,c[2]=9,s=45。


Python语言中的组合数据类型包括集合类型、序列类型(列表类型)和映射类型(字典类型),而复数类型属于基本数据类型中的数字类型。



range(a,b,s)的作用是从a到b以s为步长产生一个序列。
list(x)的作用是创建或将变量x转换成一个列表类型。
代码执行后的输出结果是[0, 1, 2, 3, 4]。



ls.clear():删除ls中所有元素。


Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:
    {<键1>:<值1>,<键2>:<值2>……<键n>:<值n>}
    其中,键和值通过冒号连接,不同键值对通过逗号隔开。


max(ls)是列表的常用操作函数,表示列表ls中的最大值。


Python通过保留字for实现遍历循环,使用方法如下:
    for <循环变量> in <遍历结构>
        <语句块>
    遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,
对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。
    ls.append(x)方法是列表的常用操作方法,作用是在列表最后增加一个元素x。
    题目中的代码循环过程如下:
    m = A,n = C,m+n = AC;
    m = A,n = D,m+n = AD;
    m = B,n = C,m+n = BC;
    m = B,n = D,m+n = BD。
    代码执行后的输出结果是['AC', 'AD', 'BC', 'BD']。


列表是包含0个或多个元组的有序序列,属于序列类型。列表可以进行元素增加、删除、替换、查找等操作。



如果序列长度为L,正向递增需要以最左侧序列符号为0,向右依次递增,最右侧序列符号为L-1;反向递减序号以最右侧序列符号为-1,向左依次递减,最左侧序列符号为-L。
选项"如果s是一个序列,s = [1,"kate",True],s[3]返回True"中的索引序号"3"超过列表的元素范围,出现IndexError错误,返回的结果不是True。


Python通过保留字for实现遍历循环,使用方法如下:
    for <循环变量> in <遍历结构>
        <语句块>
    遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,
对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。
    len(S):字符串S的长度,这里为4。i的取值范围为range(4),即0、1、2、3。
    题目中的代码循环过程如下:
    i = 0,S[-i]=P;
    i = 1,S[-i]=e;
    i = 2,S[-i]=m;
    i = 3,S[-i]=a。
    代码执行后的输出结果是Pema。

    Python通过保留字for实现遍历循环,使用方法如下:
    for <循环变量> in <遍历结构>
        <语句块>
    遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,
对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。
    Python的单分支结构使用if保留字对条件进行判断,使用方法如下:
    if <条件>:
        <语句块>
    其中,if、:和<语句块>前的缩进都是语法的一部分。<条件>是一个产生True或False结果的语句,
当结果为True时,执行<语句块>,否则跳过<语句块>。
    continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
    题目中的代码循环过程如下:
    s = H,输出结果H;
    s = e,输出结果e;
    s = l,输出结果l;
    s = l,输出结果l;
    s = o,输出结果o;
    s = W,跳出当前当次循环,继续下一次循环;
    s = o,输出结果o;
    s = r,输出结果r;
    s = d,输出结果d。
    代码执行后的输出结果是Helloorld。


索引是按照一定顺序检索内容的体系。由于字典元素"键值对"中键是值的索引,因此,可以直接利用键值对关系索引元素。
字典中键值对的索引模式如下(采用中括号格式):
<值> = <字典变量>[<键>]
d['food'][-1]和d['cake'][1]中括号里的内容不是键,与字典类型中的索引模式不一样;d['egg']执行后的值是3,不是5。



s.insert(i,x):在列表第i位置增加元素x。
列表中的索引值从0开始,s.insert(2,3)表示在列表的第三个位置增加元素3,则题目中的代码执行后输出结果为[4,2,3,9,1]。



len(ls):列表ls中的元素个数(长度)。
代码执行后的输出结果是3,即ls=[[1,2,3],[[4,5],6],[7,8]]的长度为3。



ls.append(x):在列表ls最后增加一个元素x。
代码执行后的输出结果为['2020', '20.20', 'Python', 2020, [2020, '2020']]。



d.get(key,default):键存在则返回相应值,否则返回默认值default。
代码执行后的输出结果:黑色 黑色。



序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。



高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。高维数据相比一维和二维数据能表达更加灵活和复杂的数据关系,可以用字典类型表示。一维数据不用字典类型来表示。



索引序号从0开始,不能超过列表的元素范围。l1列表中只有两个元素,l1.index(2)表示取列表中第三个元素,会出错。


range(start, stop[, step])表示计数从start开始,到stop结束,
但不包括stop,步长默认为1。start默认从0开始,range(2)等价于range(0,2),则k的取值范围为0、1。
break用来跳出最内层循环,脱离该循环后程序从循环后的代码继续执行。
第1次循环,i=N,k=0,if判断条件不成立,输出i的值为N。
第2次循环,i=N,k=1,if判断条件不成立,输出i的值为N。
第3次循环,i=a,k=0,if判断条件不成立,输出i的值为a。
第4次循环,i=a,k=1,if判断条件不成立,输出i的值为a。
……
第11次循环,i=n,k=0,if判断条件成立,跳出内层循环。
第12次循环,i=n,k=1,if判断条件成立,跳出内层循环。
最后输出为NNaattiioo。

续写在中篇,有兴趣的可以前往。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容