Python

第一章

1.下面能够支持Python开发的环境有哪些?
A. IDLE
B. Anaconda3
C. PyCharm
D. Eclipse
2,下面特点属于Python语言的有哪些?
A. 开源
B. 免费
C. 跨平台
D. 解释执行

  1. Python 3.x完全兼容Python 2. 错误
  2. Python代码的注释只有一种方式,那就是使用#符号。错误
    5下面的4个特点,Python不具备的是?
    A. 运行速度快
    B. 扩展库丰富
    C. 跨平台
    D. 支持函数式编程

41第二章
1.对于Python,下面的描述不正确的是?
A. 内置支持超大整数
B. 内置支持复数运算
C. 内置支持集合运算
D. 内置支持向量运算

2下面可以用来作为变量名的有?
A. stu
B. 3m
C. a,b
D. else
3.表达式-(15//4)的值是?
A. 3
B. 4
C. -3
D. -4
4.表达式-15//4的值是?
A. 3
B. 4
C. -3
D. -4
5.表达式max(‘1111’, ‘222’, ‘33’, ‘4’)的值是?
A. 1111’
B. 222’
C. 33
‘D. 4’

第三章
1.
判断题
10 分
一般
当作为条件表达式时,空值,空字符串,空列表,空元组,空字典,空集合,空迭代对象以及任意形式的数字0都等价于False。正确

2
判断题
10 分
一般
对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。
正确答案: 正确

判断题
10 分
一般
Python使用缩进来体现代码之间的逻辑关系。
正确答案: 正确

判断题
10 分
一般
在try…except…else结构中,如果try块的语句引发了异常则会执行else块中的代码。
正确答案: 错误

单选题
10 分
困难
断言语句的语法为______________。
A. assert 'error information’B. expression, 'error information’C. assert expression, 'error information’D. print(‘error information’)
正确答案: C

第四章

1
单选题
10 分
简单
定义函数时,在形参前面加一个星号表示可以接收多个位置参数并存放于_____中。
A. 列表B. 元组C. 字典D. 集合
正确答案: B
2
单选题
10 分
简单
定义函数时,在形参前面加两个星号表示可以接收多个关键参数并存放于_____中。
A. 列表B. 元组C. 字典D. 集合
正确答案: C
3
单选题
10 分
一般
下面关于生成器函数的描述中,不正确的是?
A. 生成器函数的返回值是生成器对象B. 生成器函数也是使用def关键定义C. 生成器函数中肯定包含yield语句D. 生成器函数中肯定包含return语句
正确答案: D
4
多选题
10 分
一般
下面关于局部变量的描述中,正确的有?
A. 不同作用域可以有同名的局部变量B. 函数运行结束后,函数内部的局部变量无法再访问C. 在函数外部无法访问函数内部的局部变量D. 在一个函数中可以访问另一个函数中定义的局部变量
正确答案: ABC
5
多选题
10 分
困难
下面关于lambda表达式的描述中,正确的有?
A. lambda表达式在功能上相当于一个函数B. lambda表达式可以接收参数C. lambda表达式的值相当于函数返回值D. lambda表达式中需要使用return语句返回计算结果
正确答案: ABC
6
多选题
10 分
困难
下面内置函数中,可以接收字符串作为参数的有?
A. len()B. max()C. sum()D. zip()
正确答案: ABD
7
多选题
10 分
一般
下面关于函数定义的描述,正确的有?
A. 不需要说明形参类型B. 不需要说明返回值类型C. 必须有return语句D. 可以嵌套定义函数
正确答案: ABD
8
判断题
10 分
简单
在Python中,不能在一个函数的定义中再定义一个嵌套函数。
正确答案: 错误
9
判断题
10 分
简单
定义Python函数时,如果函数中没有return语句,则默认返回空值None。
正确答案: 正确

10
单选题
10 分
简单
执行print(eval(‘1+2’))输出结果是【 】。
A. 1+2B. '1+2’C. 3D. 出错
正确答案: C

补充字符串

1
单选题
10 分
简单
下面的转义字符中,表示换行的是?
A. \tB. \bC. \nD. \r
正确答案: C
2
单选题
10 分
一般
假设s和t都是字符串变量,并且t不是s的子串,那么表达式s.find(t)的值是?
A. -1B. 0C. FalseD. None
正确答案: A
3
单选题
10 分
简单
下面运算符中可以支持字符串和整数进行运算的是?
A. +B. -C. *D. /
正确答案: C
4
单选题
10 分
简单 swapcase()大小写转换
表达式 ‘Hello world’.swapcase().swapcase() 的值为______________。
A. Hello worldB. Hello WorldC. HELLO WORLDD. hello world
正确答案: A
5
判断题
10 分
简单
在UTF-8编码中一个汉字需要占用3个字节。
正确答案: 正确

补充正则表达式
1
判断题
10 分
一般
正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。
正确答案: 正确
2
判断题
10 分
简单
正则表达式 元字符“\d”用来匹配任意数字字符。
正确答案: 正确
3
判断题
10 分
简单
正则表达式’[^abc]‘可以一个匹配任意除’a’、‘b’、‘c’之外的字符。
正确答案: 正确
4
单选题
10 分
困难
已知 x = ‘a234b123c’,并且re模块已导入,则表达式 re.split(’\d+’, x) 的值为_________________。
A. [a, b, c]B. [‘a’, ‘b’, ‘c’]C. a b cD. a,b,c
正确答案: B
5
判断题
10 分
一般
正则表达式’python|perl’或’p(ython|erl)‘都可以匹配’python’或’perl’。
正确答案: 正确

GUI
1
多选题
1 分
简单
tkinter提供了几种不同风格的几何布局管理,包括下面所列哪些?
A. packB. viewC. placeD. grid
正确答案: ACD
2
多选题
1 分
简单
下面哪些是Python提供了多个图形开发界面的库?
A. TkinterB. wxPythonC. PyQtD. Jython
正确答案: ABCD
3
填空题
2 分
简单

  • 答案不区分多个空的先后顺序
    Python程序文件扩展名主要有 填空 1 和 填空 2 两种,其中后者常用于GUI程序。
    正确答案:
    填空 1:py
    填空 2:pyw
    4
    判断题
    1 分
    简单
    在GUI设计中,复选框往往用来实现非互斥多选的功能,多个复选框之间的选择互不影响。
    正确答案: 正确
    5
    判断题
    1 分
    简单
    在GUI设计中,单选按钮用来实现用户在多个选项中的互斥选择,在同一组内多个选项中只能选择一个,当选择发生变化之后,之前选中的选项自动失效。
    正确答案: 正确

Numpy

numpy中的empty函数用于创建一个空数组,并完成不初始化
正确答案: 错误
2
多选题
10 分
简单
下列描述正确的是:
A. numpy数组的下标从0开始B. scipy依赖于numpyC. matplotlib依赖于numpy模块和tkinter模块D. pandas是基于numpy的数据分析模块
正确答案: ABCD
3
单选题
10 分
简单
#下面代码输出结果为:
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
A. B. C. D. 报错
正确答案: B
4
判断题
10 分
简单
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
正确答案: 正确
5
多选题
10 分
简单
NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括:
A. 功能强大的N维数组对象。B. 集成 C/C+和Fortran 代码的工具。C. 强大的线性代数、傅立叶变换和随机数功能。D. 精密广播功能函数。
正确答案: ABCD

Matplotlib

1
判断题
10 分
简单
使用subplot()能够快速绘制包含多个子图的图表。
正确答案: 正确
2
判断题
10 分
简单
matplotlib.pyplot对象的xlim方法和ylim方法分别设置X、Y轴的显示范围
正确答案: 正确
3
判断题
10 分
简单
matplotlib.pyplot对象的legend()方法用于显示图例。
正确答案: 正确
4
多选题
10 分
简单
关于Matplotlib描述正确的是()。
A. Matplotlib实际上是一套面向对象的绘图库。B. matplotlib模块依赖于numpy模块和tkinter模块。C. Matplotlib.pyplot是一组命令样式函数,使Matplotlib的工作方式类似于MATLAB。D. 每个pylot函数对图形进行一些更改。例如,创建图形、创建绘图区域、绘制、使用标签装饰绘图等。
正确答案: ABCD
5
单选题
10 分
简单
下面哪个语句块能够创建一个大小为400*300绘图对象。
A. import matplotlib.pyplot as plt
plt.figure()
plt.figsize=(4,3)B. import matplotlib.pyplot as plt
plt.figure(figsize=(4,3))C. import matplotlib.pyplot as plt
plt.figure()
plt.size=(4,3)D. import matplotlib.pyplot as plt
plt.figure(size=(4,3))
正确答案: B

1
判断题
10 分
简单
k-means算法的时间复杂度为线性
正确答案: 正确

2
判断题
10 分
简单
所谓聚类是根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。
正确答案: 正确
3
多选题
10 分
简单
下面哪些属于无监督学习算法()?
A. DBSCANB. AprioriC. 朴素贝叶斯D. 决策树E. K-MeansF. FP-growth
正确答案: ABEF

4
多选题
10 分
简单
关于sklearn描述正确的是()。
A. sklearn是一套基于Python语言的机器学习库,该库建立在NumPy、SciPy 和 matplotlib 上之上B. sklearn提供了数据降维功能C. sklearn提供了格点搜索,交叉验证和各种针对预测误差评估的度量函数D. sklearn提供了数据预处理功能E. sklearn提供了深度学习功能
正确答案: ABCD

5
判断题
10 分
简单
监督学习与非监督学习的主要区别在于数据是否被标识
正确答案: 正确
、生成包含20个随机数的列表,然后将前10个元素升序排列,

后10个元素降序排列,并时输出结果
This is a temporary script file.
“”"
import random
x=[random.randint(0,100) for i in range(20)]
print(x)
x[:10]=sorted(x[:10])
x[10:]=sorted(x[10:],reverse=True)
print(x)
1.查看python当前工作目录,以下哪个代码是正确的?
A、 os.getcwd()  
B、 import os   os.getcwd()
C、import os   os.chdir()
D、os.chdir()
2以只读方式打开d:\myfile.txt文件,以下代码正确的是(  )?
A、f=open(“d:\myfile.txt”,“r”)
B、f=open(“d:\myfile.txt”,“r”)
C、f=open(“d:\myfile.txt”,“w”)
D、f=open(“d:\myfile.txt”,“r+”)
3假如D:\下面有个file1.txt文件,将字符串“中国加油”追加到文件尾部,如何实现?
A、f=open(“file1.txt”,“a+”)   f.write(“中国加油”)
B、f=open(“d:\file1.txt”,“w”)    f.write(“中国加油”)
C、f=open(“d:\file1.txt”,“a+”)    f.write(“中国加油”)
D、f=open(“d:\file1.txt”,“a+”)     f.write(“中国加油”)
4将2个字符串"aaaa",“bbbb"分2行保存到d:\文件file.txt中。代码如下:
A、f=open(“d:\file.txt”,“w”)   f.writelines([“aaaa\n”,“bbbb\n”])
B、f=open(“d:\file.txt”,“w”)   f.write([“aaaa\n”,“bbbb\n”])
C、f=open(“d:\file.txt”,“w”)   f.writelines([“aaaa”,“bbbb”])
D、f=open(“d:\file.txt”,“r”)    f.writelines([“aaaa”,“bbbb\n”])
5文件file.txt内容如下:
aaaa
bbbb   执行f=open(“file.txt”,“r”)
s=f.readline()
print(s)
后,输出结果为()
A、aaaa bbbb
B、aaaa
C、 aaaa
bbbb
D、bbbb
6文件file.txt内容如下:
aaaa
bbbb
执行f=open(“file.txt”,“r”)
s=f.readlines()
print(s)
后,输出结果为()
A、 aaaa
bbbb
B、 [‘aaaa\n’,‘bbbb\n’]
C、 ‘aaaa\nbbbb\n’
D、 aaaa bbbb
 
7、d:\stu.csv文件保存了学生的信息,以下哪个代码序列能实现信息的读出?
A、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.read(f)
for i in r:
    print(i)
f.close()
B、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.reader(f)
print®
f.close()
C、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.reader(f)
for i in r:
    print(i)
f.close()
D、
f=open(“d:\stu.csv”,“w”)
r=csv.reader(f)
for i in r:
    print(i)
f.close()
8、try:
    a=10
    b=0
    c=a/b
except ZeroDivisionError:
    print(“aaaa”)
else:
    print(“bbbb”)
写出程序运行结果。
A、bbbb
B、aaaa bbbb
C、aaaa
D、 aaaa
bbbb
9以下代码运行时会出现什么类型的异常?
s=[1,2,3,4,5]
 
a=s[5]
A、KeyError
B、IOError
C、NameError
D、IndexError
10、d:\有一个二进制文件file1.dat,以可读可写方式打开该文件,如果写入新的内容,内容会被追加到文件尾部。以下哪个语句是正确的?
A、f=open(“d:\file1.dat”,“rb”)
B、f=open(“d:\file1.dat”,“wb”)
C、f=open(“d:\file1.dat”,“ab+”)
D、f=open(“d:\file1.dat”,“wb+”)
 
二.多选题(共10题,40.0分)
1文件操作包括哪些步骤?
A、打开文件
B、读文件或写文件
C、关闭文件
D、无须关闭文件
2下列哪些文件是二进制文件?
A、 .txt文件
B、 .doc文件
C、 .py文件
D、  .xls文件
3writelines()方法的参数可以是哪些类型?
A、列表
B、集合
C、元组
D、字典
4以下哪些描述是csv文件的特征?
A、纯文本,一般使用某个字符集。
B、由记录组成,一行对应一条记录。
C、多个字段之间的分隔符必须是逗号。
D、每条记录都有同样的字段序列。
5将2个学生信息:
张三,男,20
李娜,女,30
写到stu.csv文件中,以下哪些代码是正确的?假设writer对象w已经创建。
A、
w.writerow([‘张三’,‘男’,20])
w.writerow([‘李娜’,‘女’,30])
B、
w.writerows([[‘张三’,‘男’,20],[‘李娜’,‘女’,30]])
C、
w.write([‘张三’,‘男’,20])
w.write([‘李娜’,‘女’,30])
D、w.writerow([‘张三’,‘男’,20],[‘李娜’,‘女’,30])
6以下哪些是python中的异常名称?
A、ZeroDivisionError
B、IOError
C、IndexError
D、KeyError
7以下代码运行时会出现什么类型的异常?(单选)
a={“x”:1,“y”:2}
print(a[‘z’])
A、KeyError
B、IndexError
C、IOError
D、NameError
8、csv文件每个记录字段之间的分隔符可以是以下哪些字符?
A、中文逗号
B、英文分号
C、英文逗号
D、制表符
9、D盘python目录下有个文件file1.py。如果在python中描述这个文件路径,下列正确的是?
A、 “d:\python\file1.py”
B、 “d:\python\file1.py”
C、 “d:/python/file1.py”
D、 r “d:\python\file1.py”
10 从文件读写的角度看,文件一般分为哪些类型?
A、文本文件
B、视频文件
C、二进制文件
D、图片文件
 
三.填空题
1打开文件使用python内置的    命令。
open
2关闭文件对象f的代码为      。
f.close()
3使用      语句打开文件后,文件操作结束后会自动关闭文件。
with
4读写csv格式文件要使用import命令导入       模块。
csv
5读取csv文件数据时首先要创建一个        对象。
reader
6将数据写入csv文件首先要创建一个         对象。
writer
7将数据记录写到csv文件中,记录之间如果出现空行,需要在打开文件时增加          参数,且将该参数值设为空字符串。
newline
8在程序运行时出现的错误,被称为          。
异常
9、python使用        子句来进行异常的捕获与处理。
try
10、如果无法确定异常的类型,可以使用通用的异常对象               来捕获。
Exception
 
四.判断题
1、writelines()方法参数可以是一个列表,且元素可以是任何类型。
正确答案:×
2、readline()方法一次可以读出文件全部内容
正确答案:×
3、readlines()方法可以读出文件全部内容,并以列表形式返回,其中每行对应一个列表元素。
正确答案:√
4、程序运行出现的异常无须捕获,程序能正常运行。
正确答案:×
5异常处理让程序不会被意外终止,而是按照设计以不同的方式结束运行。
正确答案:√
 
1、pyplot模块用来显示图例的函数为()。
A、title
B、xlable
C、ylable
D、legend
2
import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([10,20,30,40,50])
c=a+b
print©
A、array[1,2,3,4,5,10,20,30,40,50]
B、[11 22 33 44 55]
C、array[11,22,33,44,55]
D、a[1 2 3 4 5 10 20 30 40 50]
3
import numpy as np
a=np.arange(24).reshape(2,3,4)
print(a[1,1,:])
输出结果为()。
A、[0 1 2 3]
B、[12 13 14 15]
 
C、[16 17 18 19]
D、[20 21 22 23]
4
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.sum()
print(s)
运行结果为()。
A、[ 6 22]
B、[ 4  6  8 10]
C、28
D、36
5用来设置x轴的刻度值或标签的函数是()。
A、xlim
B、ylim
C、xticks
D、yticks
6
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.sum(axis=0)
print(s)
运行结果为()。
A、[6 22]
B、28
C、36
D、[ 4  6  8 10]
7通过( )库可完成数据的可视化。
A、numpy
B、pandas
C、matplotlib
D、jieba
8numpy库中实现数组维度变换的方法是()。
A、reshape
B、transpose
C、resize
D、flatten
9
import numpy as np
a=np.array([1,2,3,4,5])
print(a.shape,a.size,a.itemsize)
以上代码运行结果是()。
 
A、5 5 4
B、5 5 8
C、(5,) 5 4
D、(5,) 5 2
10
import numpy as np
a=np.linspace(1,10,4,endpoint=False)
print(a)
以上代码运行是()  。
A、[1.   3.25 5.5  7.75]
B、array[1., 3.25,5.5, 7.75]
C、[1.   4.  7.  10.]
D、array[1. , 4. ,7. ,10.]
11、numpy库中创建全0数组使用方法()。
A、one
B、zeros
C、full
D、eye
12
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.cumsum(axis=1)
print(s)
运行结果为()。
A、
[[ 0  1  3  6]
 [ 4  9 15 22]]
B、
[[ 0  1  2  3]
 [ 4  6  8 10]]
C、
[ 4  6  8 10]
D、
[6 22]
13
import numpy as np
a=np.arange(6).reshape(3,2)
b=a.transpose()
print(b)
运行结果为()
A、
[[0 1 2]
 [3 4 5]]
 
B、
[[0 2 4]
 [1 3 5]]
C、
[[0 1]
 [2 3]
 [4 5]]
D、
[[1 2 3]
 [4 5 6]]
14
import numpy as np
a=np.array([1,2,3,4,5,6])
b=a.reshape(2,3)
print(a)
A、
[[1 2 3]
[4 5 6]]
B、
[[1 2]
 [3 4]
 [5 6]]
C、
[1,2,3,4,5,6]
D、
[1 2 3 4 5 6]
15
import numpy as np
a=np.array([1,2,3,4,5,6])
b=a.resize((2,3))
print(a)
A、
[[1 2 3]
 [4 5 6]]
B、
[1 2 3 4 5 6]
C、
[1,2,3,4,5,6]
D、
[[1 2]
 [3 4]
 [5 6]]
 
 
16、matplotlib库绘制图形时,如果要将中文字体设置为黑体,以下代码正确的是()。
A、
import matplotlib
matplotlib.RcParams[‘font.family’]=‘Simhei’
B、
import matplotlib
matplotlib.rcParams[‘font.family’]=‘Simhei’
C、
import matplotlib
matplotlib.rcParams[‘font_family’]=‘Simhei’
D、
import matplotlib
matplotlib.rcParams[font.family]=‘Simhei’
 
二.多选题
1下列哪些是numpy创建数组的函数?
A、full
B、eye
C、ones
D、zeros
2以下是pyplot模块绘图函数的是( )。
A、axis
B、pie
C、hist
D、barh
3pyplot模块的plot函数的第三个参数为格式字符串,包括以下哪些格式信息()。
A、颜色字符
B、点格式字符
C、线格式字符
D、字体字符
4、下列哪些代码能完成将绘图区域分割成4行3列共12个子区域,并将6号区域设置为当前绘图子区域?()
A、
import matplotlib.pyplot as plt
plt.subplot(4,3,6)
B、
import matplotlib.pyplot as plt
plt.subplot(436)
C、
import matplotlib.pyplot as plt
plt.subplot(3,4,6)
D、
import matplotlib.pyplot as plt
plt.subplot(346)
5、下列哪2个是pandas最主要的数据结构()。
A、Series
B、ndarray
C、DataFrame
D、list
6下列创建Series对象的python语句正确的是()。其中pd为pandas库的别名。
A、pd.Series([1,2,3])
B、pd.Series((1,2,3))
C、pd.Series({“x”:1,“y”:2,“z”:3})
D、pd.Series({1,2,3})
7、matplotlib库提供了以下哪2个便捷的绘图子模块?()
A、numpy
B、pyplot
C、pandas
D、pylab
 
三.填空题
1、把句子分成一个一个的词语,这个过程叫            。
分词
 
2、库是python语言中非常优秀的词云展示第三方库。
Wordcloud
 
3、使用jieba库的        函数可以自定义新词典来进行中文分词。
load_userdict;load_userdict()
 
4、使用numpy的ndarray数组的        属性可以获得数组元素的类型。
Dtype
 
5、numpy支持的数据类型        可表示范围为的整数。
int32
 
6、可通过Series对象的        属性和       属性分别获取数据部分和索引部分。
Values    index
 
7、如果使用jieba库进行中文分词,须使用             命令引入jieba库。
import jieba / from jieba import *
 
四.判断题
1、pyplot模块的bar函数为绘制横向条形图的绘图函数。
正确答案:×
2、reshape函数会改变原数组的形状,而resize函数不会改变原数组。
正确答案:×
3、numpy库的sum函数中如果参数axis为1,表示按行求和,并返回新数组。
正确答案:√
4、numpy的ndarray数组是由同质元素组成的多维数组。
正确答案:√
5、numpy的arange函数和python内置的range函数功能类似,都支持浮点数。
正确答案:×
 
1、下列哪个库提供了请求网页的功能?(    )
A、numpy
B、pandas
C、jieba
D、requests
2
import pandas as pd
a=pd.Series([1,2,3,4],index=list(“abcd”))
print(a[1:3].values)
运行以上代码,输出结果为(  )
A、 [1 2 3]
B、 [1 2]
C、 [2 3]
D、 [2 3 4]
3有一个DataFrame对象df,其列索引为“班级号”、“姓名”、“成绩”。每一行数据分别表示每个学生的班级号、姓名和成绩。如果要统计每个班成绩的标准差,下列哪个代码可以实现?
A、
group=df.groupby(‘班级号’)
average=group.mean()
B、
group=df.groupby(‘班级号’)
average=group.std()
C、
group=df.groupby(‘班级号’)
average=group.min()
D、
group=df.groupby(‘班级号’)
average=group.median()
4、使用merge函数在合并2个DataFrame对象时,如果要求根据连接主键的交集进行合并,参数how的值应设置为(   )。
A、outer
B、left
C、inner
D、right
 
5
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”)
print(df.at[‘b’,‘Y’])
运行以上代码输出结果为( )。
A、a
B、b
C、c
D、d
6、使用read_excel方法从excel文件中读取数据时,如果第一行作为标题行,参数header取值为(  )。
A、None
B、1
C、False
D、0
7获取DataFrame对象df的前5行,使用以下哪个代码?( )
A、df.tail()
B、df.info()
C、df[1:5]
D、df.head()
8
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’))
print(df.shape[0])
运行以上代码,输出结果为(  )。
A、4
B、2
C、(4,2)
D、(2,4)
9、返回DataFrame对象的行索引,使用属性(    )。
A、shape
B、index
C、columns
D、values
10、如果要依据DataFrame对象指定的列进行排序,需使用方法(  )。
A、sort_index
B、sort_values
C、sort_value
D、sort_indexs
11
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df[‘a’:‘c’])
运行以上代码,输出结果为( )。
A、
   X  Y
a  1  a
b  2  b
B、
   X  Y
0  1  a
1  2  b
2  3  c
C、
   X  Y
a  1  a
b  2  b
c  3  c
D、
   X  Y
0  1  a
1  2  b
12、有一个DataFrame对象df,其列索引为“班级号”、“姓名”、“成绩”。每一行数据分别表示每个学生的班级号、姓名和成绩。如果要统计每个班的平均成绩,下列哪个代码可以实现?
A、
group=df.groupby(‘班级号’)
average=group.mean()
B、
group=df.groupby(‘班级号’)
average=group.max()
C、
group=df.groupby(‘班级号’)
average=group.std()
D、
group=df.groupby(‘班级号’)
average=group.median()
13、假设DataFrame对象df有一列索引为“人口”,数据单位为万,如果要选择“人口”大于10万且小于30万的所有行,使用下列哪个代码可以实现?(   )
A、 df[df[‘人口’]>10 & df[‘人口’]<30]
B、 df[(df[‘人口’]>10) & (df[‘人口’]<30)]
C、 df[(df[‘人口’]>10) | (df[‘人口’]<30)]
D、 df[df[‘人口’]>10 | df[‘人口’]<30]
14、下列哪个库可以实现对复杂网页的解析从而获取想要的数据?(   )
A、BeautifulSoup
B、Requests
C、jieba
D、wordcloud
 
15、
import pandas as pd
a=pd.Series([1,2,3,4],index=list(“abcd”))
print(a[‘b’:‘d’].values)
运行以上代码,输出结果为(  )
A、 [2 3 4]
B、 [1 2 3]
C、 [2 3]
D、 [1 2 3 4]
16、返回DataFrame对象的列索引,使用属性(    )。
A、shape
B、index
C、columns
D、values
17
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df.iat[2,1])
运行以上代码输出结果为( )。
A、 a
B、b
C、c
D、d
18、获取DataFrame对象df的后5行,使用以下哪个代码?( )
A、 df.tail()
B、 df.info()
C、 df.head(5)
D、 df.tail(6)
19、Requests对象的( )属性以二进制格式返回服务器响应信息。
A、 text
B、 encoding
C、 content
D、 status_code
20下列哪个标签代码表格中的一行?(   )
A、


B、
C、

D、

21
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’))
print(df[1:3])
运行以上代码,输出结果为(  )。
 
A、
   X  Y
1  1  a
2  2  b
B、
   X  Y
1  2  b
2  3  c
C、
   X  Y
1  2  b
2  3  c
3  4  d
D、
   X  Y
2  2  b
3  3  c
22
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df[df[‘X’]>2])
运行以上代码,输出结果为(  )
A、
   X 
c  3 
d  4
B、
3 4
C、
   X  Y
c  3  c
d  4  d
D、 运行时出错
 
二.多选题(共5题,20.0分)
1当前目录下有一个excel文件“score.xlsx”,里面有2张工作表sheet1、sheet2。下列哪个代码可以实现从2张表中读出数据分别存入DataFrame对象df1和df2中。(   )
A、
import pandas as pd
a=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)
df1=a[0]
df2=a[1]
B、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)[0]
df2=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)[1]
C、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,sheet_name=0,header=0)
df2=pd.read_excel(“score.xlsx”,sheet_name=1,header=0)
D、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,header=0)[0]
df2=pd.read_excel(“score.xlsx”,header=0)[1]
2
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
如果要获取数据的第二行和第三行,下列哪些代码是正确的?(   )
A、 df[1:3]
B、 df[‘b’:‘c’]
C、 df.iloc[1:3]
D、 df.loc[‘b’:‘c’]
3、计算DataFrame对象df包含的行数,下列正确的是(   )。
A、 df.shape[0]
B、 df.shape
C、 len(df)
D、 df.shape[1]
4、网页地址包含以下哪些信息?(   )
A、网络访问协议
B、Web服务器域名或IP地址
C、用户请求访问的文件在服务器上的存储路径
D、用户发送到网页文件的数据
5、HTML文档代码主要由下列哪三个部分组成?(    )
A、图片
B、标签及属性
C、文本
D、事件代码
 
三.、填空题
1、     是一个表格型的数据结构,由行和列组成。
DataFrame
2、DataFrame对象的      方法可以将其它数据对象沿行索引方向追加到当前对象的末尾,并返回一个新对象。
append / append()
3、如果将DataFrame对象数据保存到excel文件中,应使用该对象的       方法。
to_excel;to_excel()
4、网站地址URL,中文名称为                    。
统一资源定位符
5、DataFrame对象的每一列都是一个           对象。
Series
6、执行数据采集任务的计算机程序称为     或者         。
网络爬虫   网络蜘蛛
7、HTML是            的中文缩写。
超文本标记语言
 6.for i in range(2,n):
if n%i0:break
if i
n-1:
print(‘是素数’)
else:
print(‘不是素数’)
7.‘abcabcabc’.count(‘abc’)的值为__3__。
8.对于有else子句的for循环和while循环,但循环因循环条件不成立而自然结束时__会__(会或不会)执行else中的代码。
10.已知x=‘hello world.’,那么表达式x.find(‘x’)和x.rfind(‘x’)的值都为__-1__。
12.print(”{:#>4d}".format(23))的输出结果是__##23__。
13.以下哪个选项不是Python中的合法名称(2_g):ag,a_g,ag,2_g
14.以下哪个选项是python中的合法名称(num_1):2num,num-1,num_1,num 1
15.print(3+5)语句的运行结果是(8)
16.print(24+16%3)  17
17.以下程序的输出结果是__0__。
a=8
a%=2
print(a)
18.print("
"3)的输出结果是()。
19.表达式True and False的值为:False
20.以下程序的输出结果是(7)
x=371
print(x%100//10)
21.a,b=1,2则a的值为__1__。
22.在循环语句中,continue___语句的作用是提前结束本层循环。
23.表达式"abc10’.isalnum()的值为__True

24.表达式True
3的值为 3
25.表达式’c:\windows\notepad.exe’.endswith(’.exe’)的值为__True__。
26.表达式’test.py’.endswith(’.py’)的值为__True__。
27.表达式 int(‘123’)的值为__123__。
28.表达式 ‘Beautifule is better than ugly.’.startswith(‘Be’,5)的值为__False__。
29.假设a,b=10,50,则条件表达式a>10 and b<100的值为__False_____。
30.python3.x语句 for i in range(3):print(i,end=’,’)的输出结果为__0,1,2,__。
31.程序的基本结构:顺序结构、选择结构和循环结构
32.在python语言内置的random库中,哪个函数功能是从序列s中随即选择一个元素(A):A、choice(s),B、randint(m,n),C、shuffle(s),D、uniform(m,n)
33.以下程序的输出结果(3
5)
print(3,end="")
print()
print(5)
34.表达式int(False)的值为:0
35.以下程序的输出结果是(-3)
a=-8
a//=3
print(a)
36.print(15%4)的输出结果是(3)
37.有python语句:
for s in “abced”:
print(s,end=’ ')
的运行结果是(a b c d e)。
38.print("{:&>8}".format(“python”))的输出结果是($$python)
39.有python语句:
for i in range(100,999+1):
a=i//100
b=i//10%10
c=i%10
if a
3 + b
3 + c3 == i:
print(i,end="  ")
的运行结果是(153  370  371  407)。
40.下列Python语句:
x,y=30,70
min = x if x
print(min)
的运行结果是(30)。
41.表达式’abc’ in (‘abcdefg’)的值为__True__。
42.已知x,y=3,5,那么执行x,y=y,x之后,x的值为__5__。
43.表达式’aaasdf’.strip(‘a’)的值为__‘sdf’
44.已知x=3,那么执行语句 x += 6之后,x的值为__9

45.python用于表示逻辑与运算的关键字是__and__。
46.表达式 int(4
0.5)的值为__2__。
47.表达式len(‘aaaassddf’.strip(‘afds’))的值为__0__。
48.在循环语句中,continue__语句的作用是提前进入下一次循环。
49.Python标准库random中的__choice()方法作用是从序列中随机选择1个元素。
50.已知x=3,那么执行语句 x*=6之后,x的值为__18

51.以下程序的输出结果是(9630)。
s=“0123456789”
print(s[::-3])
52.在python语句中,条件表达式中判断相等用的关系运算符是(==)。
53.表达式 chr(ord(‘A’)+2)的值为
’C’
54.表达式 sum(range(10))的值为__45

55.x=-9
print(x) if x>=0 else print(-x)
的输出结果为__9__。
56.python的内置函数__len()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。
57.表达式’apple.peach,banana,pear’.find(‘p’)的值为__1

58.表达式 len(‘SDIBT’)的值为__5__。
59.表达式’:’.join(‘hello world.’.split())的值为__‘hello:world.’
60.python语句’’.join(list(‘hello world!’))执行的结果是
’hello world!’
61.表达式 3 or 5 的值为__3

62.表达式 160.5的值为 4.0
63.有关for循环和while循环的退出(有两种方式:一是循环条件不成立或循环序列遍历结束,二是在循环过程中遇到break语句)。
64.分支结构的类型:单分支、双分支、多分支和嵌套if结构。
65.关于多分支结构if-elif-else语句的说法正确的是:最多只会执行一个分支。
66.表达式not (True and False)的值为(True)。
67.s.islower()方法是用来:判断字符串s中的字母是否全为小写。
68.以下程序的输出结果为(bird-fish-monkey-rabbit)
s=[‘bird’,‘fish’,‘monkey’,‘rabbit’]
print("-".join(s))
69.python语言的运行方式有__交互__式和文件式两种。
70.表达式’a’+‘b’的值为 ‘ab’
71.表达式’Hello world’.lower()的值为__‘hello world’
72.表达式 1234%1000//100的值为__2

73.表达式’abc10’.isdigit()的值为__False__。
74.表达式 ‘hello world, hellow every one’.replace(‘hello’,‘hi’)的值为__‘hi world, hiw every one’
75.表达式 5 if 5>6 else (6 if 3>2 else 5)的值为__6

76.表达式 len(range(1,10))的值为__9__。
77.表达式 ‘abcab’.replace(‘a’,‘yy’)的值为__‘yybcyyb’
78.Python标准库math中用来计算平方根的函数是__sqrt()

79.以下程序的输出结果是((‘bird,fish,monkey,rabbit,tiger,’,‘monkey’,’’)):
s=‘bird,fish,monkey,rabbit,tiger,monkey’
print(s.rpartition(“monkey”))
80.int(2<3)的值为__0__。
81.gcd(27,42)的值为__3__。
82.python语言的提示符是__>>>
83.表达式’:’.join(‘1,2,3,4,5’.split(’,’))的值为
’1:2:3:4:5’
84.eval()函数可以将__字符串__解析成数值。
85.表达式min([‘11’,‘2’,‘3’])的值为
’11’
86.print("{:=<8}".format(“python”))的输出结果是__python==

87.print(str(3+5))的输出结果是__8__。
88.Python语言的主要应用领域是(人工智能,网络爬虫,数据分析与处理)
89.判断三条线段a,b,c能否构成三角形的条件表达式,正确的是__(a>0)and(b>0)and(c>0)and(a+b>c)and(a+c>b)and(b+c>a)
90.语句a,b=b,a的功能是__交换a和b的值

91.下列Python语句:
k=16
while k>1:
k=k/2
print(k)
的运行结果是__1.0__。
92.在Python语句内置的random库中,哪个函数的功能是生成一个[m,n]之间的随机小数:uniform(m,n)
93.表达式’aaaassddf’.strip(‘af’)的值为__‘ssdd’
94.Python语句中的当行注释语句以符号
#作为开始。
95.Python运算符中用来计算整商的是
//
96.表达式True*3的值为 3
97.表达式 len(‘Hello world!’.ljust(20))的值为__20

98.表达式’a’.join(‘abc’,partition(‘a’))的值为__‘aaabc’__。
二、判断题
1.s[1:5]可以去除字符串s中从索引值1开始到5结束的子字符串。(F)
2.Python是一种跨平台、开源、免费的高级动态编程语言。(T)
3.判断整数x是否偶数的条件表达式为x%2=0。(F)
4.判断整数x是否偶数的条件表达式为x%2==0。(T)
5.带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句中的代码。(F)
6.print(1+‘2’)的输出结果是’3’。(F)
7.编写多层循环时,为了提高运行效率,应尽量减少内循环中不必要的计算。(T)
8.print(s[0,5,-1])输出的是字符串s左起6个字符的反向字符串。(F)
9.python使用缩进来体现代码之间的逻辑关系。(T)
10.在python的循环体内,continue语句的作用是结束该语句所在的循环。(F)
11.如果仅仅是用于控制循环次数,那么使用for i in range(20)和 for i in range(20,40)的作用是等价的。(T)
12.在python的循环体内,continue语句的作用是结束这一轮的循环,程序跳转到循环头部。(T)
13.s[::-1]的功能是对字符串s反向取整串。(T)
14.python变量名区分大小写,所以student和Student不是同一个变量。(T)
15.python不允许使用关键字作为变量名,允许使用内置函数作为变量名,但这会改变函数名的含义。(T)
16.放在一对三引号之间的任何内容将被认为是注释。(F)
17.print(8,end="")的功能是输出8以后不换行。(T)
18.a,b,c=10,20语句执行完以后,变量c的值为0。(F)
19.如果需要连接大量字符串成为一个字符串,那么使用字符串对象的join()方法比运算符+具有更高的效率。(T)
20.python标准库random的方法randint(m,n)用来生成一个[m,n]区间上的随机整数。(T)
21.ord(“c”)-ord(“a”)的值为2。(T)
22.Python运算符%不仅可以用来求余数,还可以用来格式化字符串。(T)
23.a
=b等价于a=ab。(T)
24.s.replace(" “,”")的功能是在字符串s尾部添加空格。(F)
25.a=b=10语句执行完以后,变量a和b的值都是10。(T)
26.在循环中continue语句的作用是跳出当前循环。(F)
27.表达式 ‘a’+1的值为’b’。(F)
28.Python语句只有一种运行方式——文件式。(F)
29.加法运算符可以用来连接字符串并生成新字符串。(T)
30.range(m,n)得到的迭代序列为:m,m+1,m+2,m+3,…,n-1。(T)
31.在python中0xad是合法的十六进制数字表示形式。(T)
32.当作为条件表达式时,空值、空字符串、空列表、空元组、空字典、空集合、空迭代对象以及任意形式的数字0都等价于False。(T)
33.已知x=3,那么赋值语句x=‘abcedfg’是无法正常执行的。(F)
34.在python中,变量不直接存储值,而是存储值的引用,也就是值在内存中的地址。(T)
35.在random模块的函数randint(1,100)获取随机数时,有可能会得到100。(T)
36.在python中可以使用for作为变量名。(F)
37.Python代码的注释只有一种方式,那就是使用#符号。(F)
38.random库中的函数random()返回左闭右开区间[0.0,0.1)中的一个随机浮点数。(T)
39.在python的循环体内,break语句的作用是结束该语句所在的循环。(T)
40.在python中,关系运算符可以连续使用,例如00并且a
41.“ABC”>"ab"结果为False。(T)
42.带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句的代码。(F)
43.在python3.0中可以使用中文作为变量名。(T)
44.Python中一切内容都可以称为对象。(T)
45.Python语言的标示符只能以字母开头,后面可以跟字母、数字、下划线。(F)
46.程序中异常处理结构在大多数情况下是没必要的。(F)
三、编程题
‘’’
使用循环方法求解百钱买百鸡问题。假设公鸡5元一只,母鸡3元一只,小鸡1元三只,
现有100元钱想买100只鸡,编程计算买鸡的方案,有多少种买法?
‘’’
for a in range(0,21):
for b in range(0,34):
for c in range(0,101):
if a+b+c100 and a5+b3+c/3100:
print(a,b,c)
#韩信点兵
for i in range(1000,1101):
if i%32 and i%54 and i%76:
print(i)
#打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("{}{}={:2d}".format(i,j,ij),end=" ")
print()
#从键盘输入任意一个正整数,编程计算该数的阶乘 如:输入5,阶乘结果120 。
x=eval(input(“请输入一个正整数”))
t=1
for i in range(1,x+1):
t=t*i
print(t)
#编程分别计算100以内(含100)奇数与偶数的和。
s1,s2=0,0
for i in range(1,101):
if i%2
1:
s1=s1+i
else:
s2=s2+i
print(s1,s2)
#编程计算前30项的和:s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n)
s,y=0,0
for i in range(1,31):
s=s+i
y=y+s
print(y)
#编程产生菲波拉契数列20项,例如:0  1   1  2  3   5   8   13    21    ……
x1=0
x2=1
print(x1,end=" “)
print(x2,end=” “)
for i in range(1,18+1):
x3=x1+x2
print(x3,end=” ")
x1=x2
x2=x3
#一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
h=100
s=0
for i in range(1,11):
s=s+h
h=h/2
s=s+h
print(s-h,h)
‘’’
猴子第一天摘了若干个桃子,当天吃了一半,还不过隐,有多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子,问第一天共摘了多少个桃子
‘’’
x=1
for i in range(1,10):
x=(x+1)2
print(x)
#商场购物
x=eval(input(“x=”))
if x<1000:
y=x
elif x<2000:
y=0.9
x
elif x<3000:
y=0.8x
else:
y=0.7
x
print(y)
#分段函数1
import math
x=eval(input(“x=”))
if x>5:
y=math.sin(x)+(x
2+1)0.5
elif x>0:
y=math.e
x+math.log(x,5)+x**(1/5)
else:
y=math.cos(x)-x3+3x
print(y)
#分段函数2
x=eval(input(“x=”))
if x<0:
y=0
elif x<5:
y=x
elif x<10:
y=3
x-5
elif x<20:
y=0.5x-2
else:
y=0
print(y)
#判断素数
x=eval(input(“x=”))
for i in range(2,x):
if x%i==0:
print(“不是素数”)
break
else:
print(“是素数”)
‘’’
一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第2天给2分钱,第3天给4分钱,…,富翁每天给穷人的钱是前一天的两倍,直到满一个月,分别显示富翁给陌生人的钱和陌生人给富翁的钱各是多少?
‘’’
s1,s2=0,0
x=0.01
for i in range(1,31):
s1=s1+100000
s2=s2+x
x=2
x
print(s1,s2)
#判断闰年
x = eval(input(‘请输入一个年份’))
if x%4000 or (x%40 and not x%100==0):
print(‘是闰年’)
else:
print(‘不是闰年’)
四五章选择判断填空编程
一、选择题
1.下列表达式值为False的是:______。2 in {1:2,3:4}
2.下列代码执行的正确结果为(.[1,4,9]
lnum=[]
for i in range(1,4)
lnum.append(i
2)
print(lnum)
3. 执行语句x={},x的类型是:.字典
4.已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为
.4
5.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
6. 下列元组定义正确的是(.tupScores=("萧峰”,)
7. 有关pop()方法的说法,正确的是:__集合的pop()方法是从集合中随机删除一个元素
8.已知s={1,2,3,4},以下操作执行会报错的是:___s.remove(5)
9.下列集合运算的运算符,求交集的是:
.&
10.以下哪种不是字典的遍历方式:按"元素"遍历
11.列表guests=[“萧峰”,”杨过”,”令狐冲”,”张无忌”,”郭靖”],下列哪种方法能够在”令狐冲”前插入”张三丰”?(guests.insert(2, ”张三丰”)
12.假设d1,d2是两个字典,执行操作d1.update(d2)后,下列说法正确的是: d1的内容被更新,d2不变
13.courses=“计算机,数学”,执行代码courses1=list(courses)后,courses1的值为()。
.[‘计’,‘算’,‘机’, ’ , ', ‘数’,‘学’]
14.下列关于列表与元组的说法正确的是( )。列表的元素能修改
15.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?( )guests.remove[3]
15.字典对象的________方法以”(键,值)"的形式返回字典中的所有条目的列表。.items()
16下列代码执行结果为( )?.[6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
ls=[6]*10
print(ls)
17. 下列代码执行的正确结果为(.[1,4,9]
)。
lnum=[i**2 for i in range(1,4)]
print(lnum)
18. 下列有关字典条目的说法,错误的是:字典中的值必须是不可变类型
19. group=[(“张三丰”,95),(“杨过”,94)],下列操作不正确的是(group[1][0]="虚竹"将’杨过’修改为’虚竹’。)。
20. score = eval(input("请输入3个学生的分数列表 "))
maxScore = max(score)
minScore = min(score)
aveScore = sum(score)/len(score)
print(maxScore,minScore,aveScore))
如输入分数为[94,96,95],代码执行的正确结果为(96 94 95
21. 列表guests=[”令狐冲”,”张无忌”,”郭靖”],ls=["98”,”97”,”99”],guests+ls执行结果正确的是(.["令狐冲’,’张无忌’,’郭靖’, "98’,’97’,’99’]
22.。下列列表定义错误的是(names=[萧峰,96,令狐冲]
23. 表达式sorted({4:2,3:1,5:6})的值为
.[3,4,5]
24. 下列代码执行的正确结果为(.[1,4,9]
)。
lnum=[]
for i in range(1,4)
lnum.append(i**2)
print(lnum)
25. 执行语句x={},x的类型是:
.字典
26.已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为___4
27.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
28. 下列元组定义正确的是(tupScores=("萧峰”,)
29. 有关pop()方法的说法,正确的是:集合的pop()方法是从集合中随机删除一个元素
s={1,2}
s.add({2,3})
print(s)
31. guests=[“李秋水”,“郭襄”,“赵敏”],彻底从内存中删除guests的方法是(del guests
32.列表guests=[“张三丰”,“萧峰”,“杨过”,“令狐冲”,“张无忌”],下列表达式用来判断指定的元素是否在列表中,下列描述正确的是?(.“杨” not in guests,返回True。
33. 列表courses=[”法律”,"管理”,”计算机”,”数学”],列表切片结果错误的是(courses[0:3:-2]切片结果为["法律’,’计算机’]。
34. 执行下列代码的结果为:报错
s={1,2}
s.add({2,3})
print(s)
35.下列集合运算的运算符,求并集的是:
.|
36. 下列哪种方法能够生成一份列表courses的备份?(courses.copy()
37. 已知x={‘a’:2,‘b’:4},以下操作会报错的是:x.pop(‘c’)
38. 以下说法正确的是:集合可以作为字典的值
39. 关于列表复制,下列说法错误的是(利用列表赋值实现复制会生成列表的备份。
40. 执行下列代码的结果为:.{1:4,2:5,3:6}
l1=[1,2,3]
l2=[4,5,6]
d={}
for j in range(3):
d[l1[i]]=l2[i
41.已知x = {1:2, 2:3},那么表达式x.get(3, 4)的值为__4
42.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
43. 列表guests=[“张三丰”,“萧峰”,“杨过”,“令狐冲”,“张无忌”],下列表达式用来判断指定的元素是否在列表中,下列描述正确的是?(.“杨” not in guests,返回True。
44. 下列关于列表与元组的说法不正确的是(列表的元素不能修改
45. 按照指定的键访问字典中对应条目的值应采用的方法是:get()
46,下列从输入设备获取数值列表的方法正确的是(lnum=eval(input("请输入数值列表: ”))
47. 字典对象的____keys()
方法返回字典中的"键"的列表。
48下列哪个函数可以将range()函数生成的数值对象转换成数值列表?(list()
49. 以下创建集合的操作错误的是:s={}
50.已知x={1:2,3:4},以下选项返回False的是:2 in x
51. 以下哪种不是字典的遍历方式:按"元素"遍历
二、判断题
1、del命令和pop命令删除列表元素的方式相同。F
2、字典和集合属于无序序列。T
3、Python字典中的"键”可以是列表。F
4、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。T
5、可以使用del删除集合中的部分元素。F
6、假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的。T
7、元组可以作为字典的"键”。T
8、已知列表x中包含超过5个以上的元素,那么语句 x = x[:5]+x[5:] 的作用是将列表x中的元素循环左移5位。F
9、字典中的值不允许重复。F
10、Python字典中的"键”可以是元组。T
11、字典可以通过索引访问所存储的条目。F
12、Python集合可以包含相同的元素。F
13、访问字典是通过键访问条目的值。T
14、已知x = list(range(20)),那么语句print(x[100:200])无法正常执行。F
15、Python集合中的元素可以是列表。F
16、元组是不可变的,不支持列表对象的insert()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。T
17、元组也是用来存放一组相关的数据,所以元组与列表相同。F
18、集合中的元素不允许重复。T
19、在Python 3.5中运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的合并和集合的并集运算。F
20、列表可以作为字典的"键”。F
21、Python支持使用字典的"键”作为下标来访问字典中的值。T
22、字典的"键”必须是不可变的。T
23、Python集合中的元素可以是元组。T
24、语句s1={}创建了一个空集合。F
25、对于数字n>2,如果表达式 0 not in [n%d for d in range(2, n)] 的值为True则说明n是素数。T
26、已知x = (1, 2, 3, 4),那么执行x[0] = 5之后,x的值为(5, 2, 3, 4)。F
27、Python字典和集合属于无序序列。T
28、同一个列表对象中所有元素必须为相同类型。F
29、已知x = {1:1, 2:2},那么语句x[3] =3无法正常执行。F
30、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。F
31、列表scores=[98,96,95,94,92],scores[::1]与scores[::-1]返回列表的值相等。F
32、只能对列表进行切片操作,不能对元组和字符串进行切片操作。F
33、Python列表、元组、字符串都属于有序序列。T
34、列表的长度是列表中元素的个数减1。F
35、字典中的键必须是不可变的类型,比如字符串、元祖或者列表。F
36、字典的键一旦被加入到字典中,除非随着条目一起被删除,否则都是始终保持不变的。T
37、已知x = {1:1, 2:2},那么语句x[3] =3无法正常执行F
38、只能通过切片访问列表中的元素,不能使用切片修改列表中的元素。F
39、在Python中元组的值是不可变的,因此,已知x = ([1], [2]),那么语句x[0].append(3)是无法正常执行的。F
40、运算符"-”可以用于集合的差集运算。T
41、删除列表中重复元素最简单的方法是将其转换为集合后再重新转换为列表。T
42、遍历列表用for和range()函数配合可以减少代码的重复度。T
43、已知x = list(range(20)),那么语句del x[::2]可以正常执行。T
44、字典的"键”必须是不可变的。T
45、无法删除集合中指定位置的元素,只能删除指定值的元素。T
46、列表对象的pop()方法默认删除并返回最后一个元素,如果列表已空则抛出异常。T
47、Python集合不支持使用下标访问其中的元素。T
48、删除列表中重复元素最简单的方法是将其转换为集合后再重新转换为列表。T
49、遍历列表用for和range()函数配合可以减少代码的重复度。T
50、字典和集合都支持双向索引。F
51、del命令和pop命令删除列表元素的方式相同。F
52、字典和集合属于无序序列。T
53、Python支持使用字典的"键”作为下标来访问字典中的值。T
54、字典可以通过索引访问所存储的条目。F
55、Python集合可以包含相同的元素。F
56、已知x = list(range(20)),那么语句print(x[100:200])无法正常执行。F
57、元组是不可变的,不支持列表对象的insert()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。T
58、元组也是用来存放一组相关的数据,所以元组与列表相同。F
59、集合中的元素不允许重复。T
60、在Python 3.5中运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的合并和集合的并集运算。F
61、Python支持使用字典的"键”作为下标来访问字典中的值。T
62、对于数字n>2,如果表达式0 not in [n%d for d in range(2, n)]的值为True则说明n是素数。T
63、同一个列表对象中所有元素必须为相同类型。F
64、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。F
65、del命令和pop命令删除列表元素的方式相同。F
66、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。I
67、可以使用del删除集合中的部分元素。F
68、假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的。T
69、字典中的值不允许重复。F
70、Python字典中的"键”可以是元组。T
71、使用列表对象的remove()方法可以删除列表中首次出现的指定元素,如果列表中不存在要删除的指定元素则抛出异常。T
72、使用Python列表的方法insert()为列表插入元素时会改变列表中插入位置之后元素的索引。T
73、使用pop()方法删除字典的指定键对应的条目时,如果缺省指定键参数,则随机删除一个条目。F
74、表达式 list(’[1, 2, 3]’) 的值是[1, 2, 3]。F
75、利用append()方法只能在列表尾部追加新的元素。T
76、列表切片缺省"起始索引”时,切片默认从索引1元素开始。F
77、已知x是个列表对象,那么执行语句y = x之后,对y增加一个元素的操作都会同样作用到x上。T
78、采用copy()方法与列表之间赋值实现复制的过程相同。F
79、无法删除集合中指定位置的元素,只能删除特定值的元素。T
三、填空题
1.已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式 max(x) 的值为
’3’

2.已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为
[2,3]

3.已知 x = [3, 5, 7],那么执行语句 x[:3] = [2]之后,x的值为
____[2]
4.列表guests=["萧峰”,”杨过”,”令狐冲”,”张无忌”,”郭靖”],删除”杨过”的方法是guests.
remove______(”杨过”)。
5.表达式 {1, 2, 3} | {3, 4, 5} 的值为_________{1,2,3,4,5}
6.表达式 (1,) + (2,) 的值为______(1,2)

7.表达式 {1, 2, 3} & {3, 4, 5} 的值为______{3}

8.已知列表 x = [1, 2],那么连续执行命令 y = x[:] 和 y.append(3) 之后,x的值为___[1,2]

9.表达式 [1,2,3].count(4) 的值为________0_______。
10.已知 x = (3,),那么表达式 x * 3 的值为
____(3,3,3)
11.guests=["赵敏”,”任盈盈”,”袁紫衣”],复制guests并生成备份的方法是guests.copy( )。
12.列表、元组、字符串是Python的_____有序
__(有序或无序)序列。
13.guests=["赵敏”,”任盈盈”,”袁紫衣”],执行guests
*2的返回结果为["赵敏’,’任盈盈’,’袁紫衣’,"赵敏’,’任盈盈’,’袁紫衣’]。
14.已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为
_____{1:2,2:3}

15.已知x = [1, 2, 3],那么连续执行y = [1, 2, 3]和y.append(4)这两条语句之后,x的值为_________[1,2,3]

16.已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为
_[1,3,2,3]
17.字典对象的______clear()方法可以一次性清空字典中所有条目。
18.已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为
[3,5,7,1,2]
19.已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为
_[1,2,3,2]

20.列表group=[(“郭靖”,99),(“杨过”,98)],则group[0][1]=99
21.表达式 [1, 2] * 2 的值为_______[1,2,1,2]
22.已知 x = [3, 7, 5],那么执行语句 x.sort(reverse=True)之后,x的值为______[7,5,3]

23.表达式 set([1,2,3]) == {1, 2, 3} 的值为_____True_______。
24.表达式type({3})的值为_________set
______。
25.执行下列语句:
x={1:1,2:2}
x[1]=3
print(len(x))
显示结果为:2
26.表达式 {1, 2, 3} - {3, 4, 5}的值为____{1,2}
27.表达式 sum(range(1, 10, 2)) 的值为_____25

28.列表courses=[”法律”,"管理”,”计算机”,”数学”],执行下列代码能对courses列表的元素降序排序,并改变原列表的顺序,courses.sort(reverse=False)。
29.字典对象的______keys______方法返回字典的"键"列表。
30.表达式sorted({‘a’:3, ‘b’:9, ‘c’:78}.values())的值为
____[3,9,78]
31.表达式[1,2]3的执行结果为
_[1,2,1,2,1,2]
32.表达式 list(range(50, 60, 3)) 的值为________[50,53,56,59]

33.表达式 len([i for i in range(10)]) 的值为______10
__。
34.已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4)之后 ,x的值为_____[1,4,2,3]
35.已知列表 x = list(range(10)),那么执行语句 del x[::2]之后,x的值为
[1,3,5,7,9]

36.已知 x = (3), 那么表达式 x * 3 的值为_____9
__。
37.列表guests=[”a”,“b”,”cd”,”e”],表达式"d” in guests,返回结果为____False____。
38.表达式 [1, 2] + [3] 的值为_________[1,2,3]
39.表达式 str([1, 2, 3]) 的值为
_’[1,2,3]‘
40.表达式type({}) == set的值为________False_______。
41.已知列表 x = list(range(5)),那么执行语句 x.remove(3) 之后,表达式 x.index(4) 的值为____3____。
42.已知列表 x = [1, 2],那么执行语句 x.append([3]) 之后,x的值为
[1,2,[3]]

43.已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4)之后 ,x的值为____[1,4,2,3]
44.已知 x = [1, 2, 3, 4, 5],那么执行语句 del x[1:3] 之后,x的值为
[1,4,5]

45.已知列表 x = [1, 2],那么执行语句 x.extend([3]) 之后, x的值为_____[1,2,3]
46.已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为
[1,3,2,3]
47.已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x.keys()) 的值为____6
____。
48.表达式sorted({3:‘a’,8:‘b’,5:‘c’}.values())的值为:
[‘a’,‘b’,‘c’]

49.已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为___{1,2,3}
50.guests=[“令狐冲”,“张无忌”,“郭靖”],ls=[“李秋水”,“郭襄”,“赵敏”],将guests列表的值修改为[‘令狐冲’, ‘张无忌’, ‘郭靖’, ‘李秋水’, ‘郭襄’, ‘赵敏’]的方法是guests.
extend
___(ls)。
51.字典对象的________get___方法可以获取指定"键”对应的"值”,如果指定的键在字典中不存在,则返回默认值。
52.清空列表guests=[“赵敏”,“任盈盈”,“袁紫衣”]的命令是____del____guests[:]。
53.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x.values() 的值为_____True_________。
54.执行下列语句:
x={1:1,2:2}
x[3]=1
print(len(x))
显示结果为:3
55.已知x = ([1], [2]),那么执行语句x[0].append(3)后x的值为________([1,3],[2])
56.执行下列代码可以创建数值列表:lnum=list(range(1,9))。
57.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x 的值为___False

58.表达式sorted({3:‘a’,8:‘b’,5:‘c’})的值为:
[3,5,8]

59.已知x为非空且元素无序的列表,那么表达式 x.sort() == sorted(x) 的值为____False
___。
60.表达式[3] in [1, 2, 3, 4]的值为______False__________。
61.表达式sorted({3:‘a’,8:‘b’,5:‘c’})的值为:___ [3,5,8]
62.表达式 {1, 2, 3} ^ {3, 4, 5} 的值为
{1,2,4,5}

63.表达式 list(range(5)) 的值为
[0,1,2,3,4]
64.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘a’ in x 的值为______True________。
65.列表courses=[”Falv”,"Guanli”,”Jisuanji”,”Shuxue”,”Lishi”,’Dili’],courses[1:5:2]切片结果为["Guanli”,”Shuxue”]。
66.执行下列语句:
67.x={1:1,2:2}
x[3]=1
print(len(x))
显示结果为:3
68.清空列表guests=[“赵敏”,“任盈盈”,“袁紫衣”]的命令是____del____guests[:]。
69.已知列表 x = [1, 2, 3],那么执行语句 x.insert(0, 4) 只有,x的值为_____[4,1,2,3]

70.已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为
[2,3]
71.已知 x = [3, 5, 7],那么表达式 x[10:]的值为
_[]
72.表达式type({}) == set的值为_______False
__。
73.已知 x = [1, 2],那么执行语句 x[0:1] = [3, 3]之后,x的值为_____[3,3,2]__
74.已知x = list(range(20)),那么表达式x[-1]的值为________19____________。
75.del________命令既可以删除列表中的一个元素,也可以删除整个列表。
76.表达式 type(3.0) in (int, float, complex) 的值为______True

77.表达式 3 not in [1, 2, 3]的值为____False______。
78.表达式 3 in {1, 2, 3} 的值为_____True

79.表达式 len(range(1, 10)) 的值为_____9______。
字典对象的_______values_______方法返回字典的"值”列表。
三、编程题
‘’’
编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
‘’’
x=input(“x=”)
l=x.split(”,")
l.sort()
print(",".join(l))
‘’’
编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3 Read Python 2 or Python 3
然后,输出应该是:
2:2
3:2
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
‘’’
x=input(“x=”)
l=x.split()
d={}
for i in l:
d[i]=d.get(i,0)+1
l2=sorted(d)
for i in l2:
print("{}:{}".format(i,d[i]))
#依次输入三个整数放在一个列表中,请把这三个数由小到大输出。
l=[]
for i in range(3):
x=int(input(“x=”))
l.append(x)
l.sort()
for i in l:
print(i,end=" ")
‘’’
使用列表生成式方法求解百钱买百鸡问题。
假设大鸡5元一只,中鸡3元一只,小鸡1元三只,
现有100元钱想买100只鸡,有多少种买法?
‘’’
l=[(i,j,k) for i in range(0,100) for j in range(0,100) for k in range(0,100) if i+j+k==100 and 5i+3j+k/3==100]
for i in l:
print(i)
‘’’
使用给定的整数n,编写一个程序生成一个包含(i, i
i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
‘’’
n=eval(input(“n=”))
d={}
for i in range(1,n+1):
d[i]=i*i
print(d)
‘’’
使用列表生成式随机产生10个两位的正整数,存入列表ls中,输出ls中的这10个随机数,
然后对这10个随机数求平均值,并输出统计高于平均值的数有多少个。
‘’’
from random import *
ls=[randint(10,99) for i in range(10)]
print(ls)
pj=sum(ls)/10
n=0
for i in ls:
if i>pj:
n=n+1
print(n)
#编写一个程序,输出2000到3200(含2000和3200)之间所有是7的倍数,但不是5的倍数的整数。要求:用列表保存符合条件的整数,输出结果各整数之间用逗号分隔,并输出在一行上。
l=[]
for i in range(2000,3201):
if i%70 and i%5!=0:
l.append(str(i))
print(",".join(l))
‘’’
编写一个程序,接收一系列单个空格分隔的单词作为输入,在删除所有重复的单词并按字母升序排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
‘’’
x=input(“x=”)
l=x.split()
s=set(l)
l2=list(s)
l2.sort()
for i in l2:
print(i,end=" “)
‘’’
编写一个接收句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母10
数字3
‘’’
d={‘字母’:0,‘数字’:0}
x=input(“x=”)
for i in x:
if i.isdigit():
d[‘数字’]=d[‘数字’]+1
elif i.isalpha():
d[‘字母’]=d[‘字母’]+1
for k,v in d.items():
print(”{} {}".format(k,v))
‘’’
使用列表生成式来求列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
[1,2,3,4,5,6,7,8,9]
然后,输出应该是:
[1,3,5,7,9]
‘’’
l=eval(input(“l=”))
l2=[ i for i in l if i%2
1]
print(l2)

、生成包含20个随机数的列表,然后将前10个元素升序排列,

后10个元素降序排列,并时输出结果
This is a temporary script file.
“”"
import random
x=[random.randint(0,100) for i in range(20)]
print(x)
x[:10]=sorted(x[:10])
x[10:]=sorted(x[10:],reverse=True)
print(x)
1.查看python当前工作目录,以下哪个代码是正确的?
A、 os.getcwd()  
B、 import os   os.getcwd()
C、import os   os.chdir()
D、os.chdir()
2以只读方式打开d:\myfile.txt文件,以下代码正确的是(  )?
A、f=open(“d:\myfile.txt”,“r”)
B、f=open(“d:\myfile.txt”,“r”)
C、f=open(“d:\myfile.txt”,“w”)
D、f=open(“d:\myfile.txt”,“r+”)
3假如D:\下面有个file1.txt文件,将字符串“中国加油”追加到文件尾部,如何实现?
A、f=open(“file1.txt”,“a+”)   f.write(“中国加油”)
B、f=open(“d:\file1.txt”,“w”)    f.write(“中国加油”)
C、f=open(“d:\file1.txt”,“a+”)    f.write(“中国加油”)
D、f=open(“d:\file1.txt”,“a+”)     f.write(“中国加油”)
4将2个字符串"aaaa",“bbbb"分2行保存到d:\文件file.txt中。代码如下:
A、f=open(“d:\file.txt”,“w”)   f.writelines([“aaaa\n”,“bbbb\n”])
B、f=open(“d:\file.txt”,“w”)   f.write([“aaaa\n”,“bbbb\n”])
C、f=open(“d:\file.txt”,“w”)   f.writelines([“aaaa”,“bbbb”])
D、f=open(“d:\file.txt”,“r”)    f.writelines([“aaaa”,“bbbb\n”])
5文件file.txt内容如下:
aaaa
bbbb   执行f=open(“file.txt”,“r”)
s=f.readline()
print(s)
后,输出结果为()
A、aaaa bbbb
B、aaaa
C、 aaaa
bbbb
D、bbbb
6文件file.txt内容如下:
aaaa
bbbb
执行f=open(“file.txt”,“r”)
s=f.readlines()
print(s)
后,输出结果为()
A、 aaaa
bbbb
B、 [‘aaaa\n’,‘bbbb\n’]
C、 ‘aaaa\nbbbb\n’
D、 aaaa bbbb
 
7、d:\stu.csv文件保存了学生的信息,以下哪个代码序列能实现信息的读出?
A、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.read(f)
for i in r:
    print(i)
f.close()
B、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.reader(f)
print®
f.close()
C、
import csv
f=open(“d:\stu.csv”,“r”)
r=csv.reader(f)
for i in r:
    print(i)
f.close()
D、
f=open(“d:\stu.csv”,“w”)
r=csv.reader(f)
for i in r:
    print(i)
f.close()
8、try:
    a=10
    b=0
    c=a/b
except ZeroDivisionError:
    print(“aaaa”)
else:
    print(“bbbb”)
写出程序运行结果。
A、bbbb
B、aaaa bbbb
C、aaaa
D、 aaaa
bbbb
9以下代码运行时会出现什么类型的异常?
s=[1,2,3,4,5]
 
a=s[5]
A、KeyError
B、IOError
C、NameError
D、IndexError
10、d:\有一个二进制文件file1.dat,以可读可写方式打开该文件,如果写入新的内容,内容会被追加到文件尾部。以下哪个语句是正确的?
A、f=open(“d:\file1.dat”,“rb”)
B、f=open(“d:\file1.dat”,“wb”)
C、f=open(“d:\file1.dat”,“ab+”)
D、f=open(“d:\file1.dat”,“wb+”)
 
二.多选题(共10题,40.0分)
1文件操作包括哪些步骤?
A、打开文件
B、读文件或写文件
C、关闭文件
D、无须关闭文件
2下列哪些文件是二进制文件?
A、 .txt文件
B、 .doc文件
C、 .py文件
D、  .xls文件
3writelines()方法的参数可以是哪些类型?
A、列表
B、集合
C、元组
D、字典
4以下哪些描述是csv文件的特征?
A、纯文本,一般使用某个字符集。
B、由记录组成,一行对应一条记录。
C、多个字段之间的分隔符必须是逗号。
D、每条记录都有同样的字段序列。
5将2个学生信息:
张三,男,20
李娜,女,30
写到stu.csv文件中,以下哪些代码是正确的?假设writer对象w已经创建。
A、
w.writerow([‘张三’,‘男’,20])
w.writerow([‘李娜’,‘女’,30])
B、
w.writerows([[‘张三’,‘男’,20],[‘李娜’,‘女’,30]])
C、
w.write([‘张三’,‘男’,20])
w.write([‘李娜’,‘女’,30])
D、w.writerow([‘张三’,‘男’,20],[‘李娜’,‘女’,30])
6以下哪些是python中的异常名称?
A、ZeroDivisionError
B、IOError
C、IndexError
D、KeyError
7以下代码运行时会出现什么类型的异常?(单选)
a={“x”:1,“y”:2}
print(a[‘z’])
A、KeyError
B、IndexError
C、IOError
D、NameError
8、csv文件每个记录字段之间的分隔符可以是以下哪些字符?
A、中文逗号
B、英文分号
C、英文逗号
D、制表符
9、D盘python目录下有个文件file1.py。如果在python中描述这个文件路径,下列正确的是?
A、 “d:\python\file1.py”
B、 “d:\python\file1.py”
C、 “d:/python/file1.py”
D、 r “d:\python\file1.py”
10 从文件读写的角度看,文件一般分为哪些类型?
A、文本文件
B、视频文件
C、二进制文件
D、图片文件
 
三.填空题
1打开文件使用python内置的    命令。
open
2关闭文件对象f的代码为      。
f.close()
3使用      语句打开文件后,文件操作结束后会自动关闭文件。
with
4读写csv格式文件要使用import命令导入       模块。
csv
5读取csv文件数据时首先要创建一个        对象。
reader
6将数据写入csv文件首先要创建一个         对象。
writer
7将数据记录写到csv文件中,记录之间如果出现空行,需要在打开文件时增加          参数,且将该参数值设为空字符串。
newline
8在程序运行时出现的错误,被称为          。
异常
9、python使用        子句来进行异常的捕获与处理。
try
10、如果无法确定异常的类型,可以使用通用的异常对象               来捕获。
Exception
 
四.判断题
1、writelines()方法参数可以是一个列表,且元素可以是任何类型。
正确答案:×
2、readline()方法一次可以读出文件全部内容
正确答案:×
3、readlines()方法可以读出文件全部内容,并以列表形式返回,其中每行对应一个列表元素。
正确答案:√
4、程序运行出现的异常无须捕获,程序能正常运行。
正确答案:×
5异常处理让程序不会被意外终止,而是按照设计以不同的方式结束运行。
正确答案:√
 
1、pyplot模块用来显示图例的函数为()。
A、title
B、xlable
C、ylable
D、legend
2
import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([10,20,30,40,50])
c=a+b
print©
A、array[1,2,3,4,5,10,20,30,40,50]
B、[11 22 33 44 55]
C、array[11,22,33,44,55]
D、a[1 2 3 4 5 10 20 30 40 50]
3
import numpy as np
a=np.arange(24).reshape(2,3,4)
print(a[1,1,:])
输出结果为()。
A、[0 1 2 3]
B、[12 13 14 15]
 
C、[16 17 18 19]
D、[20 21 22 23]
4
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.sum()
print(s)
运行结果为()。
A、[ 6 22]
B、[ 4  6  8 10]
C、28
D、36
5用来设置x轴的刻度值或标签的函数是()。
A、xlim
B、ylim
C、xticks
D、yticks
6
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.sum(axis=0)
print(s)
运行结果为()。
A、[6 22]
B、28
C、36
D、[ 4  6  8 10]
7通过( )库可完成数据的可视化。
A、numpy
B、pandas
C、matplotlib
D、jieba
8numpy库中实现数组维度变换的方法是()。
A、reshape
B、transpose
C、resize
D、flatten
9
import numpy as np
a=np.array([1,2,3,4,5])
print(a.shape,a.size,a.itemsize)
以上代码运行结果是()。
 
A、5 5 4
B、5 5 8
C、(5,) 5 4
D、(5,) 5 2
10
import numpy as np
a=np.linspace(1,10,4,endpoint=False)
print(a)
以上代码运行是()  。
A、[1.   3.25 5.5  7.75]
B、array[1., 3.25,5.5, 7.75]
C、[1.   4.  7.  10.]
D、array[1. , 4. ,7. ,10.]
11、numpy库中创建全0数组使用方法()。
A、one
B、zeros
C、full
D、eye
12
import numpy as np
a=np.arange(8).reshape(2,4)
s=a.cumsum(axis=1)
print(s)
运行结果为()。
A、
[[ 0  1  3  6]
 [ 4  9 15 22]]
B、
[[ 0  1  2  3]
 [ 4  6  8 10]]
C、
[ 4  6  8 10]
D、
[6 22]
13
import numpy as np
a=np.arange(6).reshape(3,2)
b=a.transpose()
print(b)
运行结果为()
A、
[[0 1 2]
 [3 4 5]]
 
B、
[[0 2 4]
 [1 3 5]]
C、
[[0 1]
 [2 3]
 [4 5]]
D、
[[1 2 3]
 [4 5 6]]
14
import numpy as np
a=np.array([1,2,3,4,5,6])
b=a.reshape(2,3)
print(a)
A、
[[1 2 3]
[4 5 6]]
B、
[[1 2]
 [3 4]
 [5 6]]
C、
[1,2,3,4,5,6]
D、
[1 2 3 4 5 6]
15
import numpy as np
a=np.array([1,2,3,4,5,6])
b=a.resize((2,3))
print(a)
A、
[[1 2 3]
 [4 5 6]]
B、
[1 2 3 4 5 6]
C、
[1,2,3,4,5,6]
D、
[[1 2]
 [3 4]
 [5 6]]
 
 
16、matplotlib库绘制图形时,如果要将中文字体设置为黑体,以下代码正确的是()。
A、
import matplotlib
matplotlib.RcParams[‘font.family’]=‘Simhei’
B、
import matplotlib
matplotlib.rcParams[‘font.family’]=‘Simhei’
C、
import matplotlib
matplotlib.rcParams[‘font_family’]=‘Simhei’
D、
import matplotlib
matplotlib.rcParams[font.family]=‘Simhei’
 
二.多选题
1下列哪些是numpy创建数组的函数?
A、full
B、eye
C、ones
D、zeros
2以下是pyplot模块绘图函数的是( )。
A、axis
B、pie
C、hist
D、barh
3pyplot模块的plot函数的第三个参数为格式字符串,包括以下哪些格式信息()。
A、颜色字符
B、点格式字符
C、线格式字符
D、字体字符
4、下列哪些代码能完成将绘图区域分割成4行3列共12个子区域,并将6号区域设置为当前绘图子区域?()
A、
import matplotlib.pyplot as plt
plt.subplot(4,3,6)
B、
import matplotlib.pyplot as plt
plt.subplot(436)
C、
import matplotlib.pyplot as plt
plt.subplot(3,4,6)
D、
import matplotlib.pyplot as plt
plt.subplot(346)
5、下列哪2个是pandas最主要的数据结构()。
A、Series
B、ndarray
C、DataFrame
D、list
6下列创建Series对象的python语句正确的是()。其中pd为pandas库的别名。
A、pd.Series([1,2,3])
B、pd.Series((1,2,3))
C、pd.Series({“x”:1,“y”:2,“z”:3})
D、pd.Series({1,2,3})
7、matplotlib库提供了以下哪2个便捷的绘图子模块?()
A、numpy
B、pyplot
C、pandas
D、pylab
 
三.填空题
1、把句子分成一个一个的词语,这个过程叫            。
分词
 
2、库是python语言中非常优秀的词云展示第三方库。
Wordcloud
 
3、使用jieba库的        函数可以自定义新词典来进行中文分词。
load_userdict;load_userdict()
 
4、使用numpy的ndarray数组的        属性可以获得数组元素的类型。
Dtype
 
5、numpy支持的数据类型        可表示范围为的整数。
int32
 
6、可通过Series对象的        属性和       属性分别获取数据部分和索引部分。
Values    index
 
7、如果使用jieba库进行中文分词,须使用             命令引入jieba库。
import jieba / from jieba import *
 
四.判断题
1、pyplot模块的bar函数为绘制横向条形图的绘图函数。
正确答案:×
2、reshape函数会改变原数组的形状,而resize函数不会改变原数组。
正确答案:×
3、numpy库的sum函数中如果参数axis为1,表示按行求和,并返回新数组。
正确答案:√
4、numpy的ndarray数组是由同质元素组成的多维数组。
正确答案:√
5、numpy的arange函数和python内置的range函数功能类似,都支持浮点数。
正确答案:×
 
1、下列哪个库提供了请求网页的功能?(    )
A、numpy
B、pandas
C、jieba
D、requests
2
import pandas as pd
a=pd.Series([1,2,3,4],index=list(“abcd”))
print(a[1:3].values)
运行以上代码,输出结果为(  )
A、 [1 2 3]
B、 [1 2]
C、 [2 3]
D、 [2 3 4]
3有一个DataFrame对象df,其列索引为“班级号”、“姓名”、“成绩”。每一行数据分别表示每个学生的班级号、姓名和成绩。如果要统计每个班成绩的标准差,下列哪个代码可以实现?
A、
group=df.groupby(‘班级号’)
average=group.mean()
B、
group=df.groupby(‘班级号’)
average=group.std()
C、
group=df.groupby(‘班级号’)
average=group.min()
D、
group=df.groupby(‘班级号’)
average=group.median()
4、使用merge函数在合并2个DataFrame对象时,如果要求根据连接主键的交集进行合并,参数how的值应设置为(   )。
A、outer
B、left
C、inner
D、right
 
5
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”)
print(df.at[‘b’,‘Y’])
运行以上代码输出结果为( )。
A、a
B、b
C、c
D、d
6、使用read_excel方法从excel文件中读取数据时,如果第一行作为标题行,参数header取值为(  )。
A、None
B、1
C、False
D、0
7获取DataFrame对象df的前5行,使用以下哪个代码?( )
A、df.tail()
B、df.info()
C、df[1:5]
D、df.head()
8
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’))
print(df.shape[0])
运行以上代码,输出结果为(  )。
A、4
B、2
C、(4,2)
D、(2,4)
9、返回DataFrame对象的行索引,使用属性(    )。
A、shape
B、index
C、columns
D、values
10、如果要依据DataFrame对象指定的列进行排序,需使用方法(  )。
A、sort_index
B、sort_values
C、sort_value
D、sort_indexs
11
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df[‘a’:‘c’])
运行以上代码,输出结果为( )。
A、
   X  Y
a  1  a
b  2  b
B、
   X  Y
0  1  a
1  2  b
2  3  c
C、
   X  Y
a  1  a
b  2  b
c  3  c
D、
   X  Y
0  1  a
1  2  b
12、有一个DataFrame对象df,其列索引为“班级号”、“姓名”、“成绩”。每一行数据分别表示每个学生的班级号、姓名和成绩。如果要统计每个班的平均成绩,下列哪个代码可以实现?
A、
group=df.groupby(‘班级号’)
average=group.mean()
B、
group=df.groupby(‘班级号’)
average=group.max()
C、
group=df.groupby(‘班级号’)
average=group.std()
D、
group=df.groupby(‘班级号’)
average=group.median()
13、假设DataFrame对象df有一列索引为“人口”,数据单位为万,如果要选择“人口”大于10万且小于30万的所有行,使用下列哪个代码可以实现?(   )
A、 df[df[‘人口’]>10 & df[‘人口’]<30]
B、 df[(df[‘人口’]>10) & (df[‘人口’]<30)]
C、 df[(df[‘人口’]>10) | (df[‘人口’]<30)]
D、 df[df[‘人口’]>10 | df[‘人口’]<30]
14、下列哪个库可以实现对复杂网页的解析从而获取想要的数据?(   )
A、BeautifulSoup
B、Requests
C、jieba
D、wordcloud
 
15、
import pandas as pd
a=pd.Series([1,2,3,4],index=list(“abcd”))
print(a[‘b’:‘d’].values)
运行以上代码,输出结果为(  )
A、 [2 3 4]
B、 [1 2 3]
C、 [2 3]
D、 [1 2 3 4]
16、返回DataFrame对象的列索引,使用属性(    )。
A、shape
B、index
C、columns
D、values
17
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df.iat[2,1])
运行以上代码输出结果为( )。
A、 a
B、b
C、c
D、d
18、获取DataFrame对象df的后5行,使用以下哪个代码?( )
A、 df.tail()
B、 df.info()
C、 df.head(5)
D、 df.tail(6)
19、Requests对象的( )属性以二进制格式返回服务器响应信息。
A、 text
B、 encoding
C、 content
D、 status_code
20下列哪个标签代码表格中的一行?(   )
A、


B、
C、

D、

21
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’))
print(df[1:3])
运行以上代码,输出结果为(  )。
 
A、
   X  Y
1  1  a
2  2  b
B、
   X  Y
1  2  b
2  3  c
C、
   X  Y
1  2  b
2  3  c
3  4  d
D、
   X  Y
2  2  b
3  3  c
22
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
print(df[df[‘X’]>2])
运行以上代码,输出结果为(  )
A、
   X 
c  3 
d  4
B、
3 4
C、
   X  Y
c  3  c
d  4  d
D、 运行时出错
 
二.多选题(共5题,20.0分)
1当前目录下有一个excel文件“score.xlsx”,里面有2张工作表sheet1、sheet2。下列哪个代码可以实现从2张表中读出数据分别存入DataFrame对象df1和df2中。(   )
A、
import pandas as pd
a=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)
df1=a[0]
df2=a[1]
B、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)[0]
df2=pd.read_excel(“score.xlsx”,sheet_name=[0,1],header=0)[1]
C、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,sheet_name=0,header=0)
df2=pd.read_excel(“score.xlsx”,sheet_name=1,header=0)
D、
import pandas as pd
df1=pd.read_excel(“score.xlsx”,header=0)[0]
df2=pd.read_excel(“score.xlsx”,header=0)[1]
2
import pandas as pd
df=pd.DataFrame({‘X’:[1,2,3,4],‘Y’:[‘a’,‘b’,‘c’,‘d’]},columns=list(‘XY’),index=list(“abcd”))
如果要获取数据的第二行和第三行,下列哪些代码是正确的?(   )
A、 df[1:3]
B、 df[‘b’:‘c’]
C、 df.iloc[1:3]
D、 df.loc[‘b’:‘c’]
3、计算DataFrame对象df包含的行数,下列正确的是(   )。
A、 df.shape[0]
B、 df.shape
C、 len(df)
D、 df.shape[1]
4、网页地址包含以下哪些信息?(   )
A、网络访问协议
B、Web服务器域名或IP地址
C、用户请求访问的文件在服务器上的存储路径
D、用户发送到网页文件的数据
5、HTML文档代码主要由下列哪三个部分组成?(    )
A、图片
B、标签及属性
C、文本
D、事件代码
 
三.、填空题
1、     是一个表格型的数据结构,由行和列组成。
DataFrame
2、DataFrame对象的      方法可以将其它数据对象沿行索引方向追加到当前对象的末尾,并返回一个新对象。
append / append()
3、如果将DataFrame对象数据保存到excel文件中,应使用该对象的       方法。
to_excel;to_excel()
4、网站地址URL,中文名称为                    。
统一资源定位符
5、DataFrame对象的每一列都是一个           对象。
Series
6、执行数据采集任务的计算机程序称为     或者         。
网络爬虫   网络蜘蛛
7、HTML是            的中文缩写。
超文本标记语言
 6.for i in range(2,n):
if n%i0:break
if i
n-1:
print(‘是素数’)
else:
print(‘不是素数’)
7.‘abcabcabc’.count(‘abc’)的值为__3__。
8.对于有else子句的for循环和while循环,但循环因循环条件不成立而自然结束时__会__(会或不会)执行else中的代码。
10.已知x=‘hello world.’,那么表达式x.find(‘x’)和x.rfind(‘x’)的值都为__-1__。
12.print(”{:#>4d}".format(23))的输出结果是__##23__。
13.以下哪个选项不是Python中的合法名称(2_g):ag,a_g,ag,2_g
14.以下哪个选项是python中的合法名称(num_1):2num,num-1,num_1,num 1
15.print(3+5)语句的运行结果是(8)
16.print(24+16%3)  17
17.以下程序的输出结果是__0__。
a=8
a%=2
print(a)
18.print("
"3)的输出结果是()。
19.表达式True and False的值为:False
20.以下程序的输出结果是(7)
x=371
print(x%100//10)
21.a,b=1,2则a的值为__1__。
22.在循环语句中,continue___语句的作用是提前结束本层循环。
23.表达式"abc10’.isalnum()的值为__True

24.表达式True
3的值为 3
25.表达式’c:\windows\notepad.exe’.endswith(’.exe’)的值为__True__。
26.表达式’test.py’.endswith(’.py’)的值为__True__。
27.表达式 int(‘123’)的值为__123__。
28.表达式 ‘Beautifule is better than ugly.’.startswith(‘Be’,5)的值为__False__。
29.假设a,b=10,50,则条件表达式a>10 and b<100的值为__False_____。
30.python3.x语句 for i in range(3):print(i,end=’,’)的输出结果为__0,1,2,__。
31.程序的基本结构:顺序结构、选择结构和循环结构
32.在python语言内置的random库中,哪个函数功能是从序列s中随即选择一个元素(A):A、choice(s),B、randint(m,n),C、shuffle(s),D、uniform(m,n)
33.以下程序的输出结果(3
5)
print(3,end="")
print()
print(5)
34.表达式int(False)的值为:0
35.以下程序的输出结果是(-3)
a=-8
a//=3
print(a)
36.print(15%4)的输出结果是(3)
37.有python语句:
for s in “abced”:
print(s,end=’ ')
的运行结果是(a b c d e)。
38.print("{:&>8}".format(“python”))的输出结果是($$python)
39.有python语句:
for i in range(100,999+1):
a=i//100
b=i//10%10
c=i%10
if a
3 + b
3 + c3 == i:
print(i,end="  ")
的运行结果是(153  370  371  407)。
40.下列Python语句:
x,y=30,70
min = x if x
print(min)
的运行结果是(30)。
41.表达式’abc’ in (‘abcdefg’)的值为__True__。
42.已知x,y=3,5,那么执行x,y=y,x之后,x的值为__5__。
43.表达式’aaasdf’.strip(‘a’)的值为__‘sdf’
44.已知x=3,那么执行语句 x += 6之后,x的值为__9

45.python用于表示逻辑与运算的关键字是__and__。
46.表达式 int(4
0.5)的值为__2__。
47.表达式len(‘aaaassddf’.strip(‘afds’))的值为__0__。
48.在循环语句中,continue__语句的作用是提前进入下一次循环。
49.Python标准库random中的__choice()方法作用是从序列中随机选择1个元素。
50.已知x=3,那么执行语句 x*=6之后,x的值为__18

51.以下程序的输出结果是(9630)。
s=“0123456789”
print(s[::-3])
52.在python语句中,条件表达式中判断相等用的关系运算符是(==)。
53.表达式 chr(ord(‘A’)+2)的值为
’C’
54.表达式 sum(range(10))的值为__45

55.x=-9
print(x) if x>=0 else print(-x)
的输出结果为__9__。
56.python的内置函数__len()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。
57.表达式’apple.peach,banana,pear’.find(‘p’)的值为__1

58.表达式 len(‘SDIBT’)的值为__5__。
59.表达式’:’.join(‘hello world.’.split())的值为__‘hello:world.’
60.python语句’’.join(list(‘hello world!’))执行的结果是
’hello world!’
61.表达式 3 or 5 的值为__3

62.表达式 160.5的值为 4.0
63.有关for循环和while循环的退出(有两种方式:一是循环条件不成立或循环序列遍历结束,二是在循环过程中遇到break语句)。
64.分支结构的类型:单分支、双分支、多分支和嵌套if结构。
65.关于多分支结构if-elif-else语句的说法正确的是:最多只会执行一个分支。
66.表达式not (True and False)的值为(True)。
67.s.islower()方法是用来:判断字符串s中的字母是否全为小写。
68.以下程序的输出结果为(bird-fish-monkey-rabbit)
s=[‘bird’,‘fish’,‘monkey’,‘rabbit’]
print("-".join(s))
69.python语言的运行方式有__交互__式和文件式两种。
70.表达式’a’+‘b’的值为 ‘ab’
71.表达式’Hello world’.lower()的值为__‘hello world’
72.表达式 1234%1000//100的值为__2

73.表达式’abc10’.isdigit()的值为__False__。
74.表达式 ‘hello world, hellow every one’.replace(‘hello’,‘hi’)的值为__‘hi world, hiw every one’
75.表达式 5 if 5>6 else (6 if 3>2 else 5)的值为__6

76.表达式 len(range(1,10))的值为__9__。
77.表达式 ‘abcab’.replace(‘a’,‘yy’)的值为__‘yybcyyb’
78.Python标准库math中用来计算平方根的函数是__sqrt()

79.以下程序的输出结果是((‘bird,fish,monkey,rabbit,tiger,’,‘monkey’,’’)):
s=‘bird,fish,monkey,rabbit,tiger,monkey’
print(s.rpartition(“monkey”))
80.int(2<3)的值为__0__。
81.gcd(27,42)的值为__3__。
82.python语言的提示符是__>>>
83.表达式’:’.join(‘1,2,3,4,5’.split(’,’))的值为
’1:2:3:4:5’
84.eval()函数可以将__字符串__解析成数值。
85.表达式min([‘11’,‘2’,‘3’])的值为
’11’
86.print("{:=<8}".format(“python”))的输出结果是__python==

87.print(str(3+5))的输出结果是__8__。
88.Python语言的主要应用领域是(人工智能,网络爬虫,数据分析与处理)
89.判断三条线段a,b,c能否构成三角形的条件表达式,正确的是__(a>0)and(b>0)and(c>0)and(a+b>c)and(a+c>b)and(b+c>a)
90.语句a,b=b,a的功能是__交换a和b的值

91.下列Python语句:
k=16
while k>1:
k=k/2
print(k)
的运行结果是__1.0__。
92.在Python语句内置的random库中,哪个函数的功能是生成一个[m,n]之间的随机小数:uniform(m,n)
93.表达式’aaaassddf’.strip(‘af’)的值为__‘ssdd’
94.Python语句中的当行注释语句以符号
#作为开始。
95.Python运算符中用来计算整商的是
//
96.表达式True*3的值为 3
97.表达式 len(‘Hello world!’.ljust(20))的值为__20

98.表达式’a’.join(‘abc’,partition(‘a’))的值为__‘aaabc’__。
二、判断题
1.s[1:5]可以去除字符串s中从索引值1开始到5结束的子字符串。(F)
2.Python是一种跨平台、开源、免费的高级动态编程语言。(T)
3.判断整数x是否偶数的条件表达式为x%2=0。(F)
4.判断整数x是否偶数的条件表达式为x%2==0。(T)
5.带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句中的代码。(F)
6.print(1+‘2’)的输出结果是’3’。(F)
7.编写多层循环时,为了提高运行效率,应尽量减少内循环中不必要的计算。(T)
8.print(s[0,5,-1])输出的是字符串s左起6个字符的反向字符串。(F)
9.python使用缩进来体现代码之间的逻辑关系。(T)
10.在python的循环体内,continue语句的作用是结束该语句所在的循环。(F)
11.如果仅仅是用于控制循环次数,那么使用for i in range(20)和 for i in range(20,40)的作用是等价的。(T)
12.在python的循环体内,continue语句的作用是结束这一轮的循环,程序跳转到循环头部。(T)
13.s[::-1]的功能是对字符串s反向取整串。(T)
14.python变量名区分大小写,所以student和Student不是同一个变量。(T)
15.python不允许使用关键字作为变量名,允许使用内置函数作为变量名,但这会改变函数名的含义。(T)
16.放在一对三引号之间的任何内容将被认为是注释。(F)
17.print(8,end="")的功能是输出8以后不换行。(T)
18.a,b,c=10,20语句执行完以后,变量c的值为0。(F)
19.如果需要连接大量字符串成为一个字符串,那么使用字符串对象的join()方法比运算符+具有更高的效率。(T)
20.python标准库random的方法randint(m,n)用来生成一个[m,n]区间上的随机整数。(T)
21.ord(“c”)-ord(“a”)的值为2。(T)
22.Python运算符%不仅可以用来求余数,还可以用来格式化字符串。(T)
23.a
=b等价于a=ab。(T)
24.s.replace(" “,”")的功能是在字符串s尾部添加空格。(F)
25.a=b=10语句执行完以后,变量a和b的值都是10。(T)
26.在循环中continue语句的作用是跳出当前循环。(F)
27.表达式 ‘a’+1的值为’b’。(F)
28.Python语句只有一种运行方式——文件式。(F)
29.加法运算符可以用来连接字符串并生成新字符串。(T)
30.range(m,n)得到的迭代序列为:m,m+1,m+2,m+3,…,n-1。(T)
31.在python中0xad是合法的十六进制数字表示形式。(T)
32.当作为条件表达式时,空值、空字符串、空列表、空元组、空字典、空集合、空迭代对象以及任意形式的数字0都等价于False。(T)
33.已知x=3,那么赋值语句x=‘abcedfg’是无法正常执行的。(F)
34.在python中,变量不直接存储值,而是存储值的引用,也就是值在内存中的地址。(T)
35.在random模块的函数randint(1,100)获取随机数时,有可能会得到100。(T)
36.在python中可以使用for作为变量名。(F)
37.Python代码的注释只有一种方式,那就是使用#符号。(F)
38.random库中的函数random()返回左闭右开区间[0.0,0.1)中的一个随机浮点数。(T)
39.在python的循环体内,break语句的作用是结束该语句所在的循环。(T)
40.在python中,关系运算符可以连续使用,例如00并且a
41.“ABC”>"ab"结果为False。(T)
42.带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句的代码。(F)
43.在python3.0中可以使用中文作为变量名。(T)
44.Python中一切内容都可以称为对象。(T)
45.Python语言的标示符只能以字母开头,后面可以跟字母、数字、下划线。(F)
46.程序中异常处理结构在大多数情况下是没必要的。(F)
三、编程题
‘’’
使用循环方法求解百钱买百鸡问题。假设公鸡5元一只,母鸡3元一只,小鸡1元三只,
现有100元钱想买100只鸡,编程计算买鸡的方案,有多少种买法?
‘’’
for a in range(0,21):
for b in range(0,34):
for c in range(0,101):
if a+b+c100 and a5+b3+c/3100:
print(a,b,c)
#韩信点兵
for i in range(1000,1101):
if i%32 and i%54 and i%76:
print(i)
#打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("{}{}={:2d}".format(i,j,ij),end=" ")
print()
#从键盘输入任意一个正整数,编程计算该数的阶乘 如:输入5,阶乘结果120 。
x=eval(input(“请输入一个正整数”))
t=1
for i in range(1,x+1):
t=t*i
print(t)
#编程分别计算100以内(含100)奇数与偶数的和。
s1,s2=0,0
for i in range(1,101):
if i%2
1:
s1=s1+i
else:
s2=s2+i
print(s1,s2)
#编程计算前30项的和:s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n)
s,y=0,0
for i in range(1,31):
s=s+i
y=y+s
print(y)
#编程产生菲波拉契数列20项,例如:0  1   1  2  3   5   8   13    21    ……
x1=0
x2=1
print(x1,end=" “)
print(x2,end=” “)
for i in range(1,18+1):
x3=x1+x2
print(x3,end=” ")
x1=x2
x2=x3
#一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
h=100
s=0
for i in range(1,11):
s=s+h
h=h/2
s=s+h
print(s-h,h)
‘’’
猴子第一天摘了若干个桃子,当天吃了一半,还不过隐,有多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子,问第一天共摘了多少个桃子
‘’’
x=1
for i in range(1,10):
x=(x+1)2
print(x)
#商场购物
x=eval(input(“x=”))
if x<1000:
y=x
elif x<2000:
y=0.9
x
elif x<3000:
y=0.8x
else:
y=0.7
x
print(y)
#分段函数1
import math
x=eval(input(“x=”))
if x>5:
y=math.sin(x)+(x
2+1)0.5
elif x>0:
y=math.e
x+math.log(x,5)+x**(1/5)
else:
y=math.cos(x)-x3+3x
print(y)
#分段函数2
x=eval(input(“x=”))
if x<0:
y=0
elif x<5:
y=x
elif x<10:
y=3
x-5
elif x<20:
y=0.5x-2
else:
y=0
print(y)
#判断素数
x=eval(input(“x=”))
for i in range(2,x):
if x%i==0:
print(“不是素数”)
break
else:
print(“是素数”)
‘’’
一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第2天给2分钱,第3天给4分钱,…,富翁每天给穷人的钱是前一天的两倍,直到满一个月,分别显示富翁给陌生人的钱和陌生人给富翁的钱各是多少?
‘’’
s1,s2=0,0
x=0.01
for i in range(1,31):
s1=s1+100000
s2=s2+x
x=2
x
print(s1,s2)
#判断闰年
x = eval(input(‘请输入一个年份’))
if x%4000 or (x%40 and not x%100==0):
print(‘是闰年’)
else:
print(‘不是闰年’)
四五章选择判断填空编程
一、选择题
1.下列表达式值为False的是:______。2 in {1:2,3:4}
2.下列代码执行的正确结果为(.[1,4,9]
lnum=[]
for i in range(1,4)
lnum.append(i
2)
print(lnum)
3. 执行语句x={},x的类型是:.字典
4.已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为
.4
5.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
6. 下列元组定义正确的是(.tupScores=("萧峰”,)
7. 有关pop()方法的说法,正确的是:__集合的pop()方法是从集合中随机删除一个元素
8.已知s={1,2,3,4},以下操作执行会报错的是:___s.remove(5)
9.下列集合运算的运算符,求交集的是:
.&
10.以下哪种不是字典的遍历方式:按"元素"遍历
11.列表guests=[“萧峰”,”杨过”,”令狐冲”,”张无忌”,”郭靖”],下列哪种方法能够在”令狐冲”前插入”张三丰”?(guests.insert(2, ”张三丰”)
12.假设d1,d2是两个字典,执行操作d1.update(d2)后,下列说法正确的是: d1的内容被更新,d2不变
13.courses=“计算机,数学”,执行代码courses1=list(courses)后,courses1的值为()。
.[‘计’,‘算’,‘机’, ’ , ', ‘数’,‘学’]
14.下列关于列表与元组的说法正确的是( )。列表的元素能修改
15.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?( )guests.remove[3]
15.字典对象的________方法以”(键,值)"的形式返回字典中的所有条目的列表。.items()
16下列代码执行结果为( )?.[6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
ls=[6]*10
print(ls)
17. 下列代码执行的正确结果为(.[1,4,9]
)。
lnum=[i**2 for i in range(1,4)]
print(lnum)
18. 下列有关字典条目的说法,错误的是:字典中的值必须是不可变类型
19. group=[(“张三丰”,95),(“杨过”,94)],下列操作不正确的是(group[1][0]="虚竹"将’杨过’修改为’虚竹’。)。
20. score = eval(input("请输入3个学生的分数列表 "))
maxScore = max(score)
minScore = min(score)
aveScore = sum(score)/len(score)
print(maxScore,minScore,aveScore))
如输入分数为[94,96,95],代码执行的正确结果为(96 94 95
21. 列表guests=[”令狐冲”,”张无忌”,”郭靖”],ls=["98”,”97”,”99”],guests+ls执行结果正确的是(.["令狐冲’,’张无忌’,’郭靖’, "98’,’97’,’99’]
22.。下列列表定义错误的是(names=[萧峰,96,令狐冲]
23. 表达式sorted({4:2,3:1,5:6})的值为
.[3,4,5]
24. 下列代码执行的正确结果为(.[1,4,9]
)。
lnum=[]
for i in range(1,4)
lnum.append(i**2)
print(lnum)
25. 执行语句x={},x的类型是:
.字典
26.已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为___4
27.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
28. 下列元组定义正确的是(tupScores=("萧峰”,)
29. 有关pop()方法的说法,正确的是:集合的pop()方法是从集合中随机删除一个元素
s={1,2}
s.add({2,3})
print(s)
31. guests=[“李秋水”,“郭襄”,“赵敏”],彻底从内存中删除guests的方法是(del guests
32.列表guests=[“张三丰”,“萧峰”,“杨过”,“令狐冲”,“张无忌”],下列表达式用来判断指定的元素是否在列表中,下列描述正确的是?(.“杨” not in guests,返回True。
33. 列表courses=[”法律”,"管理”,”计算机”,”数学”],列表切片结果错误的是(courses[0:3:-2]切片结果为["法律’,’计算机’]。
34. 执行下列代码的结果为:报错
s={1,2}
s.add({2,3})
print(s)
35.下列集合运算的运算符,求并集的是:
.|
36. 下列哪种方法能够生成一份列表courses的备份?(courses.copy()
37. 已知x={‘a’:2,‘b’:4},以下操作会报错的是:x.pop(‘c’)
38. 以下说法正确的是:集合可以作为字典的值
39. 关于列表复制,下列说法错误的是(利用列表赋值实现复制会生成列表的备份。
40. 执行下列代码的结果为:.{1:4,2:5,3:6}
l1=[1,2,3]
l2=[4,5,6]
d={}
for j in range(3):
d[l1[i]]=l2[i
41.已知x = {1:2, 2:3},那么表达式x.get(3, 4)的值为__4
42.列表guests=[“萧峰”,“杨过”,“令狐冲”,“张无忌”,“郭靖”],下列删除"张无忌"的方法,哪种是错误的?(guests.remove[3]
43. 列表guests=[“张三丰”,“萧峰”,“杨过”,“令狐冲”,“张无忌”],下列表达式用来判断指定的元素是否在列表中,下列描述正确的是?(.“杨” not in guests,返回True。
44. 下列关于列表与元组的说法不正确的是(列表的元素不能修改
45. 按照指定的键访问字典中对应条目的值应采用的方法是:get()
46,下列从输入设备获取数值列表的方法正确的是(lnum=eval(input("请输入数值列表: ”))
47. 字典对象的____keys()
方法返回字典中的"键"的列表。
48下列哪个函数可以将range()函数生成的数值对象转换成数值列表?(list()
49. 以下创建集合的操作错误的是:s={}
50.已知x={1:2,3:4},以下选项返回False的是:2 in x
51. 以下哪种不是字典的遍历方式:按"元素"遍历
二、判断题
1、del命令和pop命令删除列表元素的方式相同。F
2、字典和集合属于无序序列。T
3、Python字典中的"键”可以是列表。F
4、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。T
5、可以使用del删除集合中的部分元素。F
6、假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的。T
7、元组可以作为字典的"键”。T
8、已知列表x中包含超过5个以上的元素,那么语句 x = x[:5]+x[5:] 的作用是将列表x中的元素循环左移5位。F
9、字典中的值不允许重复。F
10、Python字典中的"键”可以是元组。T
11、字典可以通过索引访问所存储的条目。F
12、Python集合可以包含相同的元素。F
13、访问字典是通过键访问条目的值。T
14、已知x = list(range(20)),那么语句print(x[100:200])无法正常执行。F
15、Python集合中的元素可以是列表。F
16、元组是不可变的,不支持列表对象的insert()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。T
17、元组也是用来存放一组相关的数据,所以元组与列表相同。F
18、集合中的元素不允许重复。T
19、在Python 3.5中运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的合并和集合的并集运算。F
20、列表可以作为字典的"键”。F
21、Python支持使用字典的"键”作为下标来访问字典中的值。T
22、字典的"键”必须是不可变的。T
23、Python集合中的元素可以是元组。T
24、语句s1={}创建了一个空集合。F
25、对于数字n>2,如果表达式 0 not in [n%d for d in range(2, n)] 的值为True则说明n是素数。T
26、已知x = (1, 2, 3, 4),那么执行x[0] = 5之后,x的值为(5, 2, 3, 4)。F
27、Python字典和集合属于无序序列。T
28、同一个列表对象中所有元素必须为相同类型。F
29、已知x = {1:1, 2:2},那么语句x[3] =3无法正常执行。F
30、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。F
31、列表scores=[98,96,95,94,92],scores[::1]与scores[::-1]返回列表的值相等。F
32、只能对列表进行切片操作,不能对元组和字符串进行切片操作。F
33、Python列表、元组、字符串都属于有序序列。T
34、列表的长度是列表中元素的个数减1。F
35、字典中的键必须是不可变的类型,比如字符串、元祖或者列表。F
36、字典的键一旦被加入到字典中,除非随着条目一起被删除,否则都是始终保持不变的。T
37、已知x = {1:1, 2:2},那么语句x[3] =3无法正常执行F
38、只能通过切片访问列表中的元素,不能使用切片修改列表中的元素。F
39、在Python中元组的值是不可变的,因此,已知x = ([1], [2]),那么语句x[0].append(3)是无法正常执行的。F
40、运算符"-”可以用于集合的差集运算。T
41、删除列表中重复元素最简单的方法是将其转换为集合后再重新转换为列表。T
42、遍历列表用for和range()函数配合可以减少代码的重复度。T
43、已知x = list(range(20)),那么语句del x[::2]可以正常执行。T
44、字典的"键”必须是不可变的。T
45、无法删除集合中指定位置的元素,只能删除指定值的元素。T
46、列表对象的pop()方法默认删除并返回最后一个元素,如果列表已空则抛出异常。T
47、Python集合不支持使用下标访问其中的元素。T
48、删除列表中重复元素最简单的方法是将其转换为集合后再重新转换为列表。T
49、遍历列表用for和range()函数配合可以减少代码的重复度。T
50、字典和集合都支持双向索引。F
51、del命令和pop命令删除列表元素的方式相同。F
52、字典和集合属于无序序列。T
53、Python支持使用字典的"键”作为下标来访问字典中的值。T
54、字典可以通过索引访问所存储的条目。F
55、Python集合可以包含相同的元素。F
56、已知x = list(range(20)),那么语句print(x[100:200])无法正常执行。F
57、元组是不可变的,不支持列表对象的insert()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。T
58、元组也是用来存放一组相关的数据,所以元组与列表相同。F
59、集合中的元素不允许重复。T
60、在Python 3.5中运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的合并和集合的并集运算。F
61、Python支持使用字典的"键”作为下标来访问字典中的值。T
62、对于数字n>2,如果表达式0 not in [n%d for d in range(2, n)]的值为True则说明n是素数。T
63、同一个列表对象中所有元素必须为相同类型。F
64、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。F
65、del命令和pop命令删除列表元素的方式相同。F
66、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。I
67、可以使用del删除集合中的部分元素。F
68、假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的。T
69、字典中的值不允许重复。F
70、Python字典中的"键”可以是元组。T
71、使用列表对象的remove()方法可以删除列表中首次出现的指定元素,如果列表中不存在要删除的指定元素则抛出异常。T
72、使用Python列表的方法insert()为列表插入元素时会改变列表中插入位置之后元素的索引。T
73、使用pop()方法删除字典的指定键对应的条目时,如果缺省指定键参数,则随机删除一个条目。F
74、表达式 list(’[1, 2, 3]’) 的值是[1, 2, 3]。F
75、利用append()方法只能在列表尾部追加新的元素。T
76、列表切片缺省"起始索引”时,切片默认从索引1元素开始。F
77、已知x是个列表对象,那么执行语句y = x之后,对y增加一个元素的操作都会同样作用到x上。T
78、采用copy()方法与列表之间赋值实现复制的过程相同。F
79、无法删除集合中指定位置的元素,只能删除特定值的元素。T
三、填空题
1.已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式 max(x) 的值为
’3’

2.已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为
[2,3]

3.已知 x = [3, 5, 7],那么执行语句 x[:3] = [2]之后,x的值为
____[2]
4.列表guests=["萧峰”,”杨过”,”令狐冲”,”张无忌”,”郭靖”],删除”杨过”的方法是guests.
remove______(”杨过”)。
5.表达式 {1, 2, 3} | {3, 4, 5} 的值为_________{1,2,3,4,5}
6.表达式 (1,) + (2,) 的值为______(1,2)

7.表达式 {1, 2, 3} & {3, 4, 5} 的值为______{3}

8.已知列表 x = [1, 2],那么连续执行命令 y = x[:] 和 y.append(3) 之后,x的值为___[1,2]

9.表达式 [1,2,3].count(4) 的值为________0_______。
10.已知 x = (3,),那么表达式 x * 3 的值为
____(3,3,3)
11.guests=["赵敏”,”任盈盈”,”袁紫衣”],复制guests并生成备份的方法是guests.copy( )。
12.列表、元组、字符串是Python的_____有序
__(有序或无序)序列。
13.guests=["赵敏”,”任盈盈”,”袁紫衣”],执行guests
*2的返回结果为["赵敏’,’任盈盈’,’袁紫衣’,"赵敏’,’任盈盈’,’袁紫衣’]。
14.已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为
_____{1:2,2:3}

15.已知x = [1, 2, 3],那么连续执行y = [1, 2, 3]和y.append(4)这两条语句之后,x的值为_________[1,2,3]

16.已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为
_[1,3,2,3]
17.字典对象的______clear()方法可以一次性清空字典中所有条目。
18.已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为
[3,5,7,1,2]
19.已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为
_[1,2,3,2]

20.列表group=[(“郭靖”,99),(“杨过”,98)],则group[0][1]=99
21.表达式 [1, 2] * 2 的值为_______[1,2,1,2]
22.已知 x = [3, 7, 5],那么执行语句 x.sort(reverse=True)之后,x的值为______[7,5,3]

23.表达式 set([1,2,3]) == {1, 2, 3} 的值为_____True_______。
24.表达式type({3})的值为_________set
______。
25.执行下列语句:
x={1:1,2:2}
x[1]=3
print(len(x))
显示结果为:2
26.表达式 {1, 2, 3} - {3, 4, 5}的值为____{1,2}
27.表达式 sum(range(1, 10, 2)) 的值为_____25

28.列表courses=[”法律”,"管理”,”计算机”,”数学”],执行下列代码能对courses列表的元素降序排序,并改变原列表的顺序,courses.sort(reverse=False)。
29.字典对象的______keys______方法返回字典的"键"列表。
30.表达式sorted({‘a’:3, ‘b’:9, ‘c’:78}.values())的值为
____[3,9,78]
31.表达式[1,2]3的执行结果为
_[1,2,1,2,1,2]
32.表达式 list(range(50, 60, 3)) 的值为________[50,53,56,59]

33.表达式 len([i for i in range(10)]) 的值为______10
__。
34.已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4)之后 ,x的值为_____[1,4,2,3]
35.已知列表 x = list(range(10)),那么执行语句 del x[::2]之后,x的值为
[1,3,5,7,9]

36.已知 x = (3), 那么表达式 x * 3 的值为_____9
__。
37.列表guests=[”a”,“b”,”cd”,”e”],表达式"d” in guests,返回结果为____False____。
38.表达式 [1, 2] + [3] 的值为_________[1,2,3]
39.表达式 str([1, 2, 3]) 的值为
_’[1,2,3]‘
40.表达式type({}) == set的值为________False_______。
41.已知列表 x = list(range(5)),那么执行语句 x.remove(3) 之后,表达式 x.index(4) 的值为____3____。
42.已知列表 x = [1, 2],那么执行语句 x.append([3]) 之后,x的值为
[1,2,[3]]

43.已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4)之后 ,x的值为____[1,4,2,3]
44.已知 x = [1, 2, 3, 4, 5],那么执行语句 del x[1:3] 之后,x的值为
[1,4,5]

45.已知列表 x = [1, 2],那么执行语句 x.extend([3]) 之后, x的值为_____[1,2,3]
46.已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为
[1,3,2,3]
47.已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x.keys()) 的值为____6
____。
48.表达式sorted({3:‘a’,8:‘b’,5:‘c’}.values())的值为:
[‘a’,‘b’,‘c’]

49.已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为___{1,2,3}
50.guests=[“令狐冲”,“张无忌”,“郭靖”],ls=[“李秋水”,“郭襄”,“赵敏”],将guests列表的值修改为[‘令狐冲’, ‘张无忌’, ‘郭靖’, ‘李秋水’, ‘郭襄’, ‘赵敏’]的方法是guests.
extend
___(ls)。
51.字典对象的________get___方法可以获取指定"键”对应的"值”,如果指定的键在字典中不存在,则返回默认值。
52.清空列表guests=[“赵敏”,“任盈盈”,“袁紫衣”]的命令是____del____guests[:]。
53.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x.values() 的值为_____True_________。
54.执行下列语句:
x={1:1,2:2}
x[3]=1
print(len(x))
显示结果为:3
55.已知x = ([1], [2]),那么执行语句x[0].append(3)后x的值为________([1,3],[2])
56.执行下列代码可以创建数值列表:lnum=list(range(1,9))。
57.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x 的值为___False

58.表达式sorted({3:‘a’,8:‘b’,5:‘c’})的值为:
[3,5,8]

59.已知x为非空且元素无序的列表,那么表达式 x.sort() == sorted(x) 的值为____False
___。
60.表达式[3] in [1, 2, 3, 4]的值为______False__________。
61.表达式sorted({3:‘a’,8:‘b’,5:‘c’})的值为:___ [3,5,8]
62.表达式 {1, 2, 3} ^ {3, 4, 5} 的值为
{1,2,4,5}

63.表达式 list(range(5)) 的值为
[0,1,2,3,4]
64.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘a’ in x 的值为______True________。
65.列表courses=[”Falv”,"Guanli”,”Jisuanji”,”Shuxue”,”Lishi”,’Dili’],courses[1:5:2]切片结果为["Guanli”,”Shuxue”]。
66.执行下列语句:
67.x={1:1,2:2}
x[3]=1
print(len(x))
显示结果为:3
68.清空列表guests=[“赵敏”,“任盈盈”,“袁紫衣”]的命令是____del____guests[:]。
69.已知列表 x = [1, 2, 3],那么执行语句 x.insert(0, 4) 只有,x的值为_____[4,1,2,3]

70.已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为
[2,3]
71.已知 x = [3, 5, 7],那么表达式 x[10:]的值为
_[]
72.表达式type({}) == set的值为_______False
__。
73.已知 x = [1, 2],那么执行语句 x[0:1] = [3, 3]之后,x的值为_____[3,3,2]__
74.已知x = list(range(20)),那么表达式x[-1]的值为________19____________。
75.del________命令既可以删除列表中的一个元素,也可以删除整个列表。
76.表达式 type(3.0) in (int, float, complex) 的值为______True

77.表达式 3 not in [1, 2, 3]的值为____False______。
78.表达式 3 in {1, 2, 3} 的值为_____True

79.表达式 len(range(1, 10)) 的值为_____9______。
字典对象的_______values_______方法返回字典的"值”列表。
三、编程题
‘’’
编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
‘’’
x=input(“x=”)
l=x.split(”,")
l.sort()
print(",".join(l))
‘’’
编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3 Read Python 2 or Python 3
然后,输出应该是:
2:2
3:2
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
‘’’
x=input(“x=”)
l=x.split()
d={}
for i in l:
d[i]=d.get(i,0)+1
l2=sorted(d)
for i in l2:
print("{}:{}".format(i,d[i]))
#依次输入三个整数放在一个列表中,请把这三个数由小到大输出。
l=[]
for i in range(3):
x=int(input(“x=”))
l.append(x)
l.sort()
for i in l:
print(i,end=" ")
‘’’
使用列表生成式方法求解百钱买百鸡问题。
假设大鸡5元一只,中鸡3元一只,小鸡1元三只,
现有100元钱想买100只鸡,有多少种买法?
‘’’
l=[(i,j,k) for i in range(0,100) for j in range(0,100) for k in range(0,100) if i+j+k==100 and 5i+3j+k/3==100]
for i in l:
print(i)
‘’’
使用给定的整数n,编写一个程序生成一个包含(i, i
i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
‘’’
n=eval(input(“n=”))
d={}
for i in range(1,n+1):
d[i]=i*i
print(d)
‘’’
使用列表生成式随机产生10个两位的正整数,存入列表ls中,输出ls中的这10个随机数,
然后对这10个随机数求平均值,并输出统计高于平均值的数有多少个。
‘’’
from random import *
ls=[randint(10,99) for i in range(10)]
print(ls)
pj=sum(ls)/10
n=0
for i in ls:
if i>pj:
n=n+1
print(n)
#编写一个程序,输出2000到3200(含2000和3200)之间所有是7的倍数,但不是5的倍数的整数。要求:用列表保存符合条件的整数,输出结果各整数之间用逗号分隔,并输出在一行上。
l=[]
for i in range(2000,3201):
if i%70 and i%5!=0:
l.append(str(i))
print(",".join(l))
‘’’
编写一个程序,接收一系列单个空格分隔的单词作为输入,在删除所有重复的单词并按字母升序排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
‘’’
x=input(“x=”)
l=x.split()
s=set(l)
l2=list(s)
l2.sort()
for i in l2:
print(i,end=" “)
‘’’
编写一个接收句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母10
数字3
‘’’
d={‘字母’:0,‘数字’:0}
x=input(“x=”)
for i in x:
if i.isdigit():
d[‘数字’]=d[‘数字’]+1
elif i.isalpha():
d[‘字母’]=d[‘字母’]+1
for k,v in d.items():
print(”{} {}".format(k,v))
‘’’
使用列表生成式来求列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
[1,2,3,4,5,6,7,8,9]
然后,输出应该是:
[1,3,5,7,9]
‘’’
l=eval(input(“l=”))
l2=[ i for i in l if i%2
1]
print(l2)

Python 由荷兰人Guido van Rossum (吉多·范罗苏姆) 发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。
Python是一门跨平台、开源、免费的解释型高级动态编程语言。
Python支持命令式编程(How to do)、函数式编程(What to do),完全支持面向对象程序设计,拥有大量扩展库。
胶水语言:可以把多种不同语言编写的程序融合到一起实现无缝拼接,更好地发挥不同语言和工具的优势,满足不同应用领域的需求。

Python目前存在2.x和3.x两个系列的版本,互相之间不兼容。
在选择Python版本的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,该领域或方向有哪些扩展库可用,这些扩展库最高支持哪个版本的Python。这些问题全部确定以后,再最终确定选择哪个版本。
Python 2.x系列最迟将于2020年全面放弃维护和更新

安装与配置Python环境
默认编程环境:IDLE
其他常用开发环境:
Eclipse+PyDev
pyCharm
wingIDE
Eric
PythonWin
Anaconda3(内含Jupyter和Spyder)
zwPython

Python 3.*中,输入是通过input( )函数来实现的,input( )函数的返回值为字符串
一般格式为:a=input(‘提示:’)
(1)缩进
Python程序是依靠代码块的缩进来体现代码之间的逻辑关系的
(2)注释
方法一:以#开始,表示本行#之后的内容为注释。
#循环输出0到9数字
for i in range(10):
print (i, end=’ ‘)
方法二:包含在一对三引号’’’…’’'或"""…"""之间且不属于任何语句的内容将被解释器认为是注释。
(3)每个import只导入一个模块。而不要一次导入多个模块。
(4)如果一行语句太长,可以在行尾加上反斜杠“\”来换行分成多行,但是更建议使用括号来包含多行内容。
(5)必要的空格与空行
运算符两侧、函数参数之间、逗号两侧建议使用空格分开。不同功能的代码块之间、不同的函数定义之间建议增加一个空行以增加可读性。
(6)常量名所有字母大写,由下划线连接各个单词。类名首字母大写。

使用格式如下:help(对象)
下面分3种情况进行说明。
1.查看内置函数和类型的帮助信息

help(max)
2.查看模块中的成员函数信息

import os
help(os.fdopen)
上例查看os模块中的fdopen成员函数信息
3.查看整个模块的信息
使用help(模块名)就能查看整个模块的帮助信息。注意先import导入该模块。例如:查看math模块方法:

import math
help(math)

正则表达式是字符串处理的有力工具,正则表达式使用预定义的模式去匹配一类具有共同特征的字符串,可以快速、准确地完成复杂的查找、替换等处理要求,比字符串自身提供的方法提供了更强大的处理功能。例如使用字符串对象的split()方法只能指定一个分隔符,而使用正则表达式可以很方便地指定多个符号作为分隔符;使用字符串对象的split()并指定分隔符时,很难处理分隔符连续多次出现的情况,而正则表达式让这一切都变成非常轻松。
正则表达式在文本编辑与处理、网页爬虫之类的场合中有重要应用。
直接使用re模块
import re
s=‘abc201853501234def’
pattern=r’201\d{9}’
x=re.findall(pattern, s)
print(x)

元字符 功能说明(P175表8-1)
. 匹配除换行符以外的任意单个字符

  • 匹配位于*之前的字符或子模式的0次或多次出现
  • 匹配位于+之前的字符或子模式的1次或多次出现
  • 在[]之内用来表示范围
    | 匹配位于|之前或之后的字符
    ^ 匹配行首,匹配以^后面的字符开头的字符串。但在[]中表示取反
    $ 匹配行尾,匹配以KaTeX parse error: Undefined control sequence: \ at position 175: …”,而“o+”匹配所有“o” \̲ ̲表示位于\之后的为转义字符 \…’:检查给定字符串是否为移动手机号码。
    1+KaTeX parse error: Undefined control sequence: \w at position 26: …否只包含英文字母大小写。 '^\̲w̲+@(\w+\.)+\w+’:检查给定字符串是否为合法电子邮件地址。
    使用时要注意的是,正则表达式只是进行形式上的检查,并不保证内容一定正确。
    例如上面的例子中,正则表达式’^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}KaTeX parse error: Undefined control sequence: \d at position 76: …。 同样的道理,正则表达式'^\̲d̲{18}|\d{15}‘也只负责检查字符串是否为18位或15位数字,并不保证一定是合法的身份证号。
    直接使用正则表达式模块re处理字符串
    非贪心模式与贪心模式
    import re
    s = ‘abcdakdjda12d’
    x=re.findall(‘a.*?d’,s)
    y=re.findall(‘a.*d’,s)
    print(x)
    print(y)
    首先使用re模块的compile()方法将正则表达式编译生成正则表达式对象,然后再使用正则表达式对象提供的match()、search()、findall()方法进行字符串处理。
    使用编译后的正则表达式对象可以提高字符串处理速度,也提供了更强大的文本处理功能。
    查找重复单词
    import re
    s=“is is the cost of of gasoline going up up gghh”;
    pattern =r"\b([a-z]+)\s\1\b";
    r=re.findall(pattern,s)
    print®
    查找abba
    import re
    s = ‘assadd133122abba44’
    pattern=r’(([a-z])([a-z])\3\2)’
    r=re.findall(pattern,s)
    print®
    获取中文
    import re
    s= ’ this is 简体中文 sample 定义’
    pattern=r’[\u4e00-\u9fa5]+’
    r=re.findall(pattern,s)
    print®
    在Python中,字符串属于不可变、有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。
    ‘abc’、‘123’、‘中国’
    “Python”
    ‘’‘Tom said,“Let’s go”’’'除了支持序列通用方法(包括双向索引、比较大小、计算长度、元素访问、切片、成员测试等操作)以外,字符串类型还支持一些特有的操作方法,例如字符串格式化、查找、替换、排版等等。
    字符串属于不可变、有序序列,不能直接对字符串对象进行元素增加、修改与删除等操作,切片操作也只能访问其中的元素而无法使用切片来修改字符串中的字符。
    除了支持Unicode编码的str类型之外,Python还支持字节串类型bytes,str类型字符串可以通过encode()方法使用指定的字符串编码格式编码成为bytes对象,而bytes对象则可以通过decode()方法使用指定编码格式解码成为str字符串。
    最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码采用1个字节来对字符进行编码,最多只能表示256个符号。
    GB2312是我国制定的中文编码,使用1个字节表示英语,2个字节表示中文;GBK是GB2312的扩充,而CP936是微软在GBK基础上开发的编码方式。GB2312、GBK和CP936都是使用2个字节表示中文。
    UTF-8对全世界所有国家需要用到的字符进行了编码,以1个字节表示英语字符(兼容ASCII),以3个字节表示中文,还有些语言的符号使用2个字节(例如俄语和希腊语符号)或4个字节。
    不同编码格式之间相差很大,采用不同的编码格式意味着不同的表示和存储形式,把同一字符存入文件时,写入的内容可能会不同,在试图理解其内容时必须了解编码规则并进行正确的解码。如果解码方法不正确就无法还原信息,从这个角度来讲,字符串编码也具有加密的效果。
    Python 3.x完全支持中文字符,默认使用UTF8编码格式,无论是一个数字、英文字母,还是一个汉字,在统计字符串长度时都按一个字符对待和处理。

s = ‘中国山东烟台’
len(s) #字符串长度,或者包含的字符个数
6

s = ‘中国山东烟台ABCDE’ #中文与英文字符同样对待,都算一个字符
len(s)
11

姓名 = ‘张三’ #使用中文作为变量名
print(姓名) #输出变量的值
张三
转义字符 含义 转义字符 含义
\b 退格,把光标移动到前一列位置 \ 一个斜线
\f 换页符 \’ 单引号’
\n 换行符 \” 双引号”
\r 回车 \ooo 3位八进制数对应的字符
\t 水平制表符 \xhh 2位十六进制数对应的字符
\v 垂直制表符 \uhhhh 4位十六进制数表示的Unicode字符
转义字符用法

print(‘Hello\nWorld’) #包含转义字符的字符串
Hello
World

print(’\101’) #三位八进制数对应的字符
A

print(’\x41’) #两位十六进制数对应的字符
A

print(‘我是\u8463\u4ed8\u56fd’)#四位十六进制数表示Unicode字符
我是董付国
为了避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或R表示原始字符串,其中的所有字符都表示原始的含义而不会进行任何转义。

path = ‘C:\Windows\notepad.exe’
print(path) #字符\n被转义为换行符
C:\Windows
otepad.exe

path = r’C:\Windows\notepad.exe’ #原始字符串,任何字符都不转义
print(path)
C:\Windows\notepad.exe
7.3.1 使用%运算符进行格式化
7.3.2 使用format方法进行格式化
7.3.3 格式化的字符串常量
从Python 3.6.x开始支持一种新的字符串格式化方式,官方叫做Formatted String Literals(f-string,字面量格式化字符串),在字符串前加字母f,含义与字符串对象format()方法类似。

name = ‘Dong’
age = 39
f’My name is {name}, and I am {age} years old.’
‘My name is Dong, and I am 39 years old.’

width = 10
precision = 4
value = 11/3
f’result:{value:{width}.{precision}}’
‘result: 3.667’
从Python 3.6.x开始支持一种新的字符串格式化方式,官方叫做Formatted String Literals(f-string,字面量格式化字符串),在字符串前加字母f,含义与字符串对象format()方法类似。

name = ‘Dong’
age = 39
f’My name is {name}, and I am {age} years old.’
‘My name is Dong, and I am 39 years old.’

width = 10
precision = 4
value = 11/3
f’result:{value:{width}.{precision}}’
‘result: 3.667’
find()、rfind()、index()、rindex()、count()
find()和rfind方法分别用来查找一个字符串split()、rsplit()、partition()、rpartition()
split()和rsplit()方法分别用来以指定字符为分隔符,把当前字符串从左往右或从右往左分隔成多个字符串,并返回包含分隔结果的列表;
partition()和rpartition()用来以指定字符串为分隔符将原字符串分隔为3部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;
index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;
count()方法用来返回一个字符串在当前字符串中出现的次数。
split()和rsplit()方法还允许指定最大分割次数。
对于split()和rsplit()方法,如果不指定分隔符,则字符串中的任何空白符号(空格、换行符、制表符等)都将被认为是分隔符,把连续多个空白字符看作一个分隔符。
然而,明确传递参数指定split()使用的分隔符时,情况是不一样的。
查找替换replace(),类似于Word中的“全部替换”功能。

字符串对象的maketrans()方法用来生成字符映射表,而translate()方法用来根据映射表中定义的对应关系转换字符串并替换其中的字符,使用这两个方法的组合可以同时处理多个字符。
这三个函数的参数指定的字符串并不作为一个整体对待,而是在原字符串的两侧、右侧、左侧删除参数字符串中包含的所有字符,一层一层地从外往里扒。

isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、isupper()、islower(),用来测试字符串是否为数字或字母、是否为字母、是否为数字字符、是否为空白字符、是否为大写字母以及是否为小写字母。
center()、ljust()、rjust(),返回指定宽度的新字符串,原字符串居中、左对齐或右对齐出现在新字符串中,如果指定宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充。zfill()返回指定宽度的字符串,在左侧以字符0进行填充。
Python字符串支持加法运算符,表示两个字符串连接,生成新字符串

Python字符串支持与整数的乘法运算,表示序列重复,也就是字符串内容的重复,得到新字符串。

内置函数eval()用来把任意字符串转化为Python表达式并进行求值。
切片也适用于字符串,但仅限于读取其中的元素,不支持字符串修改。

‘Explicit is better than implicit.’[:8]
‘Explicit’

‘Explicit is better than implicit.’[9:23]
‘is better than’

path = ‘C:\Python35\test.bmp’
path[:-4] + ‘_new’ + path[-4:]
‘C:\Python35\test_new.bmp’
异常是指程序运行时引发的错误,引发错误的原因有很多,例如除零、下标越界、文件不存在、网络异常、类型错误、名字错误、字典键错误、磁盘空间不足,等等。
如果这些错误得不到正确的处理将会导致程序终止运行,而合理地使用异常处理结构可以使得程序更加健壮,具有更强的容错性,不会因为用户不小心的错误输入或其他运行时原因而造成程序终止。也可以使用异常处理结构为用户提供更加友好的提示。
程序出现异常或错误之后是否能够调试程序并快速定位和解决存在的问题也是程序员综合水平和能力的重要体现方式之一。
断言语句的语法是:

assert expression[, reason]

当判断表达式expression为真时,什么都不做;如果表达式为假,则抛出异常
列表(list)是包含若干元素的有序连续内存空间。当列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证相邻元素之间没有缝隙。
但插入和删除非尾部元素时涉及列表中大量元素的移动,会严重影响效率。
除非确实有必要,否则应尽量从列表尾部进行元素的追加与删除操作。
在形式上,列表的所有元素放在一对方括号[]中,相邻元素之间使用逗号分隔。
在Python中,同一个列表中元素的数据类型可以各不相同,可以同时包含整数、实数、字符串等基本类型的元素,也可以包含列表、元组、字典、集合、函数以及其他任意对象。
如果只有一对方括号而没有任何元素则表示空列表。
[10, 20, 30, 40]
[‘crunchy frog’, ‘ram bladder’, ‘lark vomit’]
[‘spam’, 2.0, 5, [10, 20]]
[[‘file1’, 200,7], [‘file2’, 260,9]]
[{3}, {5:6}, (1, 2, 3)]
创建列表之后,可以使用整数作为下标来访问其中的元素,其中0表示第1个元素,1表示第2个元素,2表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中-1表示最后1个元素,-2表示倒数第2个元素,-3表示倒数第3个元素,以此类推。

x = list(‘Python’) #创建类别对象
x
[‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]

x[0] #下标为0的元素,第一个元素
‘P’

x[-1] #下标为-1的元素,最后一个元素
‘n’
方法 说明
append(x) 将x追加至列表尾部
extend(L) 将列表L中所有元素追加至列表尾部
insert(index, x) 在列表index位置处插入x,该位置后面的所有元素后移并且在列表中的索引加1,如果index为正数且大于列表长度则在列表尾部追加x,如果index为负数且小于列表长度的相反数则在列表头部插入元素x
remove(x) 在列表中删除第一个值为x的元素,该元素之后所有元素前移并且索引减1,如果列表中不存在x则抛出异常
pop([index]) 删除并返回列表中下标为index的元素,如果不指定index则默认为-1,弹出最后一个元素;如果弹出中间位置的元素则后面的元素索引减1;如果index不是[-L, L]区间上的整数则抛出异常
clear() 清空列表,删除列表中所有元素,保留列表对象
index(x) 返回列表中第一个值为x的元素的索引,若不存在值为x的元素则抛出异常
count(x) 返回x在列表中的出现次数
reverse() 对列表所有元素进行原地逆序,首尾交换
sort(key=None, reverse=False) 对列表中的元素进行原地排序,key用来指定排序规则,reverse为False表示升序,True表示降序
copy() 返回列表的浅复制
(1)append()、insert()、extend()
append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素,extend()用于将另一个列表中的所有元素追加至当前列表的尾部。这3个方法都属于原地操作,不影响列表对象在内存中的起始地址。

x = [1, 2, 3]
id(x) #查看对象的内存地址
50159368

x.append(4) #在尾部追加元素
x.insert(0, 0) #在指定位置插入元素
x.extend([5, 6, 7]) #在尾部追加多个元素
x
[0, 1, 2, 3, 4, 5, 6, 7]

id(x) #列表在内存中的地址不变
50159368
(2)pop()、remove()、clear()
pop()用于删除并返回指定位置(默认是最后一个)上的元素;remove()用于删除列表中第一个值与指定值相等的元素;clear()用于清空列表中的所有元素。这3个方法也属于原地操作。
另外,还可以使用del命令删除列表中指定位置的元素,同样也属于原地操作。

x = [1, 2, 3, 4, 5, 6, 7]
x.pop() #弹出并返回尾部元素
7

x.pop(0) #弹出并返回指定位置的元素
1

x.clear() #删除所有元素
x
[]

x = [1, 2, 1, 1, 2]
x.remove(2) #删除首个值为2的元素
del x[3] #删除指定位置上的元素
x
[1, 1, 1]
(3)count()、index()
列表方法count()用于返回列表中指定元素出现的次数;index()用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常。

x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
x.count(3) #元素3在列表x中的出现次数
3

x.count(5) #不存在,返回0
0

x.index(2) #元素2在列表x中首次出现的索引
1

x.index(5) #列表x中没有5,抛出异常
ValueError: 5 is not in list
(4)sort()、reverse()
列表对象的sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。

x = list(range(11)) #包含11个整数的列表
import random
random.shuffle(x) #把列表x中的元素随机乱序
x
[6, 0, 1, 7, 4, 3, 2, 8, 5, 10, 9]

x.sort(key=lambda item:len(str(item)), reverse=True) #按转换成字符串以后的长度,降序排列
x
[10, 6, 0, 1, 7, 4, 3, 2, 8, 5, 9]

x.sort(key=str) #按转换为字符串后的大小,升序排序
x
[0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9]

x.sort() #按默认规则排序
x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

x.reverse() #把所有元素翻转或逆序
x
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
加法运算符+也可以实现列表增加元素的目的,但不属于原地操作,而是返回新列表,涉及大量元素的复制,效率非常低。使用复合赋值运算符+=实现列表追加元素时属于原地操作,与append()方法一样高效。

x = [1, 2, 3]
id(x)
53868168

x = x + [4] #连接两个列表
x
[1, 2, 3, 4]

id(x) #内存地址发生改变
53875720

x += [5] #为列表追加元素
x
[1, 2, 3, 4, 5]

id(x) #内存地址不变
53875720
乘法运算符可以用于列表和整数相乘,表示序列重复,返回新列表。运算符=也可以用于列表元素重复,属于原地操作。

x = [1, 2, 3, 4]
id(x)
54497224

x = x * 2 #元素重复,返回新列表
x
[1, 2, 3, 4, 1, 2, 3, 4]

id(x) #地址发生改变
54603912

x *= 2 #元素重复,原地进行
x
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

id(x) #地址不变
54603912
成员测试运算符in可用于测试列表中是否包含某个元素,查询时间随着列表长度的增加而线性增加,而同样的操作对于集合而言则是常数级的。

3 in [1, 2, 3]
True

3 in [1, 2, ‘3’]
False
max()、min()函数用于返回列表中所有元素的最大值和最小值,
sum()函数用于返回列表中所有元素之和;
len()函数用于返回列表中元素个数,zip()函数用于将多个列表中元素重新组合为元组并返回包含这些元组的zip对象;
enumerate()函数返回包含若干下标和值的迭代对象;
map()函数把函数映射到列表上的每个元素,filter()函数根据指定函数的返回值对列表元素进行过滤;
all()函数用来测试列表中是否所有元素都等价于True,any()用来测试列表中是否有等价于True的元素。
标准库functools中的reduce()函数以及标准库itertools中的compress()、groupby()、dropwhile()等大量函数也可以对列表进行操作。
在形式上,切片使用2个冒号分隔的3个数字来完成。
[start🔚step]

第一个数字start表示切片开始位置,默认为0;
第二个数字end表示切片截止(但不包含)位置(默认为列表长度);
第三个数字step表示切片的步长(默认为1)。
当start为0时可以省略,当end为列表长度时可以省略,当step为1时可以省略,省略步长时还可以同时省略最后一个冒号。
当step为负整数时,表示反向切片,这时start应该在end的右侧才行。
(1)使用切片获取列表部分元素
使用切片可以返回列表中部分元素组成的新列表。与使用索引作为下标访问列表元素的方法不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。

aList = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
aList[::] #返回包含原列表中所有元素的新列表
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]

aList[::-1] #返回包含原列表中所有元素的逆序列表
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]

aList[::2] #隔一个取一个,获取偶数位置的元素
[3, 5, 7, 11, 15]

aList[1::2] #隔一个取一个,获取奇数位置的元素
[4, 6, 9, 13, 17]

aList[3:6] #指定切片的开始和结束位置
[6, 7, 9]

aList[100:] #切片开始位置大于列表长度时,返回空列表
[]

aList[-15:3] #进行必要的截断处理
[3, 4, 5]

len(aList)
10

aList[3:-10:-1] #位置3在位置-10的右侧,-1表示反向切片
[6, 5, 4]

aList[3:-5] #位置3在位置-5的左侧,正向切片
[6, 7]
(2)使用切片为列表增加元素
可以使用切片操作在列表任意位置插入新元素,不影响列表对象的内存地址,属于原地操作。

aList = [3, 5, 7]
aList[len(aList):]
[]

aList[len(aList):] = [9] #在列表尾部增加元素
aList[:0] = [1, 2] #在列表头部插入多个元素
aList[3:3] = [4] #在列表中间位置插入元素
aList
[1, 2, 3, 4, 5, 7, 9]
(3)使用切片替换和修改列表中的元素

aList = [3, 5, 7, 9]
aList[:3] = [1, 2, 3] #替换列表元素,等号两边的列表长度相等
aList
[1, 2, 3, 9]

aList[3:] = [4, 5, 6] #切片连续,等号两边的列表长度可以不相等
aList
[1, 2, 3, 4, 5, 6]

aList[::2] = [0]*3 #隔一个修改一个
aList
[0, 2, 0, 4, 0, 6]

aList[::2] = [‘a’, ‘b’, ‘c’] #隔一个修改一个
aList
[‘a’, 2, ‘b’, 4, ‘c’, 6]
(2)使用切片为列表增加元素
可以使用切片操作在列表任意位置插入新元素,不影响列表对象的内存地址,属于原地操作。

aList = [3, 5, 7]
aList[len(aList):]
[]

aList[len(aList):] = [9] #在列表尾部增加元素
aList[:0] = [1, 2] #在列表头部插入多个元素
aList[3:3] = [4] #在列表中间位置插入元素
aList
[1, 2, 3, 4, 5, 7, 9]
(4)使用切片删除列表中的元素

aList = [3, 5, 7, 9]
aList[:3] = [] #删除列表中前3个元素
aList
[9]

也可以结合使用del命令与切片结合来删除列表中的部分元素,并且切片元素可以不连续。

aList = [3, 5, 7, 9, 11]
del aList[:3] #切片元素连续
aList
[9, 11]

aList = [3, 5, 7, 9, 11]
del aList[::2] #切片元素不连续,隔一个删一个
aList
[5, 9]
列表实例
已知有列表l=[54,36,75,28,50],请根据要求完成以下操作:
① 在列表尾部插入元素42。
② 在28前面插入元素66。
③ 删除并输出元素28。
④ 将列表按降序排序。
⑤ 清空整个列表。
l=[54,36,75,28,50]
l.append(42)
l.insert(3,66)
l.pop(4)
l.sort(reverse=True)
for i in range(len(l)):
l.pop()
使用列表生成式生成列表,其元素为100以内所有能被3整除的数。
 
x=[i for i in range(1,100) if i%3==0]
print(x)
编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
x[:10] = sorted(x[:10])
x[10:] = sorted(x[10:], reverse=True)
print(x)
元组:轻量级列表
列表的功能虽然很强大,但负担也很重,在很大程度上影响了运行效率。有时候我们并不需要那么多功能,很希望能有个轻量级的列表,元组(tuple)正是这样一种类型。
从形式上,元组的所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素则必须在最后增加一个逗号。
#元组是不可变的
很多内置函数的返回值也是包含了若干元组的可迭代对象,例如enumerate()、zip()等等。

list(enumerate(range(5)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

list(zip(range(3), ‘abcdefg’))
[(0, ‘a’), (1, ‘b’), (2, ‘c’)]
列表和元组都属于有序序列,都支持使用双向索引访问其中的元素,以及使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引,len()、map()、filter()等大量内置函数和+、+=、in等运算符也都可以作用于列表和元组。
元组属于不可变(immutable)序列,不可以直接修改元组中元素的值,也无法为元组增加或删除元素。
元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有remove()和pop()方法,也不支持对元组元素进行del操作,不能从元组中删除元素,而只能使用del命令删除整个元组。
元组也支持切片操作,但是只能通过切片来访问元组中的元素,而不允许使用切片来修改元组中元素的值,也不支持使用切片操作来为元组增加或删除元素。
Python的内部实现对元组做了大量优化,访问速度比列表更快。如果定义了一系列常量值,主要用途仅是对它们进行遍历或其他类似用途,而不需要对其元素进行任何修改,那么一般建议使用元组而不用列表。
元组在内部实现上不允许修改其元素值,从而使得代码更加安全,例如调用函数时使用元组传递参数可以防止在函数中修改元组,而使用列表则很难保证这一点。
生成器推导式(generator expression)的用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets)。
与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象。生成器对象类似于迭代器对象,具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。
使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象的__next__()方法或者内置函数next()进行遍历,或者直接使用for循环来遍历其中的元素。但是不管用哪种方法访问其元素,只能从前往后正向访问每个元素,没有任何方法可以再次访问已访问过的元素,也不支持使用下标访问其中的元素。当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象,enumerate、filter、map、zip等其他迭代器对象也具有同样的特点。
使用生成器对象__next__()方法或内置函数next()进行遍历

g = ((i+2)**2 for i in range(10)) #创建生成器对象
g
<generator object at 0x0000000003095200>

tuple(g) #将生成器对象转换为元组
(4, 9, 16, 25, 36, 49, 64, 81, 100, 121)

list(g) #生成器对象已遍历结束,没有元素了
[]

g = ((i+2)**2 for i in range(10)) #重新创建生成器对象
g.next() #使用生成器对象的__next__()方法获取元素
4

g.next() #获取下一个元素
9

next(g) #使用函数next()获取生成器对象中的元素
16
使用for循环直接迭代生成器对象中的元素

g = ((i+2)**2 for i in range(10))
for item in g: #使用循环直接遍历生成器对象中的元素
print(item, end=’ ')
4 9 16 25 36 49 64 81 100 121
字典(dictionary)是包含若干“键:值”元素的无序可变序列,字典中的每个元素包含用冒号分隔开的“键”和“值”两部分,表示一种映射或对应关系,也称关联数组。定义字典时,每个元素的“键”和“值”之间用冒号分隔,不同元素之间用逗号分隔,所有的元素放在一对大括号“{}”中。
字典中元素的“键”可以是Python中任意不可变数据,例如整数、实数、复数、字符串、元组等类型等可哈希数据,但不能使用列表、集合、字典或其他可变类型作为字典的“键”。另外,字典中的“键”不允许重复,而“值”是可以重复的。
使用赋值运算符“=”将一个字典赋值给一个变量即可创建一个字典变量。

aDict = {‘server’: ‘db.diveintopython3.org’, ‘database’: ‘mysql’}
字典创建与删除字典中的每个元素表示一种映射关系或对应关系,根据提供的“键”作为下标就可以访问对应的“值”,如果字典中不存在这个“键”会抛出异常。

aDict = {‘age’: 39, ‘score’: [98, 97], ‘name’: ‘Dong’, ‘sex’: ‘male’}
aDict[‘age’] #指定的“键”存在,返回对应的“值”
39

aDict[‘address’] #指定的“键”不存在,抛出异常
KeyError: ‘address’
字典对象提供了一个get()方法用来返回指定“键”对应的“值”,并且允许指定该键不存在时返回特定的“值”。例如:

aDict.get(‘age’) #如果字典中存在该“键”则返回对应的“值”
39

aDict.get(‘address’, ‘Not Exists.’) #指定的“键”不存在时返回指定的默认值
‘Not Exists.’

使用字典对象的items()方法可以返回字典的键、值对。
使用字典对象的keys()方法可以返回字典的键。
使用字典对象的values()方法可以返回字典的值。
字典元素的访问
问题解决:首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。
import string

import random
x = string.ascii_letters + string.digits + string.punctuation
y = [random.choice(x) for i in range(1000)]
z = ‘’.join(y)
d = dict() #使用字典保存每个字符出现次数
for ch in z:
d[ch] = d.get(ch, 0) + 1
当以指定“键”为下标为字典元素赋值时,有两种含义:
1)若该“键”存在,则表示修改该“键”对应的值;
2)若不存在,则表示添加一个新的“键:值”对,也就是添加一个新元素。
元素添加、修改与删除

aDict = {‘age’: 35, ‘name’: ‘Dong’, ‘sex’: ‘male’}
aDict[‘age’] = 39 #修改元素值
aDict
{‘age’: 39, ‘name’: ‘Dong’, ‘sex’: ‘male’}

aDict[‘address’] = ‘SDIBT’ #添加新元素
aDict
{‘age’: 39, ‘address’: ‘SDIBT’, ‘name’: ‘Dong’, ‘sex’: ‘male’}

也可以使用内置类dict以不同形式创建字典。

x = dict() #空字典
type(x) #查看对象类型
<class ‘dict’>

x = {} #空字典
keys = [‘a’, ‘b’, ‘c’, ‘d’]
values = [1, 2, 3, 4]
dictionary = dict(zip(keys, values)) #根据已有数据创建字典
d = dict(name=‘Dong’, age=39) #以关键参数的形式创建字典
aDict = dict.fromkeys([‘name’, ‘age’, ‘sex’])
#以给定内容为“键”,创建“值”为空的字典

aDict
{‘age’: None, ‘name’: None, ‘sex’: None}

集合(set)属于Python无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。
集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。
可以使用集合快速提取序列中单一元素,即提取出序列中所有不重复元素。如果使用传统方式的话,需要编写下面的代码:

import random
#生成100个介于0到9999之间的随机数

listRandom = [random.choice(range(10000)) for i in range(100)]
noRepeat = []
for i in listRandom :
if i not in noRepeat :
noRepeat.append(i)

而如果使用集合的话,只需要下面这么一行代码就可以了,可以参考上面的代码对结果进行验证。

newSet = set(listRandom)
Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套使用,并且还经常和选择结构嵌套使用来实现复杂的业务逻辑。
while循环一般用于循环次数难以提前确定的情况,当然也可以用于循环次数确定的情况;
for循环一般用于循环次数可以提前确定的情况,尤其适用于枚举或遍历序列或迭代对象中元素的场合。
对于带有else子句的循环结构,如果循环因为条件表达式不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语句而导致循环提前结束则不会执行else中的语句。
输出1~100之间整数之和。
方法1:
s = 0
for i in range(1, 101):
s += i
else:
print(s)

方法2:
sum(range(1,101))

方法3:
from functools import reduce
reduce(lambda x,y:x+y,range(1,101))
使用嵌套的循环结构打印九九乘法表。

for i in range(1, 10):
for j in range(1, i+1):
print(’{0}{1}={2}’.format(i,j,ij), end=’ ')
print() #打印空行
计算1+2+3+…+99+100的结果。

s = 0
for i in range(1, 101): #不包括101
s += i
else:
print(s)

或直接计算:

sum(range(1,101))
5050

from functools import reduce
reduce(lambda x,y:x+y,range(1,101))
一旦break语句被执行,将使得break语句所属层次的循环提前结束;
continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。
输入一个自然数,判断是否为素数。
n= eval(input(‘输入一个数:’))
if n1 or n2 or n%2 == 0:
print(’%s不是素数’%n)
else:
for i in range(3, int(n**0.5)+1, 2):
if n%i == 0:
print(’{0}不是素数’.format(n))
break
else:
print(’{0}是素数’.format(n))
将可能需要反复执行的代码封装为函数,并在需要该功能的地方进行调用,不仅可以实现代码复用,更重要的是可以保证代码的一致性,只需要修改该函数代码则所有调用均受到影响。
设计函数时,应注意提高模块的内聚性,同时降低模块之间的隐式耦合。
函数定义语法:
def 函数名([参数列表]):
‘’‘注释’’’
函数体

注意事项
函数形参不需要声明类型,也不需要指定函数返回值类型
即使该函数不需要接收任何参数,也必须保留一对空的圆括号
括号后面的冒号必不可少
函数体相对于def关键字必须保持一定的空格缩进
Python允许嵌套定义函数
编写生成斐波那契数列的函数并调用。

def fib(n):
a, b = 1, 1
while a < n:
print(a, end=’ ')
a, b = b, a+b
print()

fib(1000)

lambda表达式可以用来声明匿名函数,也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义具名函数。
lambda表达式只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含复合语句,但在表达式中可以调用其他函数。
在Python中,定义函数时也不需要声明函数的返回值类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。
不论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行。
如果函数没有return语句、有return语句但是没有执行到或者执行了不返回任何值的return语句,解释器都会认为该函数以return None结束,即返回空值。
函数定义时圆括弧内是使用逗号分隔开的形参列表(parameters),函数可以有多个参数,也可以没有参数,但定义和调用时一对圆括弧必须要有,表示这是一个函数并且不接收参数。
调用函数时向其传递实参(arguments),根据不同的参数类型,将实参的引用传递给形参。
定义函数时不需要声明参数类型,解释器会根据实参的类型自动推断形参类型,在一定程度上类似于函数重载和泛型函数的功能。
在调用函数时是否为默认值参数传递实参是可选的变量起作用的代码范围称为变量的作用域,不同作用域内变量名可以相同,互不影响。
在函数内部定义的普通变量只在函数内部起作用,称为局部变量。当函数执行结束后,局部变量自动删除,不再可以使用。
局部变量的引用比全局变量速度快,应优先考虑使用。
全局变量可以通过关键字global来定义。这分为两种情况:
一个变量已在函数外定义,如果在函数内需要为这个变量赋值,并要将这个赋值结果反映到函数外,可以在函数内使用global将其声明为全局变量。
如果一个变量在函数外没有定义,在函数内部也可以直接将一个变量定义为全局变量,该函数执行后,将增加一个新的全局变量。

在函数内定义的变量只在该函数内起作用,称为局部变量。
def fun():
x=3
count=2
while count>0:
print (x)
count=count-1
fun()
print (x) # 错误
函数递归调用
def f(x):
if x1: #递归调用结束的条件
return 1
else:
return(f(x-1)+x*x) #调用f( ) 函数本身
print(f(5))
从键盘输入一个正整数n,使用递归算法求该数的阶乘
def fac(n):
if n
1: #递归调用结束的条件
p=1
else:
p=fac(n-1)*n #调用f( ) 函数本身
return p
x=int(input(“输入一个正整数:”))
print(fac(x))
from math import sin #只导入模块中的指定对象,访问速度略快import math #导入标准库math
Python程序既可以直接运行,也可以使用import导入,当作模块来使用。
2)当Python程序直接运行时,__name__变量的值是字符串’main
3)当Python程序当做模块使用时,__name__变量的值是模块的名字,也就是程序文件的主文件名。
内置函数map()把一个函数func依次映射到序列或迭代器对象的每个元素上,并返回一个可迭代的map对象作为结果,map对象中每个元素是原序列中元素经过函数func处理后的结果。

list(map(str, range(5))) #把列表中元素转换为字符串
[‘0’, ‘1’, ‘2’, ‘3’, ‘4’]

def add5(v): #单参数函数
return v+5

list(map(add5, range(10)))#把单参数函数映射到一个序列的所有元素
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

def add(x, y): #可以接收2个参数的函数
return x+y

list(map(add, range(5), range(5,10)))
#把双参数函数映射到两个序列上
[5, 7, 9, 11, 13]
内置函数filter()将一个单参数函数作用到一个序列上,返回该序列中使得该函数返回值为True的那些元素组成的filter对象,如果指定函数为None,则返回序列中等价于True的元素。

seq = [‘foo’, ‘x41’, ‘?!’, ‘***’]
def func(x):
return x.isalnum() #测试是否为字母或数字

filter(func, seq) #返回filter对象
<filter object at 0x000000000305D898>

list(filter(func, seq)) #把filter对象转换为列表
[‘foo’, ‘x41’]
编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。def demo(*para):
avg = sum(para) / len(para) #平均值
g = [i for i in para if i>avg] #列表推导式
return (avg,) + tuple(g)
编写函数,接收字符串参数,返回一个元组,其中第一个元素为大写字母个数,第二个元素为小写字母个数。
def demo(s):
result = [0, 0]
for ch in s:
if ch.islower():
result[1] += 1
elif ch.isupper():
result[0] += 1
return tuple(result)
编写函数,接收包含n个整数的列表lst和一个整数k(0<=k<n)作为参数,返回新列表。处理规则为:将列表lst中下标k之前的元素逆序,下标k之后的元素逆序,然后将整个列表lst中的所有元素逆序。

def demo(lst, k):
x = lst[k-1::-1]
y = lst[:k-1:-1]
return list(reversed(x+y))

编写函数,接收一个所有元素值都不相等的整数列表x和一个整数n,要求将值为n的元素作为支点,将列表中所有值小于n的元素全部放到n的前面,所有值大于n的元素放到n的后面。
def demo(x, n):
t1 = [i for i in x if i<n]
t2 = [i for i in x if i>n]
return t1 + [n] + t2

用户输入一个三位自然数,计算并输出其佰位、十位和个位上的数字。
x = input(‘请输入一个三位数:’)
a, b, c = map(int, x)
print(a, b, c)

任意输入三个英文单词,按字典顺序输出。
s = input()
x, y, z = sorted(s.split(’,’))
print(x, y, z)
上下文管理语句with还支持下面的用法:
with open(‘test.txt’, ‘r’) as src, open(‘test_new.txt’, ‘w’) as dst:
dst.write(src.read())
readline()方法从文件中获取一个字符串,每个字符串就是文件中的每一行。
readlines()方法返回字符串,每一项是文件中的每一行。统计文本文件中最长行的长度和该行的内容。
with open(‘sample.txt’) as fp:
result = [0, ‘’]
for line in fp:
t = len(line)
if t > result[0]:
result = [t, line]
print(result)
数据库文件、图像文件、可执行文件、动态链接库文件、音频文件、视频文件、Office文档等均属于二进制文件。
对于二进制文件,不能使用记事本或其他文本编辑软件直接进行正常读写,也不能通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,然后设计正确的反序列化规则,才能准确地理解二进制文件内容。
所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成二进制形式的过程,对象序列化后的数据经过正确的反序列化过程应该能够准确无误地恢复为原来的对象。
Python中常用的序列化模块有struct、 pickle 、 shelve、marshal。
Python标准库shelve也提供了二进制文件操作的功能,可以像字典赋值一样来写入二进制文件,也可以像字典一样读取二进制文件。
Python使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。
类名的首字母一般建议大写。
在上面的代码中,使用到了一个特殊方法:init(self,…)方法,这个方法被称为构造函数,用来初始化对象(实例),在创建新对象时调用。
__init__方法在类的一个对象(实例)被建立时,自动运行。该方法可以用来初始化对象。
如果未设计构造函数,Python将提供一个默认的构造函数。
__ init __()方法定义成包含 2个形参,即 self 、name ,形参 self 必不可少,还必须位于其他形参的前面。
(1) 普通名字,表示 public 。
(2) 以_前导的名字,从语法上视为 public ,但约定俗称的意思是“可以被访问,但请视为 private ,不要随意访问”。
(3) 以__前导、以__后缀的名字,表示 public 。
(4) 以__前导、不以__后缀的名字,表示 private 。私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
在 Python 中没有 public 、protected 、 private 之类的访问权限控制修饰词,而是通过方法名约定访问权限。
Python中不存在严格意义上的私有成员。
静态方法通过修饰器@staticmethod来进行修饰,静态方法对参数没有要求,不需要多定义参数
静态方法可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员 。
继承用于指定一个类将从其父类获取其大部分或全部功能。 它是面向对象编程的一个特征。 这是一个非常强大的功能,方便用户对现有类进行几个或多个修改来创建一个新的类。新类称为子类或派生类,从其继承属性的主类称为基类或父类。
子类或派生类继承父类的功能,向其添加新功能。 实现代码的可重用性。

6.3.1 类的继承
class 派生类名(基类名):
派生类成员
1、基类名写在括号里。
2、对于Dog来说,Animal就是它的父类,对于Animal来说,Dog就是它的子类。
3、创建子类时,父类必须包含在当前文件中,且位于子类前面。
继承有什么好处?最大的好处是子类获得了父类的全部功能。
由于Animial实现了run()方法,因此,Dog作为它的子类,什么事也没干,就自动拥有了run()方法。
重写必须出现在继承中。它是指当派生类继承了基类的方法之后,如果基类方法的功能不能满足需求,需要对基类中的某些方法进行修改,可以在派生类重写基类的方法,这就是重写。

重写只出现在继承中。它是指当派生类继承了基类的方法之后,如果基类方法的功能不能满足需求,需要对基类中的某些方法进行修改,可以在派生类重写基类的方法,这就是重写。
Python提供了多个图形开发界面的库,几个常用Python GUI库如下:
(1)Tkinter 。tkinter(Tk interface, Tk接口),是Tk图形用户界面工具包标准的Python接口。tkinter是Python的标准GUI库,支持跨平台的图形用户界面应用程序开发,支持Windows、Linux、UNIX和Macintosh系统。tkinter适用于小型图形界面应用程序的快速开发。
(2)wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。
(3)PyQt:PyQt模块是Qt图形用户界面工具包标准的Python接口,适合于大型应用程序开发。PyQt实现了大约440个类和6000多种功能和方法。
(4)Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。
Tkinter几何布局管理器用于组织和管理父组件(往往是窗口)中子组件的布局方式。tkinter提供了几种不同风格的几何布局管理类:
pack
Grid
Place
Frame
place几何布局管理允许指定组件的大小与位置。
place的优点是可以精确控制组件的位置,不足之处是改变窗口大小时,子组件不能随之灵活改变大小。

Python自带一个轻量级的关系型数据库SQLite。SQLite是一种嵌入式关系型数据库,它的数据库就是一个文件。
MySQL是Web世界中使用最广泛的数据库服务器。
SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。
MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite。
NoSQL指的是非关系型的数据库。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
由于 NoSQL 出现的时间不长,目前对 NoSQL 并没有较为清晰和统一的严谨定义,但是其中的一些主要特征得到了业内人士的公认:其一, NoSQL 数据库不使用结构化查询语言;其二,所有的 NoSQL 数据库目前都是开源项目;其三,大多数 NoSQL 数据库都是面向集群或以集群为目的进行开发的,因此更适用于大规模数据存储系统。
与主流关系型数据库清一色采用基于行的存储方式不同,当前的NoSQL呈现出多元化的存储方式发展状况,大体上分为四类:面向文档的存储(Document-Oriented)、列存储(Column-Family)、图形关系存储(Graph-Oriented)和键值存储(Key-value)。
在MongoDB中,数据是以弹性模式(flexible schema)进行组织的,这也是其与结构化数据库(以表格的行列结构化形式存储和查询数据)的最大不同之处。在结构化数据库中,必须在存储数据之前明确确定表格的模式结构,而MongoDB的集合并不要求事先定义文档的结构。这种弹性模式使得在文档和实体或对象之间进行映射更为方便。
MongoDB以JSON风格的语法格式在文档中表达数据
numpy提供2个类似range的函数返回一个数列形式的数组。numpy数组中的元素访问
数组切片得到的是原始数组的视图,所有修改都会直接反映到源数组。如果需要得到numpy数组(ndanay)切片的一份副本,需要进行复制操作,比如b[5:8].copy()。
sklearn是一套基于Python语言的机器学习库,该库建立在NumPy、SciPy 和 matplotlib 上之上。
sklearn发布于2007年,已经发展更新了超过10年时间,目前已经成为Python中最重要最常用的机器学习工具,集成了大量成熟的机器学习算法。
图是官方提供的sklearn库结构及算法选择流程图。由于sklearn模型和算法众多,如何选择合适的模型和算法通常都是令用户头疼的事情。图中是一些大致的指导,圆圈内是判断条件,方框内是可以选择的算法。用户可以根据自己的数据特征和任务目标去找到一条合适的操作路线,逐步尝试。
分类是指识别给定对象的所属类别,分类过程常为有监督过程,即存在有先验知识的训练数据集。 常见的应用场景如垃圾邮件检测和图像识别等。目前sklearn已经实现的算法包括:支持向量机,KNN,决策树等。
聚类是指自动识别具有相似属性的给定对象,并将其分组为集合,聚类过程为无监督过程,即待处理数据对象没有任何先验知识。目前sklearn已经实现的算法包括:K-Means,DBSCAN聚类等。
回归是指预测与给定对象相关联的连续值属性,最常见的应用场景包括房价预测、股票走势等。目前sklearn已经实现的算法包括:线性回归,支持向量回归,贝叶斯回归算法等。
数据降维是指使用主成分分析(PCA)、非负矩阵分解、特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。
模型选择是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度。目前sklearn实现的模块包括:格点搜索,交叉验证和各种针对预测误差评估的度量函数。
数据预处理是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的一个环节。这里归一化是指将输入数据转换为具有零均值和单位权方差的新变量,但因为大多数时候都做不到精确等于零,因此会设置一个可接受的范围,一般都要求落在0-1之间。而特征提取是指将文本或图像数据转换为可用于机器学习的数字变量。
由于sklearn本身不支持深度学习,也不支持GPU加速,因此并不适合于处理大规模问题。有相关需求的可以查看同样对Python有良好支持的Keras和Theano等框架。


  1. a-zA-Z ↩︎

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值