Python--实验2

  1. 1. 公式计算

【问题描述】编写三个函数fz(n), fm(n), sum_(n)分别计算下列公式的分子和,分母积以及公式总和值,输出结果保留4位小数。

【输入形式】

【输出形式】

 2
【样例输入】

2.5000
【样例输出】
【样例说明】
【评分标准】

def fz(n):
    result = 0.0
    for i in range(n):
        result = result + i+1
    return result

def fm(n):
    t = 1.0
    for i in range(n):
        t = t*(i+1)
    return t

def sum_(n)->str:
    sum = 0.0
    for i in range(n):
        sum = sum + fz(i+1)/fm(i+1)
    return sum

n = int(input())
print("%.4f"%sum_(n))
  1. 2. 阶乘计算

【问题描述】

编写一个函数fac(n )求给定整数的阶乘,调用此函数实现以下公式,结果保留一位小数。

【输入形式】

【输出形式】
【样例输入】

3

2

【样例输出】

result:3.0

【样例说明】
【评分标准】

def fac(n):
    t = 1.0
    for i in range(n):
        t = t*(i+1)
    return t

n = int(input())
m = int(input())
result = fac(n)/(fac(m)*fac(n-m))
print("result:%.1f"%result)
  1. 3. 回文数

【问题描述】

编写一个函数isHui(n),用以实现对正整数n判断是否是回文数。

提示:回文数定义:是指顺读与倒读数字相同的正整数。如12321。

【输入形式】
【输出形式】
【样例输入】

1234321
【样例输出】

True
【样例说明】
【评分标准】

def isHui(n):
    if(n == n[::-1]):
        return True
    else:
        return False
n = int(input())
print(isHui(n))
  1. 4. 最长单词

【问题描述】

编写一个函数maxWord(s),用以找出已知字符串s中的最长单词。

【输入形式】
【输出形式】
【样例输入】

I am a student and my name is Mary!

【样例输出】

student

【样例说明】
【评分标准】

def maxWord(s):
    maxword = ''
    tempword = ''
    i = s.find(' ')
    s = s + ' '
    while i>0:
        tempword = s[:i]
        if len(maxword)<len(tempword):
            maxword = tempword
        s = s[i+1:]
        i = s.find(' ')
    return maxword
s = input()
print(maxWord(s))

  1. 1. 学生类

【问题描述】

编写程序, 编写1个学生类, 要求有1个计数器的属性, 统计总共实例化了多少个学生

【输入形式】
【输出形式】
【样例输入】
【样例输出】

The total of students is 4

【样例说明】
【评分标准】

测试数据

stu1  =  Student("jack",  33)
stu2  =  Student("amy",  24)
stu3  =  Student("lucy",  22)
stu4  =  Student("lulu",  45)
print("The  total  of  students  is  %d"  %  Student.count)

class Student:
    count = 0
    def __init__(self,name,age):
        self.name = name
        self.age = age
        Student.count += 1

【问题描述】

定义一个 person基类,包含公有属性:姓名name、年龄age,具有speak()公有方法;从person类中派生出一个teacher子类,该类新增私有属性:专业profession、职称title、主讲课程course,并定义重写基类speak( )方法。

【输入形式】
【输出形式】
【样例输入】
【样例输出】

My name is James, I am 30 years old.

xid: 2018020, title: Professor

My major: AI. My course:Python

thank you!


【样例说明】
【评分标准】

测试数据

t=teacher('2018020','James',30,'M','Professor','Python',"AI")
t.speak()

class person:
    def __init__(self,xid,name,age):
        self.xid = xid
        self.name = name
        self.age = age
    def speak(self):
        print("My name is %s,I am %d years old.xid:%s"%(self.name,self.age,self.xid))
class teacher(person):
    def __init__(self,xid,name,age,sex,profession,title,course):
        person.__init__(self,xid,name,age)
        self.sex = sex
        self.profession = profession
        self.title = title
        self.course = course
    def speak(self):
        print("My name is %s,I am %d years old."%(self.name,self.age))
        print("xid: %s, title: %s"%(self.xid,self.profession))
        print("My major: %s. My course:%s"%(self.course,self.title))
        print("thank you!")
t = teacher('2018020','James', 30,'M' ,'Professor', 'Python', "AI")
t.speak()
  1. 3. 多重继承

【问题描述】

定义一个student基类,包含公有属性:学号sid、班级class_,具有study()公有方法;再定义一个teacher基类,包含公有属性:工号tid、学院dept,具有teach()公有方法;然后从student和teacher两个基类公共派生出一个doctor子类,该类新增公有属性:姓名name、年龄age,具有introduce()公有方法,不需要重写两个基类方法

【输入形式】
【输出形式】
【样例输入】


【样例输出】

My name is hzau, I am 34 years old.

My student's id is 2021038,

I major in Agricultural machinery engineering.

And my teacher's id is 2021020,

I am in college of imformatics.


【样例说明】
【评分标准】

测试数据d1=doctor('2021038','Agricultural  machinery  engineering','2021020','college  of  imformatics','hzau',34)
d1.introduce()
d1.study()
d1.teach()

class student:
    def __init__(self,sid,class_):
        self.sid = sid
        self.class_ = class_
    def study(self):
        print("My student's id is %s,"%(self.sid))
        print("I major in %s."%(self.class_))
class teacher:
    def __init__(self,tid,dept):
        self.tid = tid
        self.dept = dept
    def teach(self):
        print("And my teacher's id is %s,"%(self.tid))
        print("I am in %s."%(self.dept))
class doctor(student,teacher):
    def __init__(self,sid,class_,tid,dept,name,age):
        student.__init__(self,sid,class_)
        teacher.__init__(self,tid,dept)
        self.name = name
        self.age = age
    def introduce(self):
        print("My name is %s, I am %d years old."%(self.name,self.age))
d1=doctor('2021038','Agricultural  machinery  engineering','2021020','college  of  imformatics','hzau',34)
d1.introduce()
d1.study()
d1.teach()
  1. 4. 类的运算符重载

【问题描述】

题目描述:定义一个三维向量类Vector3,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现,其中向量长度是向量所有分量平方和的平方根)。

提示:通过类的专有方法__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)实例测试:


【输入形式】
【输出形式】
【样例输入】

【样例输出】

Vector3(8,10,12)

Vector3(-2,-2,-2)

Vector3(9,12,15)

Vector3(2.5,3.0,3.5)

7.0710678118654755

【样例说明】
【评分标准】

测试数据

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)

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 = self.x * n
        y = self.y * n
        z = self.z * n
        return Vector3(x,y,z)
    def __truediv__(self, n):
        x = self.x / n
        y = self.y / n
        z = 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)

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。 2、 编程实现如下功能: (1)定义一个抽象类Shape,在抽象类 Shape中定义求面积 getArea()和周长 getPerimeter()的抽象方法。 (2)分别定义继承抽象类Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。 (3)创建类Triangle、 Rectangle、 Circle的对象,对3个类中的方法进行调用测试。 3、使用第六章(王雷春版)介绍的知识设计一个“书籍出租管理系统”,该系统包括以下功能。 (1) 菜单项“1”:显示书籍(包括书籍名称、价格和借出状态)。 (2) 菜单项“2”:增加书籍(包括书籍名称和价格)。 (3) 菜单项“3”:借出书籍(包括借出书籍名称和借出天数)。 (4) 菜单项“4”:归还书籍(包括归还书籍名称和应付的租书费)。 (5) 菜单项“5”:统计书籍(包括借出书籍册数、未借出书籍册数和总册数)。 (6) 菜单项“-1”:退出系统。 体会利用面向对象编程的思想。 4、设计一个“超市进销存管理系统”,要求如下: (1)系统包括7种操作,分别是:1查询所有商品;2添加商品;3修改商品;4.删除商品;5卖出端口;6.汇总;-1.退出系统。 (2)选择操作序号“1”,显示所有商品 (3)选择操作序号“2”,添加新的商品(包括商品名称、数量和进货价格)。 (4)选择操作序号“3”,修改商品 (5)选择操作序号“4”,删除商品 (6)选择操作序号“5”,卖出商品(包括商品名称、数量和售出价格)。 (7)选择操作序号“6”,汇总当天卖出商品,包括每种销售商品名称、数量、进货总价、销售总价等。 (8)选择操作序号“-1”,退出系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值