📅  最后修改于: 2023-12-03 15:37:53.149000             🧑  作者: Mango
本程序用于计算给定的奇数阶方阵中间行和列的乘积。既可以手动输入方阵,也支持随机生成方阵,计算结果会自动显示在屏幕上。
手动输入方阵时,按照提示依次输入方阵每一行的元素,输入完成后程序会自动计算中间行和列的乘积并显示出来。
from typing import List
def get_matrix() -> List[List[int]]:
"""
手动输入方阵
"""
n = int(input("请输入方阵的阶数:"))
matrix = []
for i in range(n):
row = list(map(int, input(f"请输入第{i+1}行的元素,以空格分隔:").split()))
matrix.append(row)
return matrix
def calc_prod(matrix: List[List[int]]) -> int:
"""
计算奇数方阵中间行和列的乘积
"""
n = len(matrix)
if n % 2 == 0:
raise ValueError("输入的不是奇数阶方阵!")
middle = n // 2
row_prod = 1
col_prod = 1
for i in range(n):
row_prod *= matrix[middle][i]
col_prod *= matrix[i][middle]
return row_prod * col_prod
if __name__ == '__main__':
matrix = get_matrix()
prod = calc_prod(matrix)
print("中间行和列的乘积为:", prod)
随机生成方阵时,按照提示输入方阵的阶数和元素的最大值,程序会自动生成并打印出方阵,然后计算中间行和列的乘积并显示出来。
from typing import List
import random
def generate_matrix(n: int, max_val: int) -> List[List[int]]:
"""
随机生成n阶方阵,每个元素的取值范围是[-max_val, max_val]
"""
matrix = []
for i in range(n):
row = [random.randint(-max_val, max_val) for j in range(n)]
matrix.append(row)
return matrix
def calc_prod(matrix: List[List[int]]) -> int:
"""
计算奇数方阵中间行和列的乘积
"""
n = len(matrix)
if n % 2 == 0:
raise ValueError("输入的不是奇数阶方阵!")
middle = n // 2
row_prod = 1
col_prod = 1
for i in range(n):
row_prod *= matrix[middle][i]
col_prod *= matrix[i][middle]
return row_prod * col_prod
if __name__ == '__main__':
n = int(input("请输入方阵的阶数:"))
max_val = int(input("请输入元素的最大值:"))
matrix = generate_matrix(n, max_val)
print("随机生成的方阵为:")
for row in matrix:
print(row)
prod = calc_prod(matrix)
print("中间行和列的乘积为:", prod)