Q: Cómo llenar una matriz de NxN con ceros Le quiero llenar de esta manera pero no se me ocurre nada:

He intentado con esto pero no me funciona:
filas=int(input ("Introduce número de filas x columnas: "))
while filas%2==1:
    filas=int(input ("Introduce número de filas x columnas: "))
    print('El numero que ha ingresado es impar, intentelo nuevamente')
else:
    columnas=filas
    matriz= [[0] * columnas] * filas
    for i in matriz:print(i)
    Valores= input('Ingrese los valores correspondientes ')
    a=Valores.split(',')
    print(a)


A: Digamos que en values dejas los valores ingresados:
values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

para recorrer la matriz en el orden descrito, partes de las coordenadas (3, 3), colocas un valor en la matriz, y luego retrocedes una fila. Sigues asi hasta llegar a la fila cero, donde retrocedes una columna y vuelves a partir de la última fila. Sigues asi hasta que te pases de la columna cero, fila cero.
# matriz de 4*4 ha sido previamente inicializada.
dim = 4  # Una matriz de n * n
col = dim - 1 # Indice última columna
row = dim - 1 # Indice última fila
while col >= 0 and row >= 0:
    matriz[row][col] = values.pop(0)
    
    row -= 1  # Retroceder una fila
    if row < 0:
        row = dim - 1 # Volver a la última fila
        col -= 1      # Retroceder una columna

# Imprimir
for row in matriz:
    print(*row)

produce
15 11 7 3
14 10 6 2
13 9 5 1
12 8 4 0

