以面向对象程序设计实验为例:
一、实验目的了解面向对象程序设计思想
了解对象、类、封装、继承、方法、构造函数和析构函数基本概念
掌握定义类、成员变量、成员函数、静态变量和静态方法
掌握通过类定义实现继承和多态的方法
掌握对象的创建和使用方法
二、实验内容(包括分析或步骤)
1. 定义类和使用类定义交通工具(Vehicle)类,定义两个成员变量:品牌(brand)、型号(type);定义构造函数,在其中通过静态变量方式设置品牌;
定义析构函数,在其中将交通工具对象的品牌和型号清空;
定义一个成员函数,在其中输出当前交通工具对象的品牌和型号;
定义一个类方法,在其中更新交通工具类的静态变量品牌和型号。
创建一个交通工具对象,设置其品牌为“audi”,型号为“A6”,然后通过对象调用其成员函数,输出其品牌和型号,销毁对象;
设置所有交通工具对象的品牌为“大众”,通过类方法,更新品牌为“奥迪”。
2. 类的继承和多态定义一个抽象类交通工具(Vehicle)类,定义一个抽象方法(drive);
定义2个子类汽车和飞机,在子类中实现抽象方法,输出不同交通工具的驾驶情况(如果是飞机,则输出机长名字、乘务员数量和乘客数量,如果是汽车,则输出驾驶员名字,汽车型号和行驶年数)。
定义一个函数,判断输入的对象是什么类型的,然后调用drive方法输出该交通工具信息。
四、实验实现
核心代码1:
class Vehicle():
"""def __init__(self):
self.brand
self.type"""
def __init__(self, brand, type):
self._brand = brand
self._type = type
def __del__(self):
print(self._brand, "is deleted")
self._brand = ''
# self._type = ''
def set_brand(this, brand):
this._brand = brand
def out(self):
return self._brand, self._type
def main():
v = Vehicle("audi", "A6")
print(v.out())
v.__del__()
v.set_brand('Volkswagen')
print(v.out())
v.set_brand('audi')
print(v.out())
if __name__ == '__main__':
main()
运行结果1:
核心代码2:
from abc import abstractmethod, ABCMeta
class Vehicle(metaclass=ABCMeta):
@abstractmethod
def drive(self):
pass
class Car(Vehicle):
def drive(self):
print("驾驶员:%s\n汽车型号:%s\n行驶年数:%d" % ('LZG', 'AE86', 3))
class Airplane(Vehicle):
def drive(self):
print("机长:%s\n乘务员数量:%d\n乘客数量:%d" % ('lzg', 15, 66))
def run(vehicle):
print(vehicle.__class__)
vehicle.drive()
def main():
v = [Car(), Airplane()]
m = map(run, v)
list(m)
if __name__ == '__main__':
main()
运行结果2:
实验二 函数式编程实验
一、实验目的了解什么是函数式编程
了解函数式编程的优点
掌握lambda表达式、map()函数、filter()函数、reduce()函数、zip()函数的使用方法;
掌握闭包和递归函数的设计
掌握迭代器和生成器的设计
二、实验内容(包括分析或步骤)
1. 使用lambda表达式定义函数定义函数完成z=x3+y/x3
定义函数完成z=x3+ x2+ x+1
2. 使用map()函数完成函数计算使用map()函数依次计算[2,4,6,8,10]和[1,3,5,7,9]的乘积;(举例:2*1,4*3…..)
编写一个判断字符串是否是回文联的函数,然后使用map()函数依次判断[“abbbabbba” ,“asababaSa”, “asffbaffssa”, “attbabtgba”]是否是回文联;
3. 使用reduce()函数完成函数计算使用reduce()函数计算[2,4,6,8,10]的乘积;
使用reduce()函数计算[2,-4,6,-2,10,-8,4,-2,5]中正数的乘积;
4. 使用filter()函数完成函数计算使用filter()函数将[‘have a apple’,’you are student’,’hello world’]中,包含2个以上a字符的字符串过滤掉。
5. 使用递归函数设计完成计算求第50位斐波纳契数列的值
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,利用递归算法编写程序计算共有多少种不同的走法.
三、实验实现
核心代码:
from abc import abstractmethod, ABCMeta
class Vehicle(metaclass=ABCMeta):
@abstractmethod
def drive(self):
pass
class Car(Vehicle):
def drive(self):
print("驾驶员:%s\n汽车型号:%s\n行驶年数:%d" % ('LZG', 'AE86', 3))
class Airplane(Vehicle):
def drive(self):
print("机长:%s\n乘务员数量:%d\n乘客数量:%d" % ('lzg', 15, 66))
def run(vehicle):
print(vehicle.__class__)
vehicle.drive()
def main():
v = [Car(), Airplane()]
m = map(run, v)
list(m)
if __name__ == '__main__':
main()
运行结果:
推荐一些小白必听课:Python爬虫实战8天速成 验证码识别+数据解析+Scrapy框架+实战案例(2020全套)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com【清华计算机博士】数据结构与算法基础(完整版)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com【2021全新版】python零基础到精通7天速成(小白必看)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com