Python面向对象的程序设计详情

 更新时间:2022年01月20日 08:48:51   作者:战士小小白    
这篇文章主要介绍了Python面向对象的程序设计详情,面向对象的程序设计在Python中具有非常重要的地位,熟练的使用面向对象编程能够为我们的Python编程提供很多的便利之处,希望您阅读完本文后能够有所收获

1. 设计一个圆类,包括圆心位置、半径、颜色等属性。编写构造方法, 计算周长和面积。

import math
class Circle:
    def __init__(self,o,r,colour):
        self.o = o
        self.r = r
        self.colour = colour
    def length(self): #周长
        C = math.pi*self.r*2
        return C
    def area(self):   #面积
        S = math.pi*self.r**2
        return S
 
if __name__ == "__main__":
    r=eval(input("请输入半径:"))
    circle = Circle((0,0),r,'blue') #坐标、半径、颜色
    C = circle.length()
    S = circle.area()
    print('圆周长为:{:.2f}'.format(C))
    print('圆面积为:{:.2f}'.format(S))

 2. 设计一个描述自由落体运动的类,要求能获得任意时刻的速度及位移,并进行测试。已知重力加速度为 9.8m/s。

class Free:
    def __init__(self,t): 
        self.t = t
    def getv(self): #速度函数
        v=9.8*self.t
        return v
    def getx(self): #位移函数
        x=0.5*9.8*self.t**2
        return x
    
if __name__ == "__main__":
    t=eval(input("请输入时刻t:"))
    f=Free(t) #调用
    print("t={} 时刻的".format(t),end='')
    print("速度为:{:.2f}".format(f.getv()))
    print("t={} 时刻的".format(t),end='')
    print("位移为:{:.2f}".format(f.getx()))

3. 为二次方程式 ax²+bx+c=0 设计一个名为 Equation 的类,这个类包括:

  • 代表 3 个系数的成员变量 a、b、c;
  • 一个参数为 a、b、c 的构造方法;
  • 一个名为 getDiscriminant1 的方法返回判别式的值;
  • 一个名为 getRoot1 getRoot2 的方法返回等式的两个根, 如果判别式为负,这些方法返回0。
import math
class Equation:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
    def getDiscriminant1(self):  #判别式
        d=(self.b)**2 -(4*self.a*self.c)
        return d
    def getRoot1(self):
        if self.getDiscriminant1()>=0:
            x1=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x1
        else:
            return 0
    def getRoot2(self):
        if self.getDiscriminant1()>=0:
            x2=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x2
        else:
            return 0
    
if __name__ == "__main__":
    a=eval(input("请输入系数a:"))
    b=eval(input("请输入系数b:"))
    c=eval(input("请输入系数c:"))
    f=Equation(a,b,c)
    print("判别式:",f.getDiscriminant1())
    print("根1:",f.getRoot1())
    print("根2:",f.getRoot2())

4. 设计一个二维向量类,实现向量的加法、减法及向量与标量的乘法和除法运算,其中要求输入是元组。

class Vector: 
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def jia(self):
        c1 = (self.a[0] + self.b[0])
        c2 = (self.a[1] + self.b[1])
        return (c1,c2)
    def jian(self):
        c1 = (self.a[0] - self.b[0])
        c2 = (self.a[1] - self.b[1])
        return (c1,c2)
    def diancheng(self):
        c1 = (self.a[0] * self.b[0])
        c2 = (self.a[1] * self.b[1])
        return c1+c2
    #向量无除法
    
if __name__ == "__main__":
    a=eval(input("请输入向量a:"))
    b=eval(input("请输入向量b:"))
    f=Vector(a,b)
    print("  加:",f.jia())
    print("  减:",f.jian())
    print("点乘:",f.diancheng())

 5. 设计一个课程类,包括课程编号、课程名称、任课教师、上课地点 等属性,把上课地点变量设为私有的,增加构造方法和显示课程信息的方法。

class Course: 
    def __init__(self,Cno,Cname,teacher,local):
        self.Cno = Cno
        self.Cname = Cname
        self.teacher = teacher
        self.__local =local #把上课地点变量设为私有的
    def information(self):
        print("课程编号:",self.Cno)
        print("课程名称:",self.Cname)
        print("任课教师:",self.teacher)
        print("上课地点:",self.__local)
 
if __name__ == "__main__":
    f=Course('NO.','what','who','where')
    f.information()

6. 设计一个整形数组的封装类,要求实现下列功能:

  • 显示全部数组数据
  • 显示从某位置开始的一段连续数组数据。
import random
class List:
    def __init__(self,lis):
        self.__lis=lis
    def quanbu(self):     #全部数组数据
        return self.__lis
    def bufen(self,id):   #从部分位置开始的一段连续数组数据
        return self.__lis[id:]
 
f=List([random.randint(1,51) for i in range(20)])  #设置数组为20个1-50的随机数组合
print("显示全部数组数据:",f.quanbu())  
random_index = random.randint(0,21)  #随机选取从某一位置开始的索引号
print("显示从<第{}>位置开始的一段连续数组数据:".format(random_index),f.bufen(random_index))

到此这篇关于Python面向对象的程序设计详情的文章就介绍到这了,更多相关Python面向对象的程序设计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的iOS自动化打包实例代码

    Python的iOS自动化打包实例代码

    这篇文章主要给大家介绍了关于Python的iOS自动化打包的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Win10下安装CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0

    Win10下安装CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+p

    这篇文章主要介绍了Win10下安装CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 如何使用 Pylint 来规范 Python 代码风格(来自IBM)

    如何使用 Pylint 来规范 Python 代码风格(来自IBM)

    本文通过详细的理论介绍和简单易懂的实例全面介绍了 Python 代码分析工具 Pylint。相信读者看完后一定可以轻松地将 Pylint 运用到自己的开发工程中
    2018-04-04
  • Python实现冒泡排序算法的示例解析

    Python实现冒泡排序算法的示例解析

    冒泡排序(Bubble Sort)是一种简单的排序算法。本文将详细为大家讲讲Python实现冒泡排序算法的方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-06-06
  • 详解Python 数据库的Connection、Cursor两大对象

    详解Python 数据库的Connection、Cursor两大对象

    这篇文章主要介绍了Python 数据库的Connection、Cursor两大对象,文中通过python 数据库图解给大家介绍的非常详细,需要的朋友参考下吧
    2018-06-06
  • python网络编程实例简析

    python网络编程实例简析

    这篇文章主要介绍了python网络编程,有不错的借鉴价值,需要的朋友可以参考下
    2014-09-09
  • ubuntu迁移anaconda到另外的目录(完美解决)

    ubuntu迁移anaconda到另外的目录(完美解决)

    本文主要介绍了ubuntu迁移anaconda到另外的目录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python统计字符内容的占比的实现

    Python统计字符内容的占比的实现

    本文介绍了如何使用Python统计字符占比,包括字符串中字母、数字、空格等字符的占比,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • python 绘图模块matplotlib的使用简介

    python 绘图模块matplotlib的使用简介

    这篇文章主要介绍了python 绘图模块matplotlib的使用简介,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • pytorch神经网络之卷积层与全连接层参数的设置方法

    pytorch神经网络之卷积层与全连接层参数的设置方法

    今天小编就为大家分享一篇pytorch神经网络之卷积层与全连接层参数的设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论