- 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))
- 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)
- 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))
- 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个计数器的属性, 统计总共实例化了多少个学生
【输入形式】
【输出形式】
【样例输入】
【样例输出】
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()
- 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()
- 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)