Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
3.6 kB
2
Indexable
Never
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('Ошибка')