Übung 5: Loopy Lab¶
Das Ziel dieser Übung ist es, die Verwendung von verschachtelten for
-Schleifen zu üben. Wir werden ein Programm erstellen, das folgendes Bild erzeugt:

Geben wir, damit wir nicht verrückt werden, jedem Abschnitt eine Nummer. Wenn wir dann Fragen stellen, können wir sagen, um welchen Abschnitt es sich handelt. Gebe die Zahlen nicht in das endgültige Programm ein. Hier sind die Abschnittsnummern:

Großartig! Alle diese Elemente können mit verschachtelten for
-Schleifen erstellt werden.
Los geht’s¶
Nachfolgend findest du ein Programm, mit dem du anfangen kannst. Gebe unter jedem Kommentar den Code ein, der für die Erstellung des Musters erforderlich ist.
import arcade
def draw_section_outlines():
# Draw squares on bottom
arcade.draw_rectangle_outline(150, 150, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(450, 150, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(750, 150, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(1050, 150, 300, 300, arcade.color.BLACK)
# Draw squares on top
arcade.draw_rectangle_outline(150, 450, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(450, 450, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(750, 450, 300, 300, arcade.color.BLACK)
arcade.draw_rectangle_outline(1050, 450, 300, 300, arcade.color.BLACK)
def draw_section_1():
for row in range(30):
for column in range(30):
x = 0 # Instead of zero, calculate the proper x location using 'column'
y = 0 # Instead of zero, calculate the proper y location using 'row'
arcade.draw_rectangle_filled(x, y, 5, 5, arcade.color.WHITE)
def draw_section_2():
# Below, replace "pass" with your code for the loop.
# Use the modulus operator and an if statement to select the color
# Don't loop from 30 to 60 to shift everything over, just add 300 to x.
pass
def draw_section_3():
# Use the modulus operator and an if/else statement to select the color.
# Don't use multiple 'if' statements.
pass
def draw_section_4():
# Use the modulus operator and just one 'if' statement to select the color.
pass
def draw_section_5():
# Do NOT use 'if' statements to complete 5-8. Manipulate the loops instead.
pass
def draw_section_6():
pass
def draw_section_7():
pass
def draw_section_8():
pass
def main():
# Create a window
arcade.open_window(1200, 600, "Lab 05 - Loopy Lab")
arcade.set_background_color(arcade.color.AIR_FORCE_BLUE)
arcade.start_render()
# Draw the outlines for the sections
draw_section_outlines()
# Draw the sections
draw_section_1()
draw_section_2()
draw_section_3()
draw_section_4()
draw_section_5()
draw_section_6()
draw_section_7()
draw_section_8()
arcade.finish_render()
arcade.run()
main()
Bewertung¶
Es gibt 20 mögliche Punkte:
Abschnitt 1: 2 Punkte
Abschnitt 2: 2 Punkte
Abschnitt 3: 2 Punkte
Abschnitt 4: 2 Punkte
Komplett lösen eines Abschnitts von 1 bis 4: 1 Punkt
Abschnitt 5: 2 Punkte
Abschnitt 6: 2 Punkte
Abschnitt 7: 2 Punkte
Abschnitt 8: 2 Punkte
Komplett lösen eines Abschnitts von 5 bis 8: 1 Punkt
Coding-Stil: 2 Punkte (In PyCharm sollten keine gelben Linien auf der rechten Seite angezeigt werden)
Hinweise¶
Jedes kleine Quadrat ist ein Quadrat mit 5x5 Pixeln.
Wenn die Mitten der Quadrate 5 Pixel voneinander entfernt sieht, sieht man keine Kante und es sieht aus wie ein großes Quadrat.
Denke daran, die Zeile (oben und unten) entspricht y, die Spalte entspricht x.
Wenn du an den Abschnitten 2-8 arbeitest, kannst du einfach die x- und/oder y-Werte hinzufügen, um alles zu verschieben. Zum Beispiel addieren Sie einfach 300 zu allen x-Werten in Abschnitt 2, um sie in das zweite Feld einzufügen.
Jeder Abschnitt hat eine Größe von 300x300 Pixel.
Du benötigst nur zwei
for
-Schleifen. Verwende keine dritte verschachteltefor
-Schleife.Abschnitt 4 benötigt nur eine
if
-Anweisung. Der Trick besteht darin, einand
zu verwenden.Denke daran, dass das Zeichen
%
der Modulo-Operator ist. Er berechnet den Rest. So:0 % 3 = 0 1 % 3 = 1 2 % 3 = 2 3 % 3 = 0 4 % 3 = 1 5 % 3 = 2 6 % 3 = 0
Du kannst „rückwärts“ zählen, indem du subtrahierst.
print("Count up!")
for i in range(10):
print(i)
print()
print("Count down, even if i is going up")
for i in range(10):
x = 9 - i
print("i is", i, "and 9-i is", x)
Dies gibt aus:
Count up!
0
1
2
3
4
5
6
7
8
9
Count down, even if i is going up
i is 0 and 9-i is 9
i is 1 and 9-i is 8
i is 2 and 9-i is 7
i is 3 and 9-i is 6
i is 4 and 9-i is 5
i is 5 and 9-i is 4
i is 6 and 9-i is 3
i is 7 and 9-i is 2
i is 8 and 9-i is 1
i is 9 and 9-i is 0