Untitled
unknown
python
3 years ago
3.6 kB
10
Indexable
import random
import numpy as np
from statistics import variance
def generate():
global rows, cols, rmin, rmax,matrix,tmparr
matrix = []
tmparr = []
rows = int(input('Количество строк: '))
cols = int(input('Количество столбцов: '))
rmin = int(input('Минимальное значение: '))
rmax = int(input('Максимальное значение: '))
for i in range(rows):
row = []
for j in range(cols):
row.append(round(rmin + (rmax - rmin) * random.random(),2))
matrix.append(row)
generate()
print('-'*30)
def prt_disp(r,c):
for i in matrix:
row = []
for j in i:
row.append(j)
print("%.2f " %j, end=" ")
print("med= ", variance(row))
print()
def txt():
tmp = []
i = 0
for i in range(rows):
print()
for j in range(cols):
tmp = (matrix[i][j])
print("%.2f " %tmp,end= " ")
j = j + 1
tmp = []
i = i + 1
print()
txt()
while True:
#print (matrix)
print()
print('Дудник Кирилл, вариант 16')
print('Введите цифру')
print('1 - транспонировать')
print('2 - вывод матрицы')
print('3 - дисперсия в каждой строке')
print('4 - максимум среди сумм элементов диагоналей, параллельных побочной диагонали матрицы')
print('5 - Перезапуск')
choice = int(input('введите число: '))
print('')
print('')
print('')
if choice == 1:
tmparr = [*zip(*matrix)]
matrix = [list(rw) for rw in tmparr]
t = cols
cols = rows
rows = t
# prt(rows,cols)
txt()
print('-' * 30)
elif choice == 2:
#prt(rows,cols)
txt()
print('-' * 30)
elif choice == 3:
prt_disp(rows,cols)
print('-' * 30)
elif choice == 4:
txt()
max_s = 0
n = len(matrix)
# верхние диагонали
for start_j in range(n - 2, -1, -1):
i = 0
j = start_j
s = 0
while i < n and j >= 0:
s += abs(matrix[i][j])
#print(s)
i += 1
j -= 1
if s > max_s:
max_s = s
#print(min_s)
# нижние диагонали
for start_i in range(1, n):
i = start_i
j = n - 1
s = 0
while i < n and j >= 0:
s += abs(matrix[i][j])
#print(s)
i += 1
j -= 1
if s > max_s:
max_s = s
#print(min_s)
print("Максимум, среди сумм диагоналей паралельных побочной: ", max_s)
# txt()
# print('')
# print('')
# print('')
# b = np.asarray(matrix)
# b = np.fliplr(b)
# #print(np.trace(b))
# print('Среднее значение побочной диагонали: ','{:.2f}'.format(np.trace(b)/min(rows,cols)))
# #print(min(rows,cols))
# print('-' * 30)
elif choice == 5:
generate()
txt()
print('-' * 30)
else:
print('Ошибка')Editor is loading...