Ich habe eine Aufgabe, wo ich eine Funktion schreiben muss, die ein Rechteck (Benutzer kann seine Höhe und Breite ändern) Rahmen für Rahmen mit einem Quadrat von "x" es innen davon (ich habe mein Bestes versucht, es zu beschreiben, aber ich hoffe, das Bild wird helfen).Einfache Rechteck-Terminal-Animation in Python 3.x
In meinem Code stelle ich Frame als eine Liste von Zeilen (gefüllt mit "o" s). Ich habe bereits eine Funktion, die das Zentrum des Rechtecks findet und das mittlere "o" durch "x" ersetzt - das ist mein erstes Bild.
Ursprünglich wollte ich alle verbleibenden Frames mit verschachtelten Loops machen, aber es wurde ziemlich schnell verwirrend, da es 2 horizontale Zeilen von "x" es gibt.
Ich bin mir ziemlich sicher, dass ich ein neues "Koordinatensystem" brauche, um über Frames zu iterieren. Kann mir bitte jemand in die richtige Richtung zeigen?
def squareAnimation():
while True:
frameHeight = int(input("Please enter frame's height: \nRemember: Odd numbers only!\n"))
frameWidth = int(input("Please enter frame's width:\nRemember: Odd numbers only!\n"))
if (frameHeight % 2 != 0 and frameWidth % 2 != 0):
break
numberOfFrames = min(int(frameWidth/2), int(frameHeight/2))
lineTemplate = "o " * frameWidth
#frame filled with "o" only
blankFrame = [lineTemplate] * frameHeight
#frame with x in center
frameTemplate = blankFrame
findListCenter(frameTemplate, frameHeight, frameWidth)
printListWithoutBrackets(frameTemplate)
def findListCenter(frame, height, width):
frame[int(height/2)] = "o " * (int(width/2)) + "x " + "o " * (int(width/2))
def printListWithoutBrackets(frame):
for object in range(0, len(frame)):
tempLine = frame[object]
print("".join(tempLine))
squareAnimation()