PTA8(python)

您所在的位置:网站首页 python编程基础及应用pdf PTA8(python)

PTA8(python)

2023-06-15 22:03| 来源: 网络整理| 查看: 265

python程序设计选做题集 函数题和编程题6-1 用类来计算圆面积 (10 分)6-2 统计商品总价 (20 分)6-3 定义商品类、特殊方法 (30 分)6-4 学生成绩管理 (30 分)6-5 设计一个股票类(高教社,《Python编程基础及应用》习题9-6) (4 分)6-6 学生-人 子类与父类 (30 分)6-7 设计Shape基类及Circle, Rectangle继承类(高教社,《Python编程基础及应用》习题9-7) (5 分)6-8 定义并实现Book类及其__del__函数(高教社,《Python编程基础及应用》习题9-4) (3 分)7-1 猴子选大王 (20 分)7-2 有多少香蕉 (15 分)7-3 约瑟夫问题 (10 分)7-4 jmu-python-生日悖论 (15 分)7-7 jmu-python-凯撒密码加密算法 (10 分)7-12 统计单词数-应用 (15 分)7-13 查单词所在页码 (20 分)

函数题和编程题

代码有的很累赘,我到现在还没弄明白构造函数,get和set怎么用,还有@classmethod 这类的,类方法不能用我就把这个加上,然后能用了……,还有一些题,是我就是想不出来,然后copy了别的博主,还没写转载出处……。

6-1 用类来计算圆面积 (10 分)

请定义一个Circle类,具体要求为:

(1)每个Circle类对象可以存储圆心和半径信息;

(2)具有设置圆心和半径的方法SetCenter和SetRadius;

(3)具有输出圆信息的方法PrintInfo;

(4)具有计算圆面积的方法GetArea。

定义Circle类后,执行下面代码可以输出圆的圆心、半径和面积(见代码中的注释说明)。

函数接口定义: 在这里描述函数接口。例如: 定义Circle 类,类中有两个成员 圆心与半径 SerCenter(x,y) #设置圆心坐标方法 SetRadius® #设置半径方法 PrintInfo()#输入 圆的相关信息 GetArea() # 计算圆面积 其中输入圆的相关信息包括圆心的坐标x,y 及半径,格式样例如 : x=3.00,y=5.00,r=2.00 。x,y 为圆心坐标,r为圆半径。计算圆面积 时PI取值为3.14。

裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如:

/* 你的代码将被嵌在这里 */

if name==‘main’: c=Circle() #创建Circle类对象c x=eval(input()) #输入圆心的x坐标 y=eval(input()) #输入圆心的y坐标 r=eval(input()) #输入半径 c.SetCenter(x,y) #设置圆心 c.SetRadius® #设置半径 c.PrintInfo() #输出圆的圆心和半径信息(均保留2位小数) print(’%.2f’%c.GetArea()) #输出圆的面积(保留2位小数) 输入样例: 在这里给出一组输入。例如:

3 5 2 输出样例: 在这里给出相应的输出。例如:

x=3.00,y=5.00,r=2.00 12.56

import math class Circle: def __init__(self): self.x = None self.y = None self.r = None def SetCenter(self, x, y): self.x = x self.y = y def SetRadius(self, r): self.r = r def GetArea(self): area = 3.14 * (self.r ** 2) return area def PrintInfo(self): print('x={:.2f},y={:.2f},r={:.2f}'.format(self.x, self.y, self.r)) 6-2 统计商品总价 (20 分)

消费者购买超市 n 件商品,输入商品名和价格,输出购买的商品信息,并输出应付的总价。

要求:定义Goods类及其成员变量和方法。

(1)定义Goods类:成员变量有 name, price

(2)定义Goods类的带两个参数的构造方法。

(3)定义Goods类的toString()方法,getPrice()方法。

类定义 : 在这里描述类定义 。例如: class Goods: 定义类中有两个属性 name,price ,定义一个带有两个参数的构造 方法。

再定义toString()方法用来设置输出格式,getPrice()方法用来获得价格。

裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */

good1 = [] n = int(input()) for i in range(n): name,price = input().split() good1.append(Goods(name,eval(price)))

totalprice = 0 for good in good1: totalprice += good.getPrice() print(good.toString())

print(“总价是: {}”.format(totalprice)) 输入样例: 在这里给出一组输入。例如:

5 book 5.5 pencil 1.2 pen 8.0 ruler 2.5 eraser 1.0 输出样例: 在这里给出相应的输出。例如:

book,5.5 pencil,1.2 pen,8.0 ruler,2.5 eraser,1.0 总价是: 18.2

class Goods: def __init__(self, name, price): self.__name = name self.__price = price def get_name(self): return self.__name def set_name(self, name): self.__name = name def get_price(self): return self.__price def set_price(self, price): self.__price = price def getPrice(self): return self.__price def toString(self): return '{},{}'.format(self.__name,self.__price) 6-3 定义商品类、特殊方法 (30 分)

定义一个商品类。创建对象并按指定格式输出它。 商品类要求:

(1)成员变量:商品编号、商品名称、商品单价。

(2)定义构造方法,要求带三个参数,参数值用于给成员变量赋值。

(3)重写__str__()方法,将对象转换为字符串,格式:商品编号,商品名称,商品单价

输入商品的信息,每个属性值之间用1个空格分隔。

输出格式,商品的每个属性值之间用逗号分隔。

函数接口定义: 在这里描述函数接口。例如: class Goods: 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */

id,name,price = input().split() good1 = Goods(id,name,float(price)) print(good1) 输入样例: 在这里给出一组输入。例如:

ryb002 香皂 8.9 输出样例: 在这里给出相应的输出。例如:

ryb002,香皂,8.9

class Goods: def __init__(self, id, name, price): self.__id = id self.__name = name self.__price = price def get_id(self): return self.__id def set_id(self, id): self.__id = id def get_name(self): return self.__name def set_name(self, name): self.__name = name def get_price(self): return self.__price def set_price(self, price): self.__price = price def __str__(self): return '{},{},{}'.format(self.__id,self.__name,self.__price) 6-4 学生成绩管理 (30 分)

定义学生类Student:

(1) 定义构造函数,有学号、姓名、三门课成绩,并在此构造函数中计算三门课的平均分。

(2) 重写方法 _ lt _ (),根据平均成绩排序降序,平均成绩相同,按第一门课成绩降序。

(3) 重写方法_ str _(),设置输出格式,输出数据顺序 : 学号 姓名 第一门课成绩 第二门课成绩 平均成绩,每个数据之间用空格分隔,最后一个数据没有空格。平均成绩保留2位小数。

从键盘输入n 个学生的信息,将这n个学生按平均成绩降序排列,当平均成绩相同时,按第一门课成绩降序。输出排序后的学生信息,每行一个学生信息。

函数接口定义: 在这里描述类的定义。例如: class Student: 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */

n = int(input()) student = [] for i in range(n): ls = input().split() student.append(Student(ls[0],ls[1],eval(ls[2]),eval(ls[3]),eval(ls[4])))

student.sort() for st in student: print(st)

输入样例: 在这里给出一组输入。数据之间用空格分隔。例如:

6 20200101 王刚 72 83 82 20200102 李小明 88 92 78 20200103 王小红 98 72 89 20200104 陈来北 87 95 78 20200105 刘亚 89 91 78 20200106 刘力 90 90 78 输出样例: 在这里给出相应的输出。例如:

20200104 陈来北 87 95 78 86.67 20200103 王小红 98 72 89 86.33 20200106 刘力 90 90 78 86.00 20200105 刘亚 89 91 78 86.00 20200102 李小明 88 92 78 86.00 20200101 王刚 72 83 82 79.00

class Student: def __init__(self,number,name,sc1,sc2,sc3): self.__number = number self.__name = name self.__sc1 = sc1 self.__sc2 = sc2 self.__sc3 = sc3 self.ava = (self.__sc2 + self.__sc1 + self.__sc3) / 3 def get_number(self): return self.__number def set_number(self, number): self.__number = number def get_name(self): return self.__name def set_name(self, name): self.__name = name def get_sc1(self): return self.__sc1 def set_sc1(self, sc1): self.__sc1 = sc1 def get_sc2(self): return self.__sc2 def set_sc2(self, sc2): self.__sc2 = sc2 def get_sc3(self): return self.__sc3 def set_sc3(self, sc3): self.__sc3 = sc3 def __lt__(self, other): if self.ava == other.ava: return self.__sc1 > other.__sc1 return self.ava > other.ava def __str__(self): return '{} {} {} {} {} {:.2f}'.format(self.__number, self.__name, self.__sc1, self.__sc2, self.__sc3, self.ava) 6-5 设计一个股票类(高教社,《Python编程基础及应用》习题9-6) (4 分)

设计一个名为Stock的类来表示一个公司的股票,包括以下内容: 1)股票代码、股票名称、前一天股票价格、当天股票价格4个私有属性; 2)构造方法,需初始化代码、名称、前一天价格和当天价格等属性; 3)返回股票名字的get方法; 4)返回股票代码的get方法; 5)获取和设置股票前一天价格的get和set方法; 6)获取和设置股票当前价格的get和set方法; 7)名为getChangePercent()方法,返回前日收市价至当前价格的变化百分比; 8). 包括文档字符串,其内容为:“Stock Information Class”

说明:各方法的名称及参数要求请参见测试程序。

类接口定义: class Stock … 裁判测试程序样例: sCode = input() #输入代码 sName = input() #输入名称 priceYesterday = float(input()) #输入昨日价格 priceToday = float(input()) #输入今日价格 s = Stock(sCode,sName,priceYesterday,priceToday) print(“代码:”,s.getCode()) print(“名称:”,s.getName()) print(“昨日价格:%.2f\n今天价格:%.2f” % (s.getPriceYesterday(),s.getPriceToday())) s.setPriceYesterday(50.25) print(“修正昨日价格为:%.2f” % 50.25) print(“价格变化百分比:%.2f%%” % (s.getChangePercent()*100)) print(Stock.doc) 输入样例: 601318 中国平安 63.21 64.39 输出样例: 代码: 601318 名称: 中国平安 昨日价格:63.21 今天价格:64.39 修正昨日价格为:50.25 价格变化百分比:28.14% Stock Information Class

class Stock: """Stock Information Class""" #我一开始不知道Stock.__doc__该怎么弄,原来不是方法 def __init__(self, sCode, sName, priceYesterday, priceToday): self.__scode = sCode self.__sname = sName self.__priceyesterday = priceYesterday self.__pricetoday = priceToday def getCode(self): return self.__scode def set_scode(self,scode): self.__scode = scode def getName(self): return self.__sname def set_sname(self, sname): self.__sname = sname def getPriceYesterday(self): return self.__priceyesterday def set_priceyesterday(self, priceyesterday): self.__priceyesterday = priceyesterday def getPriceToday(self): return self.__pricetoday def set_pricetoday(self, pricetoday): self.__pricetoday = pricetoday def setPriceYesterday(self,newy): self.__priceyesterday = newy def getChangePercent(self): return (self.__pricetoday - self.__priceyesterday) / self.__priceyesterday 6-6 学生-人 子类与父类 (30 分)

定义一个人类

(1)定义构造函数:包括属性:姓名、性别、年龄;

(2) 定义方法eating():显示 某某吃饭中;

(3) 定义方法sleeping():显示 某某睡觉中;

(4) 定义方法working():显示 某某工作中。

根据人类,派生一个学生类,增加属性:学校、学号;重写方法working():显示 学校学号为XXXX的某某学习中。

类定义: 在这里描述类的定义。例如: class Person: class Student(Person): 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */

name,sex,age = input().split() person1 = Person(name,sex,int(age)) person1.working() person1.sleeping() person1.eating() name,sex,age,school,id = input().split() st1 = Student(name,sex,int(age),school,id) st1.working() st1.eating() 输入样例: 在这里给出一组输入。例如:

刘大力 男 34 李宏达 男 21 北京农业大学 20181200212 输出样例: 在这里给出相应的输出。例如:

刘大力工作中 刘大力睡觉中 刘大力吃饭中 北京农业大学学号为20181200212的李宏达学习中 李宏达吃饭中

class Person: def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age def eating(self): print('{}吃饭中'.format(self.name)) def sleeping(self): print('{}睡觉中'.format(self.name)) def working(self): print('{}工作中'.format(self.name)) class Student(Person): def __init__(self,name,sex,age,school,number): self.name = name self.sex = sex self.age = age self.school = school self.number = number def working(self): print('{}学号为{}的{}学习中'.format(self.school,self.number,self.name)) 6-7 设计Shape基类及Circle, Rectangle继承类(高教社,《Python编程基础及应用》习题9-7) (5 分)

设计一个基类Shape,包括:

名为sName的属性(图形名称); 构造函数应对sName属性进行初始化。 设计Shape的继承类Rectangle, 包括:

长,宽两个属性; 构造函数调用Shape的构造函数,并初始化长,宽两个属性; getArea()成员函数计算并返回矩形面积。 设计Shape的继承类Circle,包括:

半径属性; 构造函数调用Shape的构造函数,并初始化半径属性; getArea()成员函数计算并返回圆形面积。 注意:请注意阅读测试样例程序以理解题目对类的接口的要求。

类接口定义: class Shape: …

class Rectangle(Shape): …

class Circle(Shape): … 裁判测试程序样例: s1 = Shape(“shape0”) s = input() #矩形名称 w = float(input()) #矩形宽度 h = float(input()) #矩形高度 r1 = Rectangle(s,w,h) s = input() #圆的名称 r = float(input()) #圆的半径 c1 = Circle(s,r)

print(s1.sName) print(“矩形%s面积: %.2f” % (r1.sName,r1.getArea())) print(“圆形%s面积: %.2f” % (c1.sName,c1.getArea())) 输入样例: Jupyter 12.1 9.9 Moon 3.3 输出样例: shape0 矩形Jupyter面积: 119.79 圆形Moon面积: 34.21

import math class Shape: def __init__(self,sName): self.sName = sName self.__width = None self.__height = None self.__r = None class Rectangle(Shape): def __init__(self,sName,width,height): self.sName = sName self.width = width self.height = height def getArea(self): return self.width * self.height class Circle(Shape): def __init__(self,sName,r): self.sName = sName self.r = r def getArea(self): return self.r ** 2 * math.pi 6-8 定义并实现Book类及其__del__函数(高教社,《Python编程基础及应用》习题9-4) (3 分)

图书馆里有很多的书, 请定义一个名为Book的类。该类的属性包括书名(字符串),书号(字符串),单价(浮点数);该类的构造函数接受书名,书号及单价三个参数并参成对象初始化;该类的del()函数则向终端打印如下信息: Book destroyed-书名,书号,单价 注意:单价保留两位小数。

类接口定义: class Book: … 裁判测试程序样例: sName = input() #输入书名 sNo = input() #输入书号 fPrice = float(input()) #输入单价 b = Book(sName,sNo,fPrice) b = None #触发b对象的__del__方法的执行 输入样例: Python编程基础及应用 888-999 43.678 输出样例: Book destroyed-Python编程基础及应用,888-999,43.68

class Book: def __init__(self,sName,sNo,fPrice): self.sName = sName self.sNo = sNo self.fPrice = fPrice def __del__(self): print('Book destroyed-{},{},{:.2f}'.format(self.sName,self.sNo,self.fPrice)) 7-1 猴子选大王 (20 分)

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式: 输入在一行中给一个正整数N(≤1000)。

输出格式: 在一行中输出当选猴王的编号。

输入样例: 11 输出样例: 7

n=int(input()) monkey=[] timer=0 count=0 if(n>0 and n1): timer+=1 count+=1 if(count>len(monkey)): count=1 if(timer==3): timer=0 monkey.pop(count-1) count-=1 print(monkey[0]) 7-2 有多少香蕉 (15 分)

以前有这么一个益智游戏,沙滩上有n个猴子和一堆香蕉,晚上有一只猴子偷偷起来把香蕉分成n份,自己拿走了一份,多出来一根,扔进了海里,然后去睡觉了,后面所有的猴子都进行了同样的操作,分成n份,扔掉一根,拿走一份。问最少需要多少香蕉才能让所有猴子都完成该操作。(最后一只猴子扔掉后可以拿走0个,也算是n份均分)给定一个整数m,表示猴子的个数,题目要求输出最初的香蕉数。题目保证有解。

输入格式: 第一行输入n,后面依次输入n个数m。

输出格式: 所有输出在一行内完成,行末不能有多余空格,最后无回车结尾

输入样例: 第一行的2表示有2个m输入。第二行第三行是输入数据

2 2 3 输出样例: 3 25

#我不确定对不对,pintia这个题有些问题。 # 循环次数 n = int(input()) result = [] for i in range(n): # 猴子数量 m = int(input()) # 第几个猴子分配完毕后,每个猴子分到的香蕉数量 level, current = m, 0 while True: # 还原到上一个猴子分配完毕的情况 # 此时current是分配后剩下的香蕉数量 level, current = level - 1, m * current + 1 if level == 0: result.append(current) break elif current % (m - 1) == 0: # 剩下的香蕉应能够均分给(m-1)个猴子 # 此时current是每个猴子分到的数量 current //= (m - 1) else: # 剩下的香蕉数量无法被均分给(m-1)个猴子 # 证明还原前每一个猴子拥有的香蕉数量不正确 # 需要回退到初始状态 while level } num = int(input()) alist = [] for i in range(0,num): ke = str(input()) val = int(input()) adic[ke] = val cha = int(input()) for j in range(0,cha): ey = str(input()) alist.append(ey) for element in alist: if element in adic.keys(): print(adic[element])


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3