python刷题第五周
2021/9/25 12:10:44
本文主要是介绍python刷题第五周,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以下是有所收获的题目:
第一题:
第4章-20 求矩阵各行元素之和 (15 分) 本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式: 输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间
以空格分隔。
输出格式: 每行输出对应矩阵行元素之和。
我的代码
n, m = map(int, input().split()) s = [0] * n for x in range(n): ls = list(map(int, input().split())) for y in range(m): s[x] += ls[y] for x in range(n): print(s[x])
收获:
1.对于每一行的数字,我习惯了像c++那样用cin来把每个数字输入,但是python不会将数字以空格为间隔分开,而是以回车为间隔。
所以对于每一行的数字,可以通过
for x in range(n): ls = list(map(int, input().split()))
将数字保存在列表中,再进行计算。
2.初始化列表的长度
s = [0] * n
之前我用过其他的方法初始化列表,像
ls = [range(n)]
但是我发现这种最为简单实用,可以将每一个值初始化为0.
第二题:
第4章-21 判断上三角矩阵 (15 分) 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
输入格式:
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。
我的代码:
n = int(input()) flag = 1 res = [] for i in range(n): j = int(input()) for x in range(j): s = [int(x) for x in input().split()] if x > 0: for y in range(x): if s[y] != 0: flag = 0 if flag == 1: res.append("YES") else: res.append("NO") flag = 1 for i in range(n): print(res[i])
收获:
1.找到了更为便捷的输入方式:
s=[int(x) for x in input().split()]
可以将一行中以空格为间隔的数字输入到一个列表中
第三题
第4章-22 找鞍点 (20 分) 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入格式: 输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
输出格式: 输出在一行中按照“行下标
列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。
我的代码:
n = int(input()) ls = [0] * n ls_h = [0] * n check = 0 for i in range(n): ls[i] = [int(x) for x in input().split()] for x in range(n): ls_h[x] = [0] * n for y in range(n): ls_h[x][y] = ls[y][x] for i in range(n): x = max(ls[i]) flag = ls[i].index(x) if x == min(ls_h[flag]): print("%d %d" % (i, flag)) check = 1 if check == 0: print("NONE")
注意⚠️:还有一个测试点不能通过,原因应该是index只会找到符合条件的第一个元素的位置,如果有重复元素就会出现错误。
别人的代码:
n = int(input()) numb = [] like = 0 for i in range(n): numb.append(list(map(int,input().split()))) for i in range(n): max_number = max(numb[i][k] for k in range(n)) for j in range(n): min_number = min(numb[k][j] for k in range(n)) if min_number == max_number: print('{} {}'.format(i,j)) like +=1 if like == 0: print('NONE')
收获:
1.max函数和min函数
可以用来求列表中的最大值和最小值
2.index函数可以用来求列表中某个值的位置(但是要注意重复情况!)
3.更加简洁凝练的语句:
max(numb[i][k] for k in range(n))
在括号里面可以用for语句
这篇关于python刷题第五周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识