《Python程序设计》第8次作业
一、单选题(共3题,15分)
1、要打开一个文本文件读取内容,应以______方式打开文件。
fp = open(filename, mode='r', buffering=-1)
mode为可选参数,默认值为“r”


A、 'rw'
B、 'a'
C、 'wb'
D、 'r'
正确答案: D
解析:答案: D、'r'
例:
f=open('data.txt,'r')
2、编程:求从1-3中任选2个数组成的所有2位数。
下面程序哪个不正确( )?
A、#程序1
num = [1,2,3]
print([x*10+y for x in num for y in num if x!=y])
B、#程序2
num = [1,2,3]
s2=[]
for x in num:
for y in num:
if x!=y :
s2=s2+[x*10+y]
print(s2)
C、#程序3
num = [1,2,3]
s2=[]
for x in num:
for y in num:
if x==y :
s2=s2+[x*10+y]
print(s2)
D、#程序4
num =[1,2,3]
print( [y*10+x for y in num for x in num if x!=y])
正确答案: C
解析:#程序3是不正确的。
3、下面关于文件的描述,不正确的是( )。
A、 文本文件一般由单一特定编码的字符组成,如UTF-8编码、ASCII码或 Unicode等格式进行编码,内容容易统一展示和阅读。
B、 二进制文件存储的是由0和1组成的二进制编码,文件内部数据的组织格式与文件用途有关。
C、文件有两个关键属性,分别是“文件名”和“文件路径”。
文件名指的是为每个文件设定的名称。
文件路径,是文件存储的位置或即将存储的位置。
文件路径分为相对路径和绝对路径。
D、绝对路径表示当前工作目录,即程序所在路径。
如果文件和程序存储在同一个文件夹中,那么可以使用相对路径。
相对 路径是从根文件夹开始,Window 系统中以盘符(如:C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以“/”作为根文件夹。
正确答案: D
二、多选题(共11题,55分)
1、下 面叙述正确的有( )。
A、 表达式 0 and 3 or 4 的值为 4 。
B、 语句 x,y = 3 < 2,3 执行结束后,变量y的值为 3 。
C、 已知 x = [1,2,3,4],则表达式 x*2的值为 [1, 2, 3, 4, 1, 2, 3, 4] 。
D、 已知 x = [1,2,3,4],则表达式 x*2的值为 [2, 4, 6, 8 ] 。
正确答案: ABC
2、下面叙述正确 是( )。
A、 已知 x = ([1,2,3],[1,2],(2),(2,)),那么表达式x.count(2)的值为 1 。
B、 表达式 len(dict(zip('abcdcba','1234567')))的结果为 4 。
C、 已知 x = {1,2,2,3,4}^{2,3,5},则sum(x)的值为 10 。因为 x={ 1,4,5 }
D、 已知 x = {1,2,2,3,4}^{2,3,5},则sum(x)的值为 5 。因为 x={ 2,3 }
正确答案: ABC
解析:x={1,2,2,3,4}^{2,3,5}
print(x,sum(x))
x={1,2,2,3,4}&{2,3,5}
print(x,sum(x))
3、下面叙述正确的有( )。
A、 已知 x = {ch for ch in 'Aa22ab33c44' if ch.islower()},则表达式len(x)的值为 3 。
B、 已知 x = {ch for ch in 'Aa22ab33c44' if ch.islower()},则表达式len(x)的值为 7 。
C、 表达式'abcda'.rindex('a')的值是 4 。
D、 表达式len('helloPython'.center(40))的值是 40 。
正确答案: ACD
解析:x = {ch for ch in 'Aa22ab33c44' if ch.islower()}
print(len(x))
t='abcda'.rindex('a')
print(t)
k=len('helloPython'.center(40))
print(k)
print('helloPython'.center(40))
4、判断下面叙述,正确的是( )。
A、 Python中{[1,2]:10,3:20}是合法的数据。
B、 表达式len({2,3,2,4})的结果为3。
C、 print(*{1,2,3,2})的输出结果是1 2 3。
D、 赋值语句 x = [1,2,3],4 可以正常执行,结果是 x=([1, 2, 3], 4) 。
正确答案: BCD
解析:#d1={[1,2]:10,3:20}
#print(d1)
y=len({2,3,2,4})
print(y)
print(*{1,2,3,2})
print(*{1,2,3,2,3,7,9,2})
x = [1,2,3],4
print(x)
5、编程题:
求1到100之间所有5的倍数的和。
下面程序,正确的有( )。
A、print('1到100之间所有5的倍数的和是',sum(range(0,100,5)))
B、
s=0
for k in range(0,100,5):
s=s+k
print('1到100之间所有5的倍数的和是',s)
C、
s=k=0
while k <20
s=s+k*5
k=k+1
print('1到100之间所有5的倍数的和是',s)
D、
s=k=0
while k <20
s=s+k*5
k+=1
print('1到100之间所有5的倍数的和是',s)
正确答案: ABCD
6、下面叙述,正确的是( )。
A、GUI(Graphical User Interface)的中文意思是图形用户界面。
用户界面有一些共同的元素:主窗口,菜单,工具栏,按钮,文本输入,标签等,
所有这些元素通常被叫做部件。
B、Button(按钮)通常用于在GUI中触发诸如保存,编辑,启动,停止某些操作之类的操作。
Label是用于提供文本信息的文本标签。
TextBox用于向GUI和非常流行的组件输入一些文本信息。
C、 GUI是指导航人机界面。
D、 Python 有很多图形用户界面工具集, 其中的三巨头是Tkinter,wxPython和PyQt。他们都可以支持Windows, macOS和Linux操作系统,而且PyQt还支持移动端。
正确答案: ABD
7、关于面向对象程序设计的相关叙述,下面正确的是( )。
A、抽象(Abstraction)是指对现实世界问题和实体的本质表现;问题分解成数据和数据上的操作。
B、封装(encapsulation)是将程序具体的实现细节进行隐藏的一种机制。
C、继承(inheritance)描述的是类与类之间的关系,通过继承,新生类可以在无需赘写原有类的情况下,对原有类的功能进行扩展。
D、多态( polymorphism)指同一个属性或行为在父类及其各派生类中具有不同的语义。
正确答案: ABCD
8、关于面向对象技术,下面叙述正确的是( )。
A、面向对象程序设计中,程序的基本单元是类。
类是对具有相同属性和行为的一组实例的抽象,一个类包含数据(描述类的属性)和方法(对数据的操作)两部分。
B、对象是现实世界中可描述的事物,它可以是有形的也可以是无形的。
在面向对象程序设计中,每个实例被称为一个对象,对数据的操作函数被称为方法。
C、在 Python中,类的定义的一般形式是:
class 类名:
属性名 = 属性值
def 方法名(self):
方法体
D、类方法可以被类名或对象名调用,其语法格式如下:
类名.类方法
对象名.类方法
正确答案: ABCD
9、阅读下面代码:
class Amphibian:
name = "两栖动物"
def features(self):
print("幼年用鳃呼吸")
print("成年用肺兼皮肤呼吸")
class Frog(Amphibian):
def attr(self):
print(f"青蛙是{self.name}")
print("我会呱呱叫")
下面叙述中,正确的是( )。
A、 定义一个表示两栖动物的父类Amphibian和一个表示青蛙的子类Frog,用到了类的继承技术。
B、#调用
frog = Frog()
print(frog.name)
frog.features()
frog.attr()
C、
Frog()
print(Frog.name)
Frog.features()
Frog.attr()
D、
fg = Frog()
m=fg.name
print("这是 ",m, '\n')
fg.attr()
fg.features()
正确答案: ABD
10、关于self在类中的意义及作用,下面描述正确的是( )。
A、类的方法与普通的函数只有一个区别:
它们必须有一个额外的第一个参数名称,按照惯例它的名称是self。
例:
class Amphibian:
name = "两栖动物"
def features(self):
print("幼年用鳃呼吸")
print("成年用肺兼皮肤呼吸")
class Frog(Amphibian):
def attr(self):
print(f"青蛙是{self.name}")
print("我会呱呱叫")
*调用
frog = Frog()
print(frog.name)
frog.features()
frog.attr()
fg = Frog()
m=fg.name
print("这是 ",m, '\n')
fg.attr()
fg.features()
B、 self代表的是类的实例。
C、self不是Pytho关键字,换成其他名称也是可以正常执行的。
例:
#类的继承
# 定义一个表示两栖动物的父类Amphibian和一个表示青蛙的子类Frog
class Amphibian:
name = "两栖动物"
def features(selfs):
print("幼年用鳃呼吸")
print("成年用肺兼皮肤呼吸")
class Frog(Amphibian):
def attr(selfs):
print(f"青蛙是{selfs.name}")
print("我会呱呱叫")
frog = Frog()
print(frog.name)
frog.features()
frog.attr()
fg = Frog()
m=fg.name
print("这是 ",m, '\n')
fg.attr()
fg.features()
D、 self是Pytho关键字,换成其他名称是不能正常执行的。
正确答案: ABC
11、#阅读下面程序代码
class Animal:
def call(self,name):
self.name=name
print(self.name,"这是动物!")
class Rabbit(Animal):
def move(self):
print("兔子蹦蹦跳跳。")
def test(obj):
obj.move()
class Snail(Animal):
def move(self):
print("蜗牛缓慢爬行。")
tw=Animal()
d2=tw.call('蜗牛')
t2=Snail()
t2.move()
# 下面叙述正确的是( )。
A、序中定义了3个类:
class Animal
class Rabbit
class Snail
其中:Animal是基类,abbit是子类,Snail是子类。这用到了继承技术。
B、方法 move(self) 出现在两个子类中,是体现多态性。
在Python中,多态指在不考虑对象类型的情况下使用对象。
C、#执行调用
tw=Animal()
d1=tw.call('兔子')
t1=Rabbit()
t1.move()
t1.test()
#输出的结果是:
兔子 这是动物!
兔子蹦蹦跳跳
兔子蹦蹦跳跳
D、#执行调用
tw=Animal()
d2=tw.call('蜗牛')
t2=Snail()
t2.move()
#输出的结果是:
蜗牛 这是动物!
蜗牛缓慢爬行
蜗牛缓慢爬行
正确答案: ABC
三、填空题(共1题,5分)
1、通过继承创建的新类称为“子类”或“ ” ,
被继承的类称为“基类”“ ”或“ ”。
正确答案:
第1空: 派生类
第2空: 父类
第3空: 超类
四、判断题(共5题,25分)
1、__init__ ( ) 函数是Python语言的构造函数。 ( )
正确答案: 正确
2、子类只能从一个基类继承。 ( )
正确答案: 错误
3、在Python中,子类中的同名方法将自动覆盖父类的同名方法。 ( )
正确答案: 错误
4、Python语言类中定义的函数有一个名为self的参数,调用该函数时,不传统实参给self。
所以,调用函数的实参个数比函数的形参个数少1。
正确答案: 正确
5、为GUI添加控件并使GUI得以运行的5个主要步骤是:
(1)导入tkinter模块,获得对tkinter的访问权;
(2)创建名为top(或root,起什么名字不重要)的顶层窗口,以容纳GUI所需的控件;
(3)在顶层窗口中,添加所需的对象(即实例),组织和设计实际的GUI;
(4)调用方法pack()或其他版面布局方法,使添加到窗口里的控件真正显现出来;
(5)通过调用方法mainloop(),让顶层窗口进入等待事件发生的循环中。
上面叙述是否正确( )?
正确答案: 正确

