Python 中国慕课第六章测试 OpenJudge作业(包含通过码)

描述

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入

第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。

输出

把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

通过码:22dfe349d41fba121c8da151525cd8a13381dc3778b94197ec272e20eaeeaa9a 

n = int(input())
a = []
for i in range(n):
    s = input().split()
    a.append((s[0],int(s[1])))
a.sort(key = lambda x:(-x[1],x[0]))
for x in a:
    print(x[0],x[1])

 041:图像模糊处理

描述

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

1. 四周最外侧的像素点灰度值不变;

2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入

第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出

n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

通过码: bfbd138e051e3b1ce1ec5ec13d32c4be32f650c275d460423d18f0a5c5cc0e2d

import copy
s = input().split()
n = int(s[0])
m = int(s[1])
a = []
for i in range(n):
    lst = list(map(int,input().split())) # 整数列表,对应矩阵的一行
    a.append(lst) # a被加了一行。循环之后,a被加了n行,成了二维列表
    b = copy.deepcopy(a)
for i in range(1,n-1):
    for j in range(1,m-1):
        b[i][j] = round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5)
for i in range(0,n):
    for j in range(0,m):
        print(b[i][j],end=' ')
    print(' ')

 042:向量点积计算

描述

在线性代数、计算几何中,向量点积是一种十分重要的运算。

给定两个n维向量a=(a1,a2,...,an)和b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn。

输入

第一行是一个整数n。1 <= n <= 1000。
第二行包含n个整数a1,a2,...,an。
第三行包含n个整数b1,b2,...,bn。
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。

输出

一个整数,即两个向量的点积结果。

通过码: f59b00cd6c33840986b8f0746887d640849168b932b544f1e9d3ec58640f10ae

n = int(input())
s = list(map(int,input().split()))
t = list(map(int,input().split()))
a = []
total = 0
for i in range(n):
    a.append(s[i] * t[i])
    total += a[i]
print(total)

 043:病人排队

描述

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
1. 老年人(年龄 >= 60岁)比非老年人优先看病。
2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3. 非老年人按登记的先后顺序看病。

输入

第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。

输出

按排好的看病顺序输出病人的ID,每行一个。

通过码: be4134f0547d3e0f896e06e054b5db4f5cdc3357db550107a1c6bdff33ebf57d

n = int(input())
a = []
for i in range(n):
    s = input().split()
    a.append(s + [i])
def f(x):
    if int(x[1]) >= 60:
        return (-int(x[1]),int(x[2]))
    else:
        return (0,x[2])
a.sort(key = f)
for j in range(n):
    print(a[j][0])

 044:矩阵乘法

描述

计算两个矩阵的乘法。n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。

输入

第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100
然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。

输出

输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开

通过码: eb4e7a10d6f9ed0073f356ec8cba31e91df41f8c38b61fa23f316bff813f466f

n, m, k = map(int, input().split())
A = []
B = []
for i in range(n):
    A.append(list(map(int, input().split())))
for i in range(m):
    B.append(list(map(int, input().split())))
C = [[0 for i in range(k)] for i in range(n)]
for i in range(n):
    for j in range(k):
        for q in range(m):
            C[i][j] += A[i][q]*B[q][j]
        print(C[i][j], end=' ')
    print('\r')

 045:回文子串

描述

给定一个字符串,输出所有长度至少为2的回文子串。

回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。

输入

一个字符串,由字母或数字组成。长度500以内。

输出

输出所有的回文子串,每个子串一行。
子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。

通过码: a5d1634d14c5c3d32d76afb865987140905f860e0533bbe9854ff264b46a28fe

s = input()
for i in range(2,len(s)+1):
    for j in range(0,len(s)+1-i):
        t = s[j:j+i]
        if t == t[::-1]:
            print(t)

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值