Python :: Aufgabe #44 :: Lösung #1

3 Lösungen Lösungen öffentlich
#44

Matrizen um 90 Grad drehen

Anfänger - Python von pocki - 11.11.2013 um 16:38 Uhr
Erstelle ein Programm, welches als Eingabe eine Matrix beliebiger Größe entgegennimmt und diese dann um 90 Grad dreht.

Beispiel an einer 4x4 Matrix:
Eingabematrix mit den Elementen:
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44

sollte diese Ausgabematrix erzeugen:
a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14

Das Programm sollte für unterschiedlich großen und auch mit nicht quadratischen Matrizen funktionieren.
#1
vote_ok
von malthea (180 Punkte) - 04.03.2014 um 19:08 Uhr
Quellcode ausblenden Python-Code
""" matrizen_sort - Python 3.3.4
     dreht beliebige Matritzen um 90 Grad im Uhrzeigersinn """

def ausgabe(a, b, c, d):
    """ gibt eine Matrix mit a Spalten und b Zeilen aus """
    i, j = 0, 0
    for j in range (b):
        for i in range (a):
            print (d[c], end = ' ')
            c +=1
        print ('\n')

def eingabe (a, i, j):
    """ Eingabe von beliebigen Matrixelementen (a == True) und
    Integerwerten (a==False) fuer Zeilen- bzw Spaltenanzahl
    """
    b = 0
    if a == True:
        print ('Element [', j, i, end = ' ')
        b = input (']:')
    while a == False:
        try:
            b = int(input(':'))
            a = True
            if b < 0:
                a =False
                print ('Bitte eine positive Zahl eingeben', end = ' ')
        except ValueError:
            print ('Bitte eine Integerzahl eingeben', end = ' ')
            a = False
    return b

print ('Anzahl Spalten', end = ' ')
a = eingabe (False, 0, 0)
print ('Anzahl Zeilen', end = ' ')
b = eingabe (False, 0, 0)
 
liste1 = list ()   
i, j, k, l = 0, 0, 0, 0

liste2 = [' ']

for j in range (b):
    for i in range (a):
        liste1.append (eingabe (True, i, j))
                                           

while l <= (a*b):
    for j in range (a):
        for i in range (b):
            k = a*(b-i) - a + j
            liste2.append (liste1[k])
            l += 1
        

print ('ursprüngliche Matrix: \n')
ausgabe(a, b, 0, liste1)

print ('um 90 Grad gedrehte Matrix: \n')
ausgabe(b, a, 1, liste2)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben