博客
关于我
Python面向对象程序设计期末考试复习题及答案(含编程题)
阅读量:253 次
发布时间:2019-03-01

本文共 5334 字,大约阅读时间需要 17 分钟。

一、选择题

  • 关于面向过程和面向对象,下列说法错误的是(B).

    • A. 面向过程和面向对象都是解决问题的一种思路
    • B. 面向过程是基于面向对象的
    • C. 面向过程强调的是解决问题的步骤
    • D. 面向对象强调的是解决问题的对象
  • 关于类和对象的关系,下列描述正确的是(D).

    • A. 类是面向对象的核心
    • B. 类是现实中事物的个体
    • C. 对象是根据类创建的,并且一个类只能对应一个对象
    • D. 对象描述的是现实的个体,它是类的实例
  • 构造方法的作用是(C).

    • A. 一般成员方法
    • B. 类的初始化
    • C. 对象的初始化
    • D. 对象的建立
  • 构造方法是类的一个特殊方法,Python中它的名称为(C).

    • A. 与类同名
    • B. _construct
    • C. init
    • D. init
  • Python类中包含一个特殊的变量(A),它表示当前对象自身,可以访问类的成员.

    • A. self
    • B. me
    • C. this
    • D. 与类同名

  • 二、填空题

  • Python安装扩展库常用的是___工具。(pip)
  • Python程序文件扩展名主要有___和___两种,其中后者常用于GUI程序。(py、pyw)
  • 查看变量类型的Python内置函数是______。(type())
  • 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为_____。(None)
  • 查看变量内存地址的Python内置函数是_______。(id())
  • Python源代码程序编译后的文件扩展名为___。(pyc)
  • 为了提高Python代码运行速度和进行适当的保密,可以将Python程序文件编译为扩展名____的文件。(pyc)
  • ____命令既可以删除列表中的一个元素,也可以删除整个列表。(del)

  • 三、判断题

  • 在Python中定义类时,如果某个成员名称前有2个下划线则表示是私有成员。(对)
  • 在类定义的外部没有任何办法可以访问对象的私有成员。(错)
  • Python中一切内容都可以称为对象。(对)
  • 在一个软件的设计与开发中,所有类名、函数名、变量名都应该遵循统一的风格和规范。(对)
  • 定义类时所有实例方法的第一个参数用来表示对象本身,在类的外部通过对象名来调用实例方法时不需要为该参数传值。(对)
  • 对于Python类中的私有成员,可以通过“对象名._类名__私有成员名”的方式来访问。(对)
  • 使用内置函数open()且以“w”模式打开的文件,文件指针默认指向文件尾。(错)
  • 使用内置函数open()打开文件时,只要文件路径正确就总是可以正确打开的。(错)
  • 假设已导入random标准库,那么表达式max([random.randint(1,10) for i in range(10)])的值一定是10。(错)
  • Python是一种跨平台、开源、免费的高级动态编程语言。(对)
  • Python3.x完全兼容Python2.x。(错)
  • 使用内置函数open()且以“w”模式打开的文件,文件指针默认指向文件尾。(错)
  • 使用内置函数open()打开文件时,只要文件路径正确就总是可以正确打开的。(错)
  • Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。(错)
  • Python采用的是基于值的自动内存管理方式。(对)
  • 在定义函数时,某个参数名字前面带有一个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中。(对)
  • 在定义函数时,某个参数名字前面带有两个*符号表示可变长度参数,可以接收任意多个关键参数并将其存放于一个字典之中。(对)
  • 定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。(对)
  • 在调用函数时,可以通过关键参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦。(对)
  • 在调用函数时,必须牢记函数形参顺序才能正确传值。(错)
  • 调用函数时传递的实参个数必须与函数形参个数相等才行。(错)

  • 四、解答题

  • 阅读下面的代码,并分析假设文件“D:\test.txt”不存在的情况下两段代码可能发生的问题。

    • 代码1
      try: fp = open(r'd:\test.txt') print('Hello world!', file=fp) finally: fp.close()

      如果文件不存在,会抛出FileNotFoundError,因为无法打开文件。

    • 代码2
      try: fp = open(r'd:\test.txt', 'a+') print('Hello world!', file=fp) finally: fp.close()

      如果文件不存在,open会自动创建该文件,因此不会抛出异常,代码可以正常运行。

  • 写出下面代码的优化版本,提高运行效率。

    • 原代码:
      x = list(range(500)) for item in x: t = 5**5 print(item + t)
    • 优化版本:
      x = list(range(500)) t = 5**5for item in x: print(item + t)
  • 写出下面代码的运行结果。

    • 代码
      def Sum(a, b=3, c=5): return sum([a, b, c]) print(Sum(a=8, c=2)) print(Sum(8)) print(Sum(8, 2))
      • 输出
        13
        16
        15
  • 阅读下面的程序,判断其是否可以正常运行,如果可以运行则写出执行结果,如果不能运行则写出理由。

    • 程序
      class Test: def __init__(self, value): self.__value = value @property def value(self): return self.__value t = Test(3) t.value = 5 print(t.value)
      • 理由
        该程序无法正常运行,因为value被定义为只读属性,无法修改其值。

  • 五、代码设计题

  • 代码

    import revalue = []print("请输入:") items = [x for x in input().split(',')]for p in items:    if len(p) < 6 or len(p) > 12:        continue    if not re.search("[a-z]", p):        continue    if not re.search("[0-9]", p):        continue    if not re.search("[A-Z]", p):        continue    if not re.search("[$#@]", p):        continue    if re.search("\s", p):        continue    value.append(p)print(",".join(value))
    • 解释
      代码用于过滤并格式化输入的字符串,保留符合特定规则的项。
  • 代码

    x = input("x=")l = x.split()d = {}for i in l:    d[i] = d.get(i, 0) + 1l2 = sorted(d)for i in l2:    print(f"{i}: {d[i]}")l = []for i in range(3):    x = int(input("x="))    l.append(x)l.sort()print(" ".join(map(str, l)))
    • 解释
      代码用于统计单词出现次数并排序,然后输出结果。
  • 代码

    class Person:    def __init__(self, name, weight):        self.name = name        self.weight = weight    def __str__(self):        return f'我的名字叫 {self.name} 体重是 {self.weight:.2f}'    def run(self):        print(f'{self.name} 爱跑步')        self.weight -= 0.5    def eat(self):        print(f'{self.name} 吃东西')        self.weight += 1xx = Person('小明', 75.0)xx.run()xx.eat()print(xx)xm = Person('小美', 45.0)xm.run()xm.eat()print(xm)print(xx)
    • 解释
      代码模拟了小明和小美的体重变化,分别进行跑步和吃东西的动作,并输出结果。
  • 代码

    class Home:    def __init__(self, home_type, area):        self.home_type = home_type        self.area = area        self.freearea = area        self.jiaju = []    def __str__(self):        return ('户型:%s\n总面积:%.2f\n剩余面积:%.2f\n家具名:%s'                 %(self.home_type, self.area, self.freearea, self.jiaju))    def add_jiaju(self, itm):        if itm.area > self.freearea:            print('%s的面积太大,无法添加!'%(itm.name))            return        self.jiaju.append(itm.name)        self.freearea -= itm.areaclass jiaju:    def __init__(self, name, area):        self.name = name        self.area = area    def __str__(self):        return f'[{self.name}]:占地 {self.area:.2f} 平米'bed = jiaju("床", 4)chest = jiaju("衣柜", 2)table = jiaju("餐桌", 1.5)print(bed)print(chest)print(table)myhome = Home('三室一厅', 100)myhome.add_jiaju(bed)myhome.add_jiaju(chest)myhome.add_jiaju(table)print(myhome)
    • 解释
      代码定义了一个房子的类,用于添加家具并计算剩余面积,最后打印房子的信息。
  • 代码

    class Gun(object):    def __init__(self, model):        self.model = model        self.bullet_count = 0    def add_bullet(self, count):        self.bullet_count += count    def shoot(self):        if self.bullet_count <= 0:            print('%s没有子弹' % self.model)        else:            self.bullet_count -= 1            print('%s的子弹数量为%s' % (self.model, self.bullet_count))class Soldier(object):    def __init__(self, name):        self.name = name        self.gun = None    def fire(self):        if self.gun is None:            print('%s没有枪' % self.name)        else:            self.gun.add_bullet(5)            self.gun.shoot()ak47 = Gun('AK47')ak47.add_bullet(10)ak47.shoot()ruien = Soldier('RE')ruien.gun = ak47ruien.fire()
    • 解释
      代码模拟了士兵和枪的交互,展示了如何添加子弹并射击。
  • 转载地址:http://igvt.baihongyu.com/

    你可能感兴趣的文章
    OBS studio最新版配置鉴权推流
    查看>>
    Obsidian的使用-ChatGPT4o作答
    查看>>
    Obsidian笔记记录GPT回复的数学公式无缝转化插件Katex to mathjax
    查看>>
    ObsoleteAttribute 可适用于除程序集、模块、参数或返回值以外的所有程序元素。 将元素标记为过时可以通知用户:该元素在产品的未来版本中将被移除。...
    查看>>
    OC block声明和使用
    查看>>
    OC Xcode快捷键
    查看>>
    oc 中的.m和.mm文件区别
    查看>>
    OC 中的重写 OC中没有重载 以及隐藏
    查看>>
    OC 内存管理黄金法则
    查看>>
    oc57--Category 分类
    查看>>
    occi库在oracle官网的下载针对vs2008
    查看>>
    OceanBase 安装使用详细说明
    查看>>
    OceanBase详解及如何通过MySQL的lib库进行连接
    查看>>
    ocp最新题库之052新题带答案整理-36题
    查看>>
    OCP题库升级,新版的052考试题及答案整理-18
    查看>>
    OCR:文字识别(最详细教程)
    查看>>
    OCR使用总结
    查看>>
    Octotree Chrome插件离线安装
    查看>>
    OC中关于给NSString 赋 nil和@""的区别
    查看>>
    OC字符串方法汇总
    查看>>