面向对象python程序设计

一、实验目的

能够掌握封装编程、掌握继承编程、掌握多态编程。

二、任务要求

1.解释面向对象程序设计中封装、继承、多态的概念。

2.写出下面程序的运行结果。

3.写出下面程序的运行结果。

4.设计并实现一个数组类,要求把包含数字的列表、元组或range对象转换为数组,并能够修改数组中指定位置上的元素值。

三、面向对象程序设计中封装、继承、多态的概念

1.封装

指的是将数据及其相关操作整合在一起,构成独立的对象。通过这种方式,能够隐匿对象内部的实现细节,仅向外部展示必要的接口供其使用。如此一来,不但提升了代码的安全性、可维护性,还增强了代码的可重用性。

  1. 继承

则允许一个类从已有类中获取属性和方法,进而实现代码的扩展和复用。子类能够继承父类的特性,并可进行个性化的扩展与修改。这一特性有助于减少代码冗余,提高代码的可扩展性。

3.多态

意味着同一个方法在不同的对象中能够有各异的实现方式。借助多态,可依据对象的实际类型,动态地调用相应的方法。此概念大大增强了代码的灵活性和可扩展性。

四、任务二及三程序运行结果

1.任务二

1)运用到range()函数。

for i in range () 就是给i赋值。for i in range() 在 Python 中是一种常见的循环结构,其作用是通过 range()函数生成一个整数序列,并按顺序逐个将整数赋值给变量 i,从而实现对序列中每个整数的遍历。

Range()函数具有以下的特点

(1)能够方便地控制代码在特定范围内重复执行。 依据设定的起始值、结束值和步长,依次访问该范围内的每个整数。 (2)提供了很大的灵活性,可以根据需求修改循环的范围和步长。 (3)常用于遍历数组、列表等数据结构,或执行重复任务,如处理多个文件或数据项。 (4) 还可用于生成特定数量的重复元素。for i in range()是一种简单而实用的循环方式,在 Python 编程中被广泛应用。

2)这段代码的解释。

s = 0: 定义了一个变量 s并初始化为 0。

for i in range(1, 101):使用 range()函数生成一个从 1 到 100 的整数序列,并依次将每个整数赋值给变量 i,进行循环。在循环体中,s += i表示将当前的 i加到变量s上,实现对 s的累加。

else部分:只有当 for循环正常结束(即没有被 break语句中断)时才会执行。在这个例子中,循环正常结束后会打印出 1。 这段代码的作用是通过循环将 1 到 100 的整数相加,并将结果存储在变量 s中。最后,在循环结束后执行else部分的代码,输出 1。

图1  任务二运行结果

2.任务三

 除了用到任务二中所述语句外,还使用了break。在if...else语句中间插入一个break,表示如果满足某条件,则直接结束,下面的语句不再执行。

如此一来,该代码的含义表示,虽然rang(1,101),但i=50时break,即从1开始,加到50结束。

2  任务三运行结果

  • 任务四设计

程序设计实例1

1.设计代码为:

class Array:

    def __init__(self, data):

        self.data = list(data)

    def get_element(self, index):

        if 0 <= index < len(self.data):

            return self.data[index]

        else:

            raise ValueError("Index out of range")

    def set_element(self, index, value):

        if 0 <= index < len(self.data):

            self.data[index] = value

        else:

            raise ValueError("Index out of range")

arr = Array([1, 2, 3, 4, 5])

print("原始数组:", arr.data)  # 输出: [1, 2, 3, 4, 5]

print("数组第 2 个元素:", arr.get_element(1))  # 输出: 2

arr.set_element(1, 10)

print("修改后数组:", arr.data)  # 输出: [1, 10, 3, 4, 5]

3  任务四设计结果展示1

  1. 代码解释。
    1. class Array:定义了一个名为Array的类。
    2. _init__(self, data):这是构造函数,用于初始化类的实例。它接受一个参数  data ,并将其转换为列表存储在实例变量  self.data 中。
    3. get_element(self, index): 这个方法用于获取数组中指定位置的元素值。它检查索引是否在有效范围内(0 到数组长度减 1)。如果索引有效,返回对应位置的元素值。
    4. set_element(self, index, value):这个方法用于设置数组中指定位置的元素值。同样检查索引的有效性。如果有效,将指定位置的元素设置为给定的值。 创建了一个 Array 类的实例  arr ,并传入一个列表作为初始数据。通过 get_element 方法获取数组中第 2 个元素的值。通过  set_element 方法将第 2 个元素的值修改为 10。 最后输出修改后的数组。

程序设计实例2

  1. 代码如下

class Array:
    def __init__(self, initial_data=None):
        if initial_data:
            self.data = initial_data
        else:
            self.data = []

    def append(self, element):
        self.data.append(element)

    def remove(self, index):
        if 0 <= index < len(self.data):
            del self.data[index]
        else:
            raise ValueError("Invalid index")

    def get_length(self):
        return len(self.data)

# 创建 Array 实例
arr = Array([1, 2, 3])

# 追加元素
arr.append(4)

# 移除指定位置的元素
arr.remove(1)

# 获取数组长度
length = arr.get_length()
print("Array length:", length)
print("Updated array:", arr.data)

  1. 结果如下

3  任务四设计结果展示2

  1. 代码解释

首先,定义了一个名为 Array 的类。__init__ 是构造函数,它接受一个参数 initial_data。如果提供了 initial_data,就将其赋值给 self.data,否则将 self.data 初始化为一个空列表。

append 方法用于向数组中添加元素。它将传入的元素添加到 self.data 列表的末尾。 remove 方法用于移除数组中指定位置的元素。它检查索引是否有效(在有效范围内),如果有效就使用 del 语句从 self.data 列表中删除对应位置的元素;否则,抛出一个 ValueError 异常。 get_length 方法返回 self.data 列表的长度。

接下来,创建了一个 Array 类的实例 arr,并传入一个包含初始数据 [1, 2, 3] 的列表。 然后,使用 append 方法向数组中添加一个元素 4。 接着,使用 remove 方法移除索引为 1 的元素。

最后,通过 get_length 方法获取数组的长度,并打印出来。同时也打印出更新后的数组内容。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

犇犇本犇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值