目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
单元七、八  文件操作,GUI,面向对象

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(),让顶层窗口进入等待事件发生的循环中。

上面叙述是否正确(    )?

正确答案: 正确