Ü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:

../../_images/loopy_lab_screenshot.png

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:

../../_images/loopy_lab_screenshot_numbered.png

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 verschachtelte for-Schleife.

  • Abschnitt 4 benötigt nur eine if-Anweisung. Der Trick besteht darin, ein and 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