搜索内容

有一个问题?

如果您有任何疑问,可以在下面询问或输入您要寻找的!

Python语言程序设计实验(2)—— Python函数与类

生成海报
小天才才
小天才才 2021-02-01 21:41
阅读需:0

试验1:计算公式

题型叙述:

撰写三个涵数fz(n), fm(n), sum_(n)各自测算下述公式计算的分子结构和,分母积及其公式计算总数值。

在这里插入图片描述

提醒:选用涵数嵌入完成

def fz(n): #测算分子结构一部分
    s=0.0
    for i in range(n):
        s+=i+1
    return s

def fm(n): #测算分母一部分
    s=1.0
    for i in range(n):
        s *=i+1
    return s

def sum_(n): #计算方法的值
    s=0.0    
    for i in range(n):
       s+=fz(i+1)/fm(i+1)
    return s
n=int(input("键入要测算的项数:"))
print(sum_(n))

试验2:阶乘测算

题型叙述:

撰写一个涵数fac(n )求给出整数金额的阶乘,启用此涵数完成下列公式计算。

在这里插入图片描述

提醒:选用递归完成

def fac(n):
    if n==1:
        return 1;
    else:
        return fac(n-1)*n

def fac1(n):
    s=1.0
    for i in range(n):
        s*=i+1
    return s
n=int(input("键入要组合计算的下数:"))
m=int(input("键入要组合计算的上数:"))
print("递归方法一的結果:" + str(fac(n)/(fac(m)*fac(n-m))))
print("一般方式 二的結果:" + str(fac1(n)/(fac1(m)*fac1(n-m))))

试验3:回文数分辨

题型叙述:

撰写一个涵数isHui(n),用于完成对正整数n分辨是不是回文数。

提醒:回文数界定:就是指顺读与倒读数据同样的正整数。如12321。表明以下:

(1)求字符串长度涵数len(s)

(2)所在位置为i,则其对称性部位为j=len(s)-1-i

(3)切成片方式 取下标识符分辨是不是相对性:s[i:i+1]==s[j:j+1]

def isHui(s):
    f=True
    n=len(s)
    for i in range(n):
        j=n-1-i                #j为i的对称性部位
        if s[i:i+1]!=s[j:j+1]: #所在位置i与对称性部位j
            f=False
            break
    return f
n=input("键入要组合计算的下数:")
if isHui(n):
    print(n + "是回文数!")
else:
    print(n + "并不是回文数!")

试验4:找最长单词

题型叙述:

撰写一个涵数maxWord(s),用于找到已经知道字符串数组s中的最长单词。

提醒:键入“I am a student and my name is wpf!”,輸出“student”。有关表明以下:

(1)搜索空格符涵数i=s.find(’ '),根据while i>0循环系统搜索

(2)取下当今英语单词:tempword=s[ :i]

(3)去除英语单词,再次取值语句:s=s[i+1:]

def maxWord(s):
    maxword=''
    tempword=''
    n=len(s)
    i=s.find(' ') #搜索空格符涵数
    s=s+' '
    while i>0:
        tempword=s[:i]  #取下当今切分英语单词
        if len(maxword)

试验5:类的界定

题型叙述:

界定一个dog类,包括name、age、weight等特性,设计方案一个构造方法对这种特性进行复位,随后完成并检测这一类。

class dog:
    name=''
    age=0
    weight=0

    def __init__(self,n,a,w):
        self.name=n
        self.age=0
        self.weight=0

    def run():
        print("go fast!")
    def bark():
        print("woof...!")

    def eat():
        print("yummy...!")

#实例检测
d1=dog("Tom",2,28)
dog.bark()
dog.run()
dog.eat()

试验6:类的单承继

题型叙述:

界定一个 person基类,包括公有制特性:名字name、年纪age,具备speak()公有制方式 ;从person类中派长出一个teacher子类,此类增加独享特性:技术专业profession、技术职称title、讲学课程内容course,并界定重写基类speak( )方式 。

提醒:案例检测

在这里插入图片描述

結果輸出:

在这里插入图片描述

class person: #基类界定
    name='' #名字
    age=0   #年纪    
    def __init__(self,n,a):#界定构造方法
        self.name=n
        self.age=a 
    def speak(self):#界定类自身的方式 
        print("my name is %s,I am %d years old."%(self.name,self.age))        

class teacher(person): #派生类界定
    __profession='' #技术专业
    __title=''      #技术职称
    __course=''     #讲学课程内容
    def __init__(self,n,a,p,t,c): #界定子类的构造方法       
        person.__init__(self,n,a) #启用父类的构造方法
        self.__profession=p
        self.__title=t
        self.__course=c
    def speak(self): #重写父类的方式 
        print("my name is %s, I am %d years old,\nAnd my profession is %s,\nmy title is %s,\nmy master course is %s.\nthank you!"%(self.name,self.age,self.__profession,self.__title,self.__course))        

#案例检测
s=teacher('wpf',42,'computer science and technology','associate professor','Python programming desiging')
s.speak()

试验7:类的多继承

题型叙述:

界定一个student基类,包括公有制特性:学籍号sid、班集体class_,具备study()公有制方式 ;再界定一个teacher基类,包括公有制特性:身份证号tid、学校dept,具备teach()公有制方式 ;随后从student和teacher2个基类公共性派长出一个doctor子类,此类增加公有制特性:名字name、年纪age,具备introduce()公有制方式 ,不用重写2个基类方式 。

提醒:案例检测

在这里插入图片描述

結果輸出:

在这里插入图片描述

class student: #基类1界定    
    sid=''     #学籍号
    class_=''  #班集体
    def __init__(self,s,c):
        self.sid=s
        self.class_=c            
    def study(self):
        print("My student's id is %s,\nI major in %s."%(self.sid,self.class_))        

class teacher: #基类2界定    
    tid=''     #身份证号
    dept=''    #系院
    def __init__(self,t,d):
        self.tid=t
        self.dept=d            
    def teach(self):
        print("And my teacher's id is %s,\nI am in %s."%(self.tid,self.dept))        


class doctor(student,teacher): #派生类3多种承继
    name=''
    age=0
    def __init__(self,s,c,t,d,n,a):        
        student.__init__(self,s,c) #基类1构造方法
        teacher.__init__(self,t,d) #基类2构造方法
        self.name=n
        self.age=a
    def introduce(self):
        print("My name is %s, I am %d years old."%(self.name,self.age))        

#案例检测
d1=doctor('2011038','Agricultural machinery engineering','2001020','college of imformatics','wpf',34)
d1.introduce()
d1.study()
d1.teach()

试验8:类的运算符重载

题型叙述:

界定一个三维空间向量类Vector3,并界定相对的独特方式 完成2个此类目标中间的加、减计算(规定适用运算符+、-),完成此类目标与标量的乘、除计算(规定适用运算符*、/),及其空间向量长短的测算(规定应用特性完成,在其中空间向量长短是空间向量全部份量平方和的平方根)。

提醒

根据类的特有方式 __add__()、sub()、mul()、__truediv()各自完成+、-、*、/运算符重载;根据类的特有方式 __str()查询空间向量,恢复出厂设置表明向量坐标份量;根据自定方式 length(self)测算空间向量长短,并@property方式 将空间向量长短设定为特性值。具体方法以下:

(1)界定空间向量构造方法:init(self, x, y, z),完成空间向量复位Vector3(x, y, z)

(2)界定空间向量与另一个向量的加法+计算:add(self, anotherPoint)

(3)界定空间向量与另一个向量的加法-计算:sub(self, anotherPoint)

(4)界定空间向量与某一个标量的加法*计算:mul(self, n)

(5)界定空间向量与某一个标量的除法/计算:truediv(self, n),留意:这里并不是__div__

(6)界定空间向量查询方式 :str(self),恢复出厂设置表明向量坐标份量

(7)界定空间向量长短计算方式:length(self),完成空间向量全部份量平方和的平方根。

(8)案例检测:

在这里插入图片描述

結果輸出:

在这里插入图片描述

class Vector3:
    #构造方法,复位,界定向量坐标
    def __init__(self,x,y,z):
        self.__x=x
        self.__y=y
        self.__z=z
    #再加上一个空间向量,相匹配份量求和,回到新空间向量
    def __add__(self,anotherPoint):
        x=self.__x + anotherPoint.__x
        y=self.__y + anotherPoint.__y
        z=self.__z + anotherPoint.__z
        return Vector3(x,y,z)
    #减掉一个空间向量,相匹配份量做差,回到新空间向量
    def __sub__(self,anotherPoint):
        x=self.__x - anotherPoint.__x
        y=self.__y - anotherPoint.__y
        z=self.__z - anotherPoint.__z
        return Vector3(x,y,z)

    #空间向量与一个数据乘积,各份量乘于同一个数据,回到新空间向量
    def __mul__(self,n):
        x,y,z=self.__x*n, self.__y*n, self.__z*n
        return Vector3(x,y,z)

    #空间向量与一个数据相除,各份量除于同一个数据,回到新空间向量
    def __truediv__(self,n):
        x,y,z=self.__x/n, self.__y/n, self.__z/n
        return Vector3(x,y,z)

    #查询空间向量,恢复出厂设置表明向量坐标份量
    def __str__(self):
        return "Vector3({},{},{})".format(self.__x,self.__y,self.__z)

    #测算空间向量长短设定为特性,空间向量长短即全部份量平方和的平方根
    @property
    def length(self):
        return (self.__x**2 + self.__y**2 + self.__z**2)**0.5
#案例检测
v1=Vector3(3,4,5)
v2=Vector3(5,6,7)
print(v1+v2)
print(v1-v2)
print(v1*3)
print(v2/2)
print(v1.length)
评论
  • 消灭零回复