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
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
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.
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.
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.
.128013öesh;q98ft2lv17!60g3ndbIcpmoJ(ar%i=)?/wy:jL,kS45 u050w0c0k0F0I0m0d0X0z0m0F0d0d0J010k0I0A010406050d0Y0B0B0F0G0O040R0b0}0v0t050M0}0 11130{0A04051h1a1k0M1h0{0w0I0n0+0-0/0;0e0I0t0e0m1y0e0k0_050$0x0m0c1t0.0:011x1z1B1z0k1H1J1F0k0G1i0k0e0+0C0)0A0F0v0;0l011L1v010j0(0c0v0F0B0c1F0d1)0v1/1N1=1J1^1`0_0a0X15170t0d0n0C0G0d0z1A0F191b1~1i0M1!2n1X1Z1Y1G0w200;1B0v1@0C0d1F1q1s0,1M2x0I2z0v0C2E1F0A0G0c1i1}1*2n2T0v2S1~2w012L0G100m0_0o1a2W0`0|2Z2G1:2$2(0_0l2,2m0{2W2!2?0F2)040u2`2U2|2:1u1N2 310V342X361*2~2e2@040W3d2.2}2;393i300_0r3m3f1 3p0;3a0_0p3v2/3g3y2#3r310i3m1l2Q2n2E2q0w1Z2v3G0z2M1{1i3P1j3N3E2X3L3V0!2Y3F383z0_0Q0F0e0G3m0X0X3$2!0C0_0J3@3`3G0v0x0_2J0k3L3o3-010^040E47372H2#43042J0A0Y462l2U40494b4d4o3%484g0d0o0_02030u0h0f0D3;0G0P0X4B4D0f4e3,4g4b0K0K3v3w2!0z4z04030X0I0d0k4K4C4E3:3=4L4E0X0c2J0X0U2h300k4,0G0L4U4q4g0T440j3 4w1:4s4O3x490v3/4H544f1:3|040H5e4P1:0B0I0_0V0s0s5k594g5h0J3~4u043_551N5n0_5s5z4 560_4T5z5B5f1N0C0N0_2e5t2!4s4t2-5I395c3=5U3G5h5j5M5Z0;5E043c5+5C0;5w5y2-5N5l5D5o045G5Y5=4a5K5%495Q0_1*0w644Q0_5X2m5,2#5#3?5;5O5?0_5*5_6f5.0o5r6a5g0_0q5^2m5`5u5m5}5 6e614R0K0P3v3^3^6f420_2P45585V6c6R3G0d1-04020g0Y0C0k0f0y4%4:4=4@0e4_4{0P6Z6#6%6U4r0_0S6t5!044{6^6b045L2-4V3G51040c0)0c705J046I5z066K6z2~4i6P0v4n606k624c7c1N6W4A6!6$6(6*0T4;1 6-6/4H6;7x6@5H6F6`6|3.6~5d7K7q4R3D0M3)2R3M7X0M3Z2o3R1a2r7(0F1I7Z3P0{7!0#0%0)04.
Lösung
| 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...
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...
.128013öesh;q98fTt2lv1760g3-ndbcpmo(ari=)/wy:*L,k45 ux050x0c0l0E0G0n0d0T0z0n0E0d0d0H010l0G0A010406050d0U0B0B0E0F0L040O0b0`0w0t050J0`0|0~100^0A04051e171h0J1e0^0x0G0o0(0*0,0.0e0G0t0e0n1v0e0l0?050Z0y0n0c1q0+0-011u1w1y1w0l1E1G1C0l0F1f0l0e0(0C0$0A0E0w0.0m011I1s010j0#0c0w0E0B0c1C0d1$0w1,1K1/1G1=1@0?0a0T12140t0d0o0C0F0d0z1x0E16181{1f0J1X2k1U1W1V1D0x1}0.1y0w1;0C0d1C1n1p0)1J2u0G2w0w0C2B1C0A0F0c1f1`1%2k2Q0w2P1{2t012I0F0}0n0?0T0p172T0@0_2W2D1-2Z2#2%0m2*2j0^2T2X2;0E2$040T0u2^2R2`2.1r1K2}2 0T0R332U351%2|2b2=300S3d2,2{2/383i2~2%0r3m3f1|3p0.392%0q3v2-3g3y2Y3r3a0i3D3o373z3I2%0h3L362E3H2!3s040p0s3S3F3N3V3j0p2)2i343E3x3%3A3Y2@3,3e3.3h3W2 0p323@3n3T2:3P3Y3c3 3w3`3)3l463_3G3;0p3u4b3M3U4e3C3 1i2N2k2B2n0x1W2s3G0z2J1^1f4q1g4o3.2S2j054w0X2V3$3U0Q0w0?0j0F0C0B3m0T4c3:4N040t0l0U0F0l1G4T4V4L4X0G0B0A2b0l4)4i1-0C0?0N3v474d0?0}0Q0c0k4#4%0c3m4*1-0=040D0I4{57380?1`0c0c0x564?1K590D5l411K0B0G0?3!4m5m0.595c4h5r3z0?1u0X524$4(5x5D015o5B2+4|3:0?0A1;0U0A5q4K580?5b5d5y010Q4O2b4=5M4X0V5-5Z1K0C0K0?2G5;3/4j0y0?0F1%0t555L5=5z5#5Y5|4@0?0v682X5t0?0m0s5w2+5e66040P5{6e5u046h6j4F5(596o3 4U5(6f6s6u2R6l5N0?0I0M3v0T6M6A5M5*040j5,6z6G4X0L6p3G5@5_0w6Y3:5~046015636k6w6764695?6b6d3G6C6t6^3%6x6%3U6`6i6|3U6~6U6B6r6h735!046J6L6N7f6V5g0Y4/0d7a5n6:6.5.0?5:6;2X752+6O652Y0?6X7t3G5A4{7f7g5(6Q0G0j6 2:7A7M6?04020n0l0f7P5E047s7p7y596K467G7)7x6=7X5U0w4w0n6T7!7,6H5a7m0.0d1*7R0g0U0C7U2N0x027 817V7C6}6I7e7)6G6Q0c0$6-6v5M7$8c7*6M7h047.7:7=8j7#7o8u7@7|0?85807U0t2N1;8B877`7^5P2_8n8p0x818J5o8J6C0p4a7?7u8b4b0J4H2O4n8%0J4A2l4s172o8.0E1F8)4q0^8*0Y0!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...
.128013öesh;q98fTt2lv1760g3-ndbcpmo(ari=)/wy:*PL,k45 Bux050x0c0l0E0G0n0d0U0z0n0E0d0d0H010l0G0A010406050d0W0B0B0E0F0L040P0b0|0w0t050J0|0~10120`0A04051g191j0J1g0`0x0G0o0*0,0.0:0e0G0t0e0n1x0e0l0^050#0y0n0c1s0-0/011w1y1A1y0l1G1I1E0l0F1h0l0e0*0C0(0A0E0w0:0m011K1u010j0%0c0w0E0B0c1E0d1(0w1.1M1;1I1@1_0^0a0U14160t0d0o0C0F0d0z1z0E181a1}1h0J1Z2m1W1Y1X1F0x1 0:1A0w1?0C0d1E1p1r0+1L2w0G2y0w0C2D1E0A0F0c1h1|1)2m2S0w2R1}2v012K0F0 0n0^0U0p192V0_0{2Y2F1/2#2%2)0m2,2l0`2V2Z2?0E2(040U0u2`2T2|2:1t1M2 310U0S352W371)2~2d2@320T3f2.2}2;3a3k302)0r3o3h1~3r0:3b2)0q3x2/3i3A2!3t3c0i3F3q393B3K2)0h3N382G3J2$3u040p0s3U3H3P3X3l0p2+2k363G3z3)3C3!2_3.3g3:3j3Y310p343_3p3V2=3R3!3e413y3|3+3n483{3I3?0p3w4d3O3W4g3E4j433s3}0^0p3M4o3(4l450p3T4v3;4x4r040m3$4B4a3Z0m3-2-494f450m3^4N4e3=4Q404T4k444E0m472-1k2P2m2D2p0x1Y2u3I0z2L1`1h4,1i4*3:2U2l054=0Z2X4w1/0R0w0^0j0F0C0B3o0U4U4l56040t0l0W0F0l1I5c5e545g0G0B0A2d0l5o4Z1M0C0^0N3x4O3=0^0 0R0c0k5k5m0c3o5p1M0@040D0I5D5P3B0^1|0c0c0x5O5y0:5R0D5%4p0:0B0G0^4H4(5(015R5U4I4f0^1w0Z5K5l5n415W5^0^5T3%4C2=0^0A1?0W0A5,535Q665`4N5E3W0R572d5x5-2!0^0X6r6h0:0C0K0^2I6w693a0y0^0F1)0t5N635@5*6g6E6y0^0v6P2Z5/0^4G5=4~6N0^0Q6D6V5:4F0s6Z2T645R6%415d5@6W6+6U3I5_0M3x0U6 6?6s6o040j6q6=645g0L6(3I6z6B0w7b3=6G046I176L5?6s6O6M6s5A046T7q6x016^6Y6`3)6:7g3W7y6,7A3W7C776@6*4G7H1/6|6~707S785Y0!5u0d7O6i5S7Z5X046v7v6Q65046;2-717w797$7,6k2{067S7T5@0z0p0^030U2c1~0v6Y0U0y0G0)860H3d6,0U0O0G0X0c0n0U2I3d0U0k0c1=0U0H025i0f2*8e8g8i8k2O0C0U0V0c2P0G2g7R7{7:7+730G0j7D6a7(8R5z0^020n0l0f8U6R7t7?6^3#6-2W6/0^6}488L8L7U046c0w4=0n767n7w7p8}7+0d1,04020g0W0C8Z2P0x95978Z7?5_8K7{64738j0d7m6!7o8.9h8;8M2Z8O8Q7K6s5g7)7/647s8X9e9x7w6^8+527+5R8/4N9s9s8?8^8`8|9o8~667?928W96980f0L8j8{0K9c9$9f0^7^369P709j0^9l9n6.6#049N2{9=8=5@9v8#6t8T9G7+9D8Y8!a76)4s7G7*2Z9M9ra07|9y6b1?9T0F9.7#ag3I9Z949#8Z0t2P1?9,9F90ah9/aj9=9@049_ar9~9;ak8;9Rao1$9U9{9pasaEau93aC0f0 6K0w0#a#ar9:3g9Q5@5g0x98ar5+at3)8)4caY7BaG4d0J502Q4)b30J4_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 | 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)
|
# Tests(Groß-/Kleinschreibung wird nicht beachtet)(Ctrl+I)
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
(Esc)