浙大版《Python 程序设计》题目集第4章-22——第4章-26

第4章-22 找鞍点

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:
输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:
输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

答案样例:

a = int(input())
list1 = []
for i in range(a):
    list1.append(list(map(int,input().split())))
list2 = []
for i in range(a):# 这是把上面的列变成行
    list2.append([x[i] for x in list1])
for m in range(a):
    for n in range(a):
        if list1[m][n] == max(list1[m]) and list1[m][n] == min(list2[n]):
            print(f'{m} {n}')
            exit()# 有就打印然后直接退出,因为题目保证只有一个鞍点所以就直接退出就好
print('NONE')

第4章-23 求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:

4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

输出样例1:

9 2 3
5 3 2
5 3 4

输入样例2:

3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1

输出样例2:

None 3 5

答案样例:

a,b = input().split()
a,b = int(a),int(b)
l = []
for i in range(a):
    l.append(list(map(int,input().split())))
flag = True
for i in range(1,a-1):# 矩阵四周的就不用遍历了,不符合要求
    for j in range(1,b-1):
        if l[i][j]>l[i-1][j] and l[i][j]>l[i+1][j] and l[i][j]>l[i][j-1] and l[i][j]>l[i][j+1]:
            print('{} {} {}'.format(l[i][j],i+1,j+1))
            flag = False
if flag:
    print(f'None {a} {b}')

第4章-24 打印九九口诀表

下面是一个完整的下三角九九口诀表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81 

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

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

输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4

输出样例:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  

答案样例:

def mul_table(n):
    for i in range(1,n+1):
        for j in range(1,i+1):
            print('%d*%d=%-4d'%(j,i,j*i),end='')
#             print('{}*{}={:<4d}'.format(j,i,i*j),end='')
        print()
a = int(input())
mul_table(a)

第4章-25 输出三角形字符阵列

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

输入格式:
输入在一行中给出一个正整数n(1≤n<7)。

输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:

4

输出样例:

A B C D 
E F G 
H I 
J 

答案样例:

a = int(input())
b = 65
c = a
for i in range(a):
    count = 0
    for j in range(c):
        print('%c'%(b),end=' ')
        b += 1
        count += 1
        if count == c:
            c -= 1
            print()

第4章-26 求1!+3!+5!+……+n!

求1!+3!+5!+……+n!的和,要求用循环嵌套设计,n<12。

输入格式:
输入在一行中给出一个不超过12的正整数n。

输出格式:
在一行中按照格式“n=n值,s=阶乘和”的顺序输出,其中阶乘和是正整数。

输入样例:

5

输出样例:

n=5,s=127

答案样例:

from math import factorial

n = int(input())
s = sum(factorial(i) for i in range(1,n+1,2))
print(f'n={n},s={s}')

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/113611739