Printing of Matrices in Python

Asked

Viewed 177 times

1

I’m starting in python and I need to solve several Python matrix exercises, but I can’t make the right impression. Understanding the Logica of this exercise I can solve the other quiet.

Could someone help me? The code is this:

A = []
for i in range(0, 2):
    for j in range(0, 3):
        A.append(input('Informe um valor para o vetor A: '))
print(A)

In case when I type for example 1, 2, 3, 4, 5, 6 the program prints: ['1', '2', '3', '4', '5', '6']

I need the program to print this way: [['1', '2', '3'], ['4', '5', '6']]

2 answers

1


What happens is that your list is one-dimensional and you’re adding the values directly to it. What you should do, is create two lists within this your main list and go adding the values through the row indices.

matriz = [[],[],[]]
    
for y in range(len(matriz)):
    for i in range(3):
        matriz[y].append(input("Informe um valor para o vetor A: "))

print(matriz) # [[x, y, z, ...], [x, y, z, ...], [x, y, z, ...]]

1

For you to work with matrices you must take into account the number of linhas and of colunas of that matrix.

In this case you will need to specify the número de linhas and also the número de colunas.

To create an array with any number of rows and columns, you can use the following algorithm...

# Este programa insere elementos em uma matriz, exibe a matriz, exibe o tamanho da
# matriz e diz se ela é ou não uma matriz quadrada.

# Capturando e tratando o número de linhas da matriz.
while True:
    try:
        n = int(input('Digite a quantidade de linhas da matriz: '))
        if n <= 0:
            print('\033[31mValor INVÁLIDO! Digite apenas inteiros maiores que "0"!\033[m')
        else:
            break
    except:
        print('\033[31mValor INVÁLIDO! Digite apenas valores inteiros!\033[m')

# Capturando e tratando o número de colunas da matriz:
while True:
    try:
        m = int(input('Digite a quantidade de colunas da matriz: '))
        if m <= 0:
            print('\033[31mValor INVÁLIDO! Digite apenas inteiros maiores que "0"!\033[m')
        else:
            break
    except:
        print('\033[31mValor INVÁLIDO! Digite apenas valores inteiros!\033[m')

# Inserindo cada linha na matriz.
matriz = list()
for c in range(1, n + 1):
    # Inserindo os elemntos em cada linha.
    linha = list()
    for i in range(1, m + 1):
        # Capturando e tratando cada elemento da matriz:
        while True:
            try:
                valor = int(input(f'Digite o {i}º elemento da {c}ª linha: '))
                break
            except:
                print('\033[31mValor INVÁLIDO! Digite apenas valores inteiros!\033[m')
        linha.append(valor)
    matriz.append(linha)

# Tomando decisões e exibindo resultados.
print(f'\033[32mA matriz gerada foi: {matriz}')

if n == m:
    resp = 'matriz quadrada'
else:
    resp = 'matriz não quadrada'

print(f'A ordem da {resp} é: {n} x {m}')

See here the functioning of the algorithm.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.