Zum Inhalt

Logische Verknüpfung

Mit logischen Verknüpfungen können mehrere Aussagen kombiniert werden. Wir verwenden solche Verknüpfungen im alltäglichen Sprachgebrauch. z.B. "Ich gehe Skifahren, wenn es genügend Schnee hat und ich keine Schule habe". Das und verknüpft dabei zwei Aussagen.

Wahrheitswert

Sehr vereinfacht gesagt, haben Aussagen einen Wahrheitswert: z.B. Die Aussage: "Es schneit heute" kann wahr oder falsch sein, auf Englisch wäre dies true oder false.

Im Programmieren gibt es den Datentyp Wahrheitswert (Boolean), welcher nur zwei Werte annehmen kann: wahr oder falsch. In Python heisst dies: True oder False.

Beispiel: einfache Wahrheitswerte

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Verknüpfungen

Mit Wahrheitswerten können wir auch rechnen. Dazu verwenden wir logische Verknüpfungen. Neben der und Verknüpfung gibt es auch die oder Verknüpfung, sowie die Verneinung: nicht.

Nicht

Für eine Aussage A kehrt die nicht Verknüpfung den Wahrheitswert um:

A nicht A
falsch wahr
wahr falsch

Wenn die Aussage A nun durch einen Ausdruck oder eine Variable in Python dargestellt wird so erhalten wir:

A not A
False True
True False

Und

Das Ergebnis zweier Aussagen A & B mit einer Und-Verknüpfung ist nur wahr, wenn beide Teilaussage auch wahr sind.

A B A and B
False False False
False True False
True False False
True True True

Oder

Das Ergebnis zweier Aussagen A & B mit einer Oder-Verknüpfung ist nur wahr, solange eine der beiden Teilaussagen wahr ist.

A B A or B
False False False
False True True
True False True
True True True

In Python

Beispiel: logische Verknüpfungen in Python

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Teilbarkeit

Ein weiter wichtiger Operator ist der "Modulo" Operator (%). Damit erhält man den Rest einer ganzzahligen Division.

Beispiel: ganzzahlige Division

Studiere die nachfolgenden Berechnungen.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Wenn der Rest einer ganzzahligen Division \(0\) ist, z.B. \(4 \% 2 = 0\), so ist die erste Zahl durch die zweite Teilbar.

Beispiel: teilbarkeit überprüfen

In diesem Beispiel verwenden wir % um die teilbarkeit einer Zahl zu überprüfen.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Dieser Operator können wir z.B. verwenden um zu überprüfen, ob ein Jahr ein Schaltjahr ist.

Schaltjahre

Question

Schreibe ein Programm, welches überprüft ob eine Jahr ein Schaltjahr ist. Die Regeln dazu sind:

Wenn die Jahreszahl durch 400 teilbar ist oder wenn sie durch 4 teilbar und nicht durch 100 teilbar ist, dann liegt ein Schaltjahr vor.

Beispiel: 2024 ist eins, 2100 ist keins.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013j SIc2L(o4kgfö3e=)%Ji67?85hy/9;aputnd0m:wslr1,qb!v050L0q0J0G0v0R0Q0c0f0R0G0Q0Q0r010J0v0H010406050Q0I0N0N0G0S0C040h0o0}0K0m050D0}0 11130{0H04051h1a1k0D1h0{0L0v0Y0+0-0/0;0B0v0m0B0R1y0B0J0_050$0W0R0q1t0.0:011x1z1B1z0J1H1J1F0J0S1i0J0B0+0j0)0H0G0K0;0g011L1v010n0(0q0K0G0N0q1F0Q1)0K1/1N1=1J1^1`0_0a0c15170m0Q0Y0j0S0Q0f1A0G191b1~1i0D1!2n1X1Z1Y1G0L200;1B0K1@0j0Q1F1q1s0,1M2x0v2z0K0j2E1F0H0S0q1i1}1*2n2T0K2S1~2w012L0S100R0_0T1a2W0`0|2Z2G1:2$2(0_0g2,2m0{2W2!2?0G2)040p2`2U2|2:1u1N2 310k342X361*2~2e2@040A3d2.2}2;393i300_0w3m3f1 3p0;3a0_0x3v2/3g3y2#3r310z3m1l2Q2n2E2q0L1Z2v3G0f2M1{1i3P1j3N3E2X3L3V0!2Y3F383z0_0b0G0B0S3m0c0c3$2!0j0_0r3@3`3G0K0W0_2J0J3L3o3-010^040i47372H2#43042J0H0I462l2U40494b4d4o3%484g0Q0T0_02030p0E0F0u3;0S0O0c4B4D0F4e3,4g4b0s0s3v3w2!0f4z04030c0v0Q0J4K4C4E3:3=4L4E0c0q2J0c0d2h300J4,0S0y4U4q4g0l440n3 4w1:4s4O3x490K3/4H544f1:3|040t5e4P1:0N0v0_0k0M0M5k594g5h0r3~4u043_551N5n0_5s5z4 560_4T5z5B5f1N0j0P0_2e5t2!4s4t2-5I395c3=5U3G5h5j5M5Z0;5E043c5+5C0;5w5y2-5N5l5D5o045G5Y5=4a5K5%495Q0_1*0L644Q0_5X2m5,2#5#3?5;5O5?0_5*5_6f5.0T5r6a5g0_0X5^2m5`5u5m5}5 6e614R0s0O3v3^3^6f420_2P45585V6c6R3G0Q1-04020V0I0j0J0F0e4%4:4=4@0B4_4{0O6Z6#6%6U4r0_0U6t5!044{6^6b045L2-4V3G51040q0)0q705J046I5z066K6z2~4i6P0K4n606k624c7c1N6W4A6!6$6(6*0l4;1 6-6/4H6;7x6@5H6F6`6|3.6~5d7K7q4R3D0D3)2R3M7X0D3Z2o3R1a2r7(0G1I7Z3P0{7!0#0%0)04.
Lösung
1
2
3
4
5
6
7
8
jahr  = int(input('Jahr: '))

# ist 'jahr' ein Schaltjahr?

if (jahr % 400 == 0) or ((jahr % 4 == 0) and (jahr % 100 != 0)):
    print("Ist ein Schaltjahr:", jahr)
else:
    print("Ist kein Schaltjahr:", jahr)

Mit Verknüpfungen zeichnen

Mit logischen Verknüpfungen können wir komplexere Programme schreiben.

In diesem Beispiel zeichnen wir nicht mehr Linien mit der Schildkröte, sondern Punkte als "Pixel" verteilt in einem Gitter.

Beispiel: Zeichnen mit logischen Verknüpfungen

Dieses Programm zeichnet je nach x und y Koordinate mit einer anderen Farbe, dazu wird mit zwei Schleifen ein Gitter "gezeichnet".

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Weitere Aufgaben

Gitter 1

Question

Zeichne ein Gitter mit zwei for-Schleifen für die x und y Koordinaten und verwende logische Verknüpfungen um die dargestellte Figur zu zeichnen.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013 Tc2L(o4xkgfö3e=)iP6785*hy/9;aputBnd0mw-:slr1,qbv050K0p0H0E0s0R0Q0b0d0R0E0Q0Q0q010H0s0F010406050Q0G0M0M0E0S0A040f0n0|0J0l050B0|0~10120`0F04051g191j0B1g0`0K0s0X0*0,0.0:0z0s0l0z0R1x0z0H0^050#0W0R0p1s0-0/011w1y1A1y0H1G1I1E0H0S1h0H0z0*0h0(0F0E0J0:0e011K1u010m0%0p0J0E0M0p1E0Q1(0J1.1M1;1I1@1_0^0a0b14160l0Q0X0h0S0Q0d1z0E181a1}1h0B1Z2m1W1Y1X1F0K1 0:1A0J1?0h0Q1E1p1r0+1L2w0s2y0J0h2D1E0F0S0p1h1|1)2m2S0J2R1}2v012K0S0 0R0^0b0T192V0_0{2Y2F1/2#2%2)0e2,2l0`2V2Z2?0E2(040b0o2`2T2|2:1t1M2 310b0i352W371)2~2d2@320x3f2.2}2;3a3k302)0u3o3h1~3r0:3b2)0v3x2/3i3A2!3t3c0w3F3q393B3K2)0C3N382G3J2$3u040T0L3U3H3P3X3l0T2+2k363G3z3)3C3!2_3.3g3:3j3Y310T343_3p3V2=3R3!3e413y3|3+3n483{3I3?0T3w4d3O3W4g3E4j433s3}0^0T3M4o3(4l450T3T4v3;4x4r040e3$4B4a3Z0e3-2-494f450e3^4N4e3=4Q404T4k444E0e472-1k2P2m2D2p0K1Y2u3I0d2L1`1h4,1i4*3:2U2l054=0Z2X4w1/0k0J0^0m0S0h0M3o0b4U4l56040l0H0G0S0H1I5c5e545g0s0M0F2d0H5o4Z1M0h0^0y3x4O3=0^0 0k0p0c5k5m0p3o5p1M0@040g0r5D5P3B0^1|0p0p0K5O5y0:5R0g5%4p0:0M0s0^4H4(5(015R5U4I4f0^1w0Z5K5l5n415W5^0^5T3%4C2=0^0F1?0G0F5,535Q665`4N5E3W0k572d5x5-2!0^0j6r6h0:0h0N0^2I6w693a0W0^0S1)0l5N635@5*6g6E6y0^0O6P2Z5/0^4G5=4~6N0^0U6D6V5:4F0L6Z2T645R6%415d5@6W6+6U3I5_0P3x0b6 6?6s6o040m6q6=645g0A6(3I6z6B0J7b3=6G046I176L5?6s6O6M6s5A046T7q6x016^6Y6`3)6:7g3W7y6,7A3W7C776@6*4G7H1/6|6~707S785Y0!5u0Q7O6i5S7Z5X046v7v6Q65046;2-717w797$7,6k2{067S7T5@0d0T0^030b2c1~0O6Y0b0W0s0)860q3d6,0b0t0s0j0p0R0b2I3d0b0c0p1=0b0q025i0D2*8e8g8i8k2O0h0b0I0p2P0s2g7R7{7:7+730s0m7D6a7(8R5z0^020R0H0D8U6R7t7?6^3#6-2W6/0^6}488L8L7U046c0J4=0R767n7w7p8}7+0Q1,04020V0G0h8Z2P0K95978Z7?5_8K7{64738j0Q7m6!7o8.9h8;8M2Z8O8Q7K6s5g7)7/647s8X9e9x7w6^8+527+5R8/4N9s9s8?8^8`8|9o8~667?928W96980D0A8j8{0N9c9$9f0^7^369P709j0^9l9n6.6#049N2{9=8=5@9v8#6t8T9G7+9D8Y8!a76)4s7G7*2Z9M9ra07|9y6b1?9T0S9.7#ag3I9Z949#8Z0l2P1?9,9F90ah9/aj9=9@049_ar9~9;ak8;9Rao1$9U9{9pasaEau93aC0D0 6K0J0#a#ar9:3g9Q5@5g0K98ar5+at3)8)4caY7BaG4d0B502Q4)b30B4_2n4.192qba0E1Hb54,0`b60!0$0(04.
Lösung
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from gturtle import *

makeTurtle()

speed(0)
hideTurtle()
penup()

for x in range(-200, 200, 20):
    for y in range(-200, 200, 20):
        setpos(x, y)

        # von -200 bis 200 = 400 Pixel in 4 Teile => 100 Pixel pro Bereich
        if x < -100:
            pencolor("red")
        else:
            if x < 0:
                pencolor("yellow")
            else:
                if x < 100:
                    pencolor("green")
                else:
                    pencolor("magenta")
        dot(15)

Gitter 2

Question

Zeichne ein Gitter mit zwei for-Schleifen für die x und y Koordinaten und verwende logische Verknüpfungen um die dargestellte Figur zu zeichnen.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013 Tc2L(o4xkgfö3e=)i6785*hy/9;aputnd0mw-:slr1,qbv050I0p0G0D0s0P0O0b0d0P0D0O0O0q010G0s0E010406050O0F0K0K0D0Q0z040f0n0`0H0l050A0`0|0~100^0E04051e171h0A1e0^0I0s0V0(0*0,0.0y0s0l0y0P1v0y0G0?050Z0U0P0p1q0+0-011u1w1y1w0G1E1G1C0G0Q1f0G0y0(0h0$0E0D0H0.0e011I1s010m0#0p0H0D0K0p1C0O1$0H1,1K1/1G1=1@0?0a0b12140l0O0V0h0Q0O0d1x0D16181{1f0A1X2k1U1W1V1D0I1}0.1y0H1;0h0O1C1n1p0)1J2u0s2w0H0h2B1C0E0Q0p1f1`1%2k2Q0H2P1{2t012I0Q0}0P0?0b0R172T0@0_2W2D1-2Z2#2%0e2*2j0^2T2X2;0D2$040b0o2^2R2`2.1r1K2}2 0b0i332U351%2|2b2=300w3d2,2{2/383i2~2%0t3m3f1|3p0.392%0u3v2-3g3y2Y3r3a0v3D3o373z3I2%0B3L362E3H2!3s040R0J3S3F3N3V3j0R2)2i343E3x3%3A3Y2@3,3e3.3h3W2 0R323@3n3T2:3P3Y3c3 3w3`3)3l463_3G3;0R3u4b3M3U4e3C3 1i2N2k2B2n0I1W2s3G0d2J1^1f4q1g4o3.2S2j054w0X2V3$3U0k0H0?0m0Q0h0K3m0b4c3:4N040l0G0F0Q0G1G4T4V4L4X0s0K0E2b0G4)4i1-0h0?0x3v474d0?0}0k0p0c4#4%0p3m4*1-0=040g0r4{57380?1`0p0p0I564?1K590g5l411K0K0s0?3!4m5m0.595c4h5r3z0?1u0X524$4(5x5D015o5B2+4|3:0?0E1;0F0E5q4K580?5b5d5y010k4O2b4=5M4X0j5-5Z1K0h0L0?2G5;3/4j0U0?0Q1%0l555L5=5z5#5Y5|4@0?0M682X5t0?0e0J5w2+5e66040S5{6e5u046h6j4F5(596o3 4U5(6f6s6u2R6l5N0?0r0N3v0b6M6A5M5*040m5,6z6G4X0z6p3G5@5_0H6Y3:5~046015636k6w6764695?6b6d3G6C6t6^3%6x6%3U6`6i6|3U6~6U6B6r6h735!046J6L6N7f6V5g0Y4/0O7a5n6:6.5.0?5:6;2X752+6O652Y0?6X7t3G5A4{7f7g5(6Q0s0m6 2:7A7M6?04020P0G0C7P5E047s7p7y596K467G7)7x6=7X5U0H4w0P6T7!7,6H5a7m0.0O1*7R0T0F0h7U2N0I027 817V7C6}6I7e7)6G6Q0p0$6-6v5M7$8c7*6M7h047.7:7=8j7#7o8u7@7|0?85807U0l2N1;8B877`7^5P2_8n8p0I818J5o8J6C0R4a7?7u8b4b0A4H2O4n8%0A4A2l4s172o8.0D1F8)4q0^8*0Y0!0$04.
Lösung
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from gturtle import *

makeTurtle()

speed(0)
hideTurtle()
penup()

for x in range(-200, 200, 20):
    for y in range(-200, 200, 20):
        setpos(x, y)

        if y < x:
            pencolor("red")
        else:
            pencolor("green")
        dot(15)