Python第二次考核

1.
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。(10分)你可以假设除了整数 0 之外,这个整数不会以零开头。(10分)示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。示例 2: 输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。示例 3 输入:digits = [0] 输出:[1] 解释:输入的数组表示数字0.

def OnePlus(digits):
    s = ''
    for i in digits:
        s+=str(i)
    i = int(s)+1
    s2 = str(i)
    l = []
    for j in s2:
        l.append(int(j))
    return l
print(OnePlus(digits))

2.矩阵a用数组表示为 int a[ ][ ]={{1,2,3,4},{2,3,4,5},{3,4,5,6}},并编写transpose()方法实现矩阵的转置

a = [[1,2,3,4],[2,3,4,5],[3,4,5,6]]
print("转置前")
for i in a:
    for j in i:
        print(j,end=' ')
    print()
a_copy = [[],[],[],[]]
def transpose(a):
    for i in range(len(a[0])):
        for j in range(len(a)):
            a_copy[i].append(a[j][i])
    return a_copy
l = transpose(a)
print('转置后')
for i in l:
    for j in i:
        print(j,end=' ')
    print()

3.题目描述(15分)n(n≤100) 名同学参加歌唱比赛,并接受m(m≤20) 名评委的评分,评分范围是 0 到 10 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下m−2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 2 位小数。输入格式第一行两个整数 n,m。 接下来 n 行,每行各 m 个整数,表示得分。输出格式输出分数最高的同学的分数,保留两位小数。

ns = input().split()
n = int(ns[0])
m = int(ns[1])
scores =[]
for i in range(n):
    list1 = input().split()
    list2 = [int(i) for i in list1]
    list2.remove(max(list2))
    list2.remove(min(list2))
    scores.append(sum(list2)/(m-2))
print(format(max(scores),'.2f'))

4.面向对象程序设计基础(40分)要求:(1)按照题目所给变量名称、类型和方法名称进行编程,禁止修改(2)所有成员变量是私有的,所有成员方法是公有的1、图书类(Book)成员变量:图书名称(name)str类型出版社(publisher)str类型构造方法:通过形参初始化图书名称(name)和出版社(publisher)普通方法:(1)设置getter和setter方法用于获取和设置类中的name变量的值;(2)equals方法,当且仅当书名(name)和出版社(publisher)均相等时,即为同一本书。(3)toString方法,返回书名(name)和出版社(publisher)的信息,样式如下:“书名:Java程序设计,出版社:清华大学出版社”2、馆藏图书类(CollectionBook),继承自Book类 成员变量:图书编号(bNo)str类型所在书库(stacks)str类型是否借阅(isBorrow)boolean类型 图书状态为已借阅时,值为true构造方法:调用父类构造方法初始化书名(name)和出版社(publisher)信息,然后初始化图书编号(bNo)和线路图书书库(stacks)普通方法:输入0表示借阅操作,输入1表示归还操作(1)实现borrow方法 借阅图书 如果图书状态为已借阅,则输出“对不起,该图书已借阅”,否则,修改该图书状态为已借阅,输出“借阅成功”(2)实现revert方法 归还图书如果图书状态是可借阅状态,输出“该图书已归还”, 否则,修改图书借阅状态为未借阅,并输出“还书成功”3、通过main函数测试(1)创建两个CollectionBook对象book1和book2,分别输出book1和book2,并调用其equals方法判断两个对象是否相等(2)通过键盘输入整数,输入0,则对book1进行借阅,输入1,则对book1进行归还操作

class Book:
    def __init__(self, name, publisher):
        '''
            构造方法
        :param name: 书名
        :param publisher: 出版社
        '''
        self.__name = name
        self.__publisher = publisher

    def getter(self):
        '''
            获得书名
        :return: 返回书名
        '''
        return self.__name

    def setter(self, name):
        '''
            更改书名
        :param name: 书名
        :return: None
        '''
        self.__name = name

    def equals(self, other):
        '''
            判断两者是否相等
        :param other: 另一个对象
        :return: 返回Boolean值,
        '''
        # 只有当and 两端的都为True的时候 返回True
        return self.__name == other.__name and self.__publisher == other.__publisher

    def toString(self):
        '''
            将书的基本信息整合成字符串
        :return:
        '''
        return f'书名:{self.__name},出版社:{self.__publisher}'


class CollectionBook(Book):
    def __init__(self, name, publisher, bNo, stacks, isBorrow):
        '''

        :param name: 书名
        :param publisher: 出版社
        :param bNo: 编号
        :param stacks: 类别
        :param isBorrow: 借阅状态
        '''
        super().__init__(name, publisher)
        self.__bNo = bNo
        self.__stacks = stacks
        self.__isBorrow = isBorrow

    def borrow(self):
        # 根据借阅状判断进行不同的操作
        if self.__isBorrow:
            print("对不起,该图书已借阅")
        else:
            print('借阅成功')
            self.__isBorrow = True

    def revert(self):
        # 根据借阅状判断进行不同的操作
        if self.__isBorrow:
            print("还书成功")
            self.__isBorrow = False
        else:
            print('该图书已归还')


if __name__ == '__main__':
    book1 = CollectionBook(name="国超自传", publisher="清华出版社", bNo='1000', stacks='名人自传', isBorrow=False)
    book2 = CollectionBook(name="国超自传", publisher="清华出版社", bNo='1000', stacks='名人自传', isBorrow=False)
    print(book1.toString())
    print(book1.toString())
    print(book1.equals(book2))
    # 输入0表示借阅,输入1表示还书
    n = input()
    if n == '0':
        book2.borrow()
    elif n == '1':
        book2.revert()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值