1
resposta

Dúvida python matrizes

Eu estou fazendo uma atividade em python que é para printar as matrizes, podendo usar uma matriz base como por exemplo a que eu to usando de 5x5, mas se você alterar o tamanho da matriz, as respostas deverão permanecer idênticas às ilustrações. O problema é que estou com dificuldade de fazer as letras "G" e "I"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Esse é meu código até agora:


# Definindo o tamanho da matriz
size = 5

# Criando a matriz size x size
matriz = [[i]*size for i in range(1, size + 1)]

# a)
print("a)")
for i in range(size):
    print("   " * i + str(matriz[i][i]))

# b)
print("\nb)")
for i in range(size):
    print(" ".join(str(matriz[i][j]) for j in range(i + 1)))

# c)
print("\nc)")
for i in range(size):
    print("  " * (size - 1 - i) + " ".join(str(matriz[i][j]) for j in range(i + 1)))

# d)
print("\nd)")
for i in range(size):
    if i < size // 2:
        print(" ".join(str(matriz[i][j]) for j in range(i + 1)))
    elif i == size // 2:
        print(" ".join(str(matriz[i][j]) for j in range(i + 1)))
    else:
        print(" ".join(str(matriz[i][j]) for j in range(size - i)))
        
# e) 
print("\ne)")
for i in range(size):
    if i < size // 2:
        print(" " * (size - 1 - i * 2) + " ".join(str(matriz[i][j]) for j in range(i + 1)))
    elif i == size // 2:
        print(" ".join(str(matriz[i][j]) for j in range(i + 1)))
    else:
        spaces = (i - size // 2) * 2
        if size % 2 == 0:
            spaces -= 1
        print(" " * spaces + " ".join(str(matriz[i][j]) for j in range(size - i)))
        
# f)        
print("\nf)")
for i in range(size):
    if i % 2 == 0:
        print(str(matriz[i][0]) + " " * 5 + str(matriz[i][0]) + " " * 5 + str(matriz[i][0]))
    else:
        print(" " * 3 + str(matriz[i][0]) + " " * 5 + str(matriz[i][0]))
        
# g)
print("\ng)")
for i in range(size):
    if i < size // 2:
        print(str(matriz[i][0]) + " " * (4 * (size - 1 - i)) + str(matriz[-1][0]))
    elif i == size // 2:
        print(" ".join(str(matriz[i][j]) for j in range(size)))
    else:
        print(str(matriz[i][0]) + " " * (4 * (i - size // 2)) + str(matriz[-1][0]))

# h)
print("\nh)")
for i in range(size):
    if i == 0 or i == size - 1:
        print(" ".join(str(matriz[i][0]) for _ in range(size)))
    elif i < size // 2:
        print(" " * (i * 2) + " ".join(str(matriz[i][0]) for _ in range(size - i * 2)))
    else:
        print(" " * ((size - i - 1) * 2) + " ".join(str(matriz[i][0]) for _ in range(size - (size - i - 1) * 2)))

print("\ni)")
for i in range(size):
    if i == size // 2:
        print(" ".join(str(matriz[i][0]) for _ in range(size * 2 - 1)))
    elif i < size // 2:
        print(" " * (size - i * 2 - 1) + " ".join(str(matriz[i][0]) for _ in range(i * 2 + 1)))
    else:
        print(" " * ((i - size // 2) * 2 - 1) + " ".join(str(matriz[i][0]) for _ in range((size - i) * 2 - 1)))
1 resposta

Olá, Alana! Tudo joia?

Vamos focar nas letras "G" e "I" que você mencionou ter dificuldades.

Para a letra "G", você precisa de uma linha superior e inferior completas, uma coluna à esquerda completa e uma "perna" na parte inferior direita. Aqui está um exemplo de como você pode ajustar o seu código para a letra "G":

# g)
print("\ng)")
for i in range(size):
    if i == 0 or i == size - 1:  # Linha superior e inferior completas
        print(" ".join(str(matriz[i][0]) for _ in range(size)))
    elif i < size // 2:  # Coluna à esquerda completa
        print(str(matriz[i][0]))
    else:  # "Perna" na parte inferior direita
        print(str(matriz[i][0]) + " " * (size - 2) + " " + str(matriz[i][0]))

Para a letra "I", você precisa de uma linha superior e inferior e um meio onde todas as colunas têm o mesmo número. Aqui está um exemplo de como ajustar o código para a letra "I":

# i)
print("\ni)")
for i in range(size):
    if i == 0 or i == size - 1:  # Linha superior e inferior
        print(" ".join(str(matriz[i][0]) for _ in range(size)))
    else:  # Meio
        print(" " * (size // 2) + str(matriz[i][0]) + " " * (size // 2))

Lembre-se de que esses exemplos são baseados na matriz de tamanho 5x5 que você está usando. Se você alterar o tamanho da matriz, pode ser necessário ajustar os espaços para manter a forma das letras.

Teste essas alterações no seu código e veja se elas produzem o resultado esperado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.