Zum Inhalt

Zeichenkette

Zeichenketten sind uns schon ein paar Male begegnet. Zeichenketten benötigen wir um einzelne oder mehrere Buchstaben zu speichern. Z.B. um die Stiftfarbe der Schildkröte zu setzen: setPenColor("red"). "red" ist dabei die Zeichenkette. Man nenn die so, weil solche Wörter/Texte im Rechner als eine Folge von einzelnen Zeichen abgespeichert werden, technisch gesehen sind sie fast wie ein Array, das die einzelnen Zeichen als Elemente beinhaltet, darum eine Verkettung von Zeichen.

In Python hat eine Zeichenkette den (Daten-)typ str.

Beispiel Operationen mit Zeichenketten

Wie bei einem Array, können wir über die eckigen Klammern [ ] auf ein einzelnes Zeichen zugreifen.

Mit der len() Funktion erhalten wir die Länge einer Zeichenkette.

Mit dem Additions-Operator + können wir zwei Zeichenketten aneinander hängen.

###(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.

Aufgaben 1

Letzter Buchstabe

Question

Schreibe eine Funktion mit dem Namen letzterBuchstabe, welche eine Zeichenkette als Parameter erhält und als Rückgabewert immer den letzten Buchstabe davon zurückgibt.

###(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.
Verbleibende Versuche : 5/5

.128013d/Bn2Lc[oysvf]krelö u-tm1bipg):za=(h050b0r0x0H0B0s0l0u0h0s0H0l0l0I010x0B0C010406050l0v0y0y0H0q0k040g0t0,0e0D050c0,0.0:0=0*0C0405130|160c130*0b0B0m0T0V0X0Z0K0B0D0K0s1k0K0x0(050O0A0s0r1f0W0Y011j1l1n1l0x1t1v1r0x0q140x0K0T0j0R0C0H0e0Z0f011x1h010n0Q0r0e0H0y0r1r0l1R0e1X1z1!1v1%1)0(0a0u0@0_0D0l0m0j0q0l0h1m0H0{0}1-140c1M291J1L1K1s0b1/0Z1n0e1$0j0l1r1c1e0U1y2j0B2l0e0j2q1r0C0q0r141,1S292F0e2E1-2i012x0q0/0s0(0z0|2I0)0+2L2s1Y2O2Q0(0f2U28172C292q2c0b1L2h2Z1z0h2y1*142.152,2X2G2)302^0M2K1S2M0p0(0M0n312J0u2 1.2?0Z0e0n0(1v0x0G0x0r0q0d0v230l1t0r3c353g1g1z0%040J3y3f2M0e0(0G0p3G2I2M3D0E0F3y060u3V3e3O3h0138042C0x0v0q0e3y3X2Y3B3i3K3M27303Y3/013D0i3N3.2t2N0A3l1$3}363Z3D3F3?2J3H3Z3J043L443A3 3Q3,4b3_0j0(0w4g2M0y0B2S4q460(0o3T0|332D2+4C0c2|2a2:0|2d4J0H1u4E2.0*4F0N0P0R04.
Lösung
1
2
def letzterBuchstabe(zk):
    return zk[len(zk) -1]

Buchstabe suchen

Question

Schreibe eine Funktion mit dem Namen sucheBuchstabe welche das Vorhandensein von einem einzelnen Zeichen in einer Zeichenkette überprüft, oder in anderen Worten: finde heraus, ob z.B. ein Buchstabe in einem Text vorkommt.

Erstelle dazu eine Funktion mit zwei Parametern:

  • text die Zeichenkette, in der wir suchen
  • b der zu suchende Buchstabe (auch eine Zeichenkette)

Wenn b in text enthalten ist, dann soll True zurückgegeben werden, andernfalls False. Dies sind sogenannte Boolsche Variablen, welche für Wahr und Falsch stehen.

###(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.
Verbleibende Versuche : 5/5

.128013d/Bnx52LcoysvfwFrkelö4 u3tm1bTipg):,a6=(h050b0t0A0L0F0u0m0x0j0u0L0m0m0N010A0F0G010406050m0y0B0B0L0r0l040i0v0;0e0H050c0;0?0^0`0/0G040518111b0c180/0b0F0n0Y0!0$0(0P0F0H0P0u1p0P0A0-050T0D0u0t1k0#0%011o1q1s1q0A1y1A1w0A0r190A0P0Y0k0W0G0L0e0(0h011C1m010o0V0t0e0L0B0t1w0m1W0e1$1E1)1A1,1.0-0a0x0|0~0H0m0n0k0r0m0j1r0L10121=190c1R2e1O1Q1P1x0b1@0(1s0e1+0k0m1w1h1j0Z1D2o0F2q0e0k2v1w0G0r0t191;1X2e2K0e2J1=2n012C0r0@0u0-0C112N0.0:2Q2x1%2T2V0-0h2Z2d0/2N2R2*0L2W040z2.2L2:2%1l1E2?2^0w2{2O2}1X2=252+040g342#2;2(30392@0-0M3d1c2H2e2v2h0b1Q2m3g0(0j2D1/193q1a3o2$2L3m3x0R2P373v010s0-0R0o3d0x3E1?3L0e0o0-0;280t0d0y280m1y0t3m3f2 0(0,040O3,2~2y2S0-0A0t0f0A3?3K3.013:0K3R3T2=0-0D3 3U413:0I0J3d060x4i3S3-3^3N040o25454l2)0-0j4r3@1%0k0p0-2A4w403^0e3`3|3~2c3F4s1E3:4f4K354j4S4k4x1E4n0F3Q4Q044U4E4t044v4!4$4b3^0k0-0N0N4D4-4(494!463L4O4g4T4 4,2R4n2H0A0y0r0e4?520j0-0E0r0y3+4!064h4j4{41530S56584+5l4m5b040q2@0m5g2!0/0c3H2I3n5E0c3B2f3s112i5L0L1z5G3q5B0R0T0V0m04.
Lösung
1
2
3
4
5
6
def sucheBuchstabe(text, b):
    for c in text:
        if c == b:
            return True

    return False

Vokale zählen

Question

Schreibe eine Funktion mit dem Namen zähleVokale mit einem Parameter text. Die Funktion soll zählen, wie viele Vokale in text vorhanden sind.

Erstelle dazu eine Funktion mit einem Parameter:

  • text die Zeichenkette, in der wir die Vokale suchen

###(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.
Verbleibende Versuche : 5/5

.128013d/n(x52Lc8oysvf70ä;wrkqe+lö4 u3tm1Vbipg):za6=9h050b0y0G0R0L0A0n0D0j0A0R0n0n0T010G0L0M010406050n0E0H0H0R0v0m040i0B0`0d0N050c0`0|0~100^0M04051e171h0c1e0^0b0L0o0(0*0,0.0V0L0N0V0A1v0V0G0?050Z0K0A0y1q0+0-011u1w1y1w0G1E1G1C0G0v1f0G0V0(0l0$0M0R0d0.0h011I1s010p0#0y0d0R0H0y1C0n1$0d1,1K1/1G1=1@0?0a0D12140N0n0o0l0v0n0j1x0R16181{1f0c1X2k1U1W1V1D0b1}0.1y0d1;0l0n1C1n1p0)1J2u0L2w0d0l2B1C0M0v0y1f1`1%2k2Q0d2P1{2t012I0v0}0A0?0D0I172T0@0_2W2D1-2Z2#2%0h2*2j0^2T2X2;0R2$040D0F2^2R2`2.1r1K2}2 0D0C332U351%2|2b2=300g3d2,2{2/383i2~2%0S3m3f1|3p0.392%0q3v2-3g3y2Y3r3a0k3D3o373z3I2%0U3L362E3H2!3s040I0r3S3F3N3V3j0I2)2i343E3x3%3A3Y2@3,3e3.3h3W2 0I323@3n3T2:3P3Y3c3 3w3`3)3l463_3G3;0I3u3 1i2N2k2B2n0b1W2s3G0j2J1^1f4l1g4j3.2S2j054r0X2V3$3U0w0?0X0p3m0D4c3:0p0?0Q0s1x0y0J0l0w2~0y3m4N3U0=040e4!3M3U0d0?0G0y0f0G4*411K4%0O0P3v060D4~4M4+2:0?1%0Q0R1x4L4#1-0l0?0T58511K0H0L0?3!464 504@0.4H040p2b5e5o2Y0?0K5u4F5a0u0?2G5z3/4,4.4:4=4h5f0.4%4{5l5m4 591K5q0L4K3 5n5A385x5F2X5b040T5d5Y5T0.0n1*04020x0E0l0G0t0R5?5^5`4?5!5N0?5P2+4}5R675.5w0454560A5%3G5)0z5,2+5Z5G1-5h0?3+65674~695V5X6k694-045y5-5M015)5+6f3%5:0?5}5_0t0y6L5 5L5v5O3v6s5R6y530d55576C5v6h6j2j6l2X6o3Y6U6s6u5D6w6*6X6A6H3U6F6)2R6+3G6J5=5@6M0L6P0t606m4^636/6V6t6D6z6c6#6x6D6(6`6n5i6.5Q686D6v7m5#6_6$616E5c6}2U6 6I5;760l76782X6T7q7d6^7h6e7x790.7l7R6,7o6q2_6V6;045W7u3z5$7V6g7A7(0171760E7I6R7y7L6r7d7e5v7g6Z6d7.7U7j5v6-7Y34667|7y5q2N0G0E0v0d7.7~6!7Q65174C2O4i8o0c4v2l4n172o8v0R1F8q4l0^8r0Y0!0$04.
Lösung
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def zähleVokale(text):

    anzahl = 0
    for b in text:
        if b == "a":
            anzahl += 1
        if b == "e":
            anzahl += 1
        if b == "i":
            anzahl += 1
        if b == "o":
            anzahl += 1
        if b == "u":
            anzahl += 1

    return anzahl

Weitere Aufgaben

Buchstaben Position suchen

Question

Schreibe eine Funktion mit dem Namen sucheBuchstabePosition welche das Vorhandensein von einem einzelnen Zeichen in einer Zeichenkette überprüft und die Position von diesem Buchstaben zurückgibt.

Erstelle dazu eine Funktion mit zwei Parametern:

  • text die Zeichenkette, in der wir suchen

  • b der zu suchende Buchstabe (auch eine Zeichenkette)

Wenn b in text enthalten ist, dann soll die Position vom ersten Auftreten in der Zeichenkette zurückgegeben werden, andernfalls \(-1\).

###(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.
Verbleibende Versuche : 5/5

.128013d/BnPx52Lc[oysvf7w]rkelö4 u-3tm1bipg):,a6=(h050b0w0E0O0I0x0o0A0k0x0O0o0o0Q010E0I0J010406050o0B0F0F0O0u0n040j0y0@0e0K050c0@0_0{0}0=0J04051b141e0c1b0=0b0I0p0#0%0)0+0S0I0K0S0x1s0S0E0:050W0H0x0w1n0(0*011r1t1v1t0E1B1D1z0E0u1c0E0S0#0m0Z0J0O0e0+0i011F1p010q0Y0w0e0O0F0w1z0o1Z0e1)1H1,1D1/1;0:0a0A0 110K0o0p0m0u0o0k1u0O13151^1c0c1U2h1R1T1S1A0b1`0+1v0e1.0m0o1z1k1m0$1G2r0I2t0e0m2y1z0J0u0w1c1@1!2h2N0e2M1^2q012F0u0`0x0:0G142Q0;0?2T2A1*2W2Y0:0i2$2g0=2Q2U2-0O2Z040D2;2O2?2*1o1H2_2{0z2~2R301!2^282.040h372(2@2+333c2`0:0P3g391_3j0+340:0r3g1f2K2h2y2k0b1T2p3s010k2G1=1c3B1d3z2)2O3x3I0U2S3a3G0v0:0U0q3g0A3P3r323t0q0:0@2b0w0d0B2b0o1B0w0f2v0I0-0m0e3x3i3)010/040R3 312B2V0:0E0w0g0E463V41430N3#3%2^0:0H4f3(48430L0M3p060A4x3$40483X040q284k4A2,0:0I4G471*0m0s4J3~2f2O4z4M330H0:0u1!0K0w4p2U43454S2R4l3G0e4X041}4%3G4)4?410e4a4c4e4+3U4q1*4s4t3p4y564U4g4B4J3!4 5851334|4d4_4r0:0l5j4I044K4 4-4h0:0t4L594N0:0Q0Q5w5f3t4n5n1H434u4 4w575M5s5a042K0E0B0u4R2%5e4m5p4v565O1*4C5R5T5V2g5X3G0m0:0C5G0+0F0I2!3p143S2L3y5}0c3M2i3D142l640O1C5 3B0=600V0X0Z04.
Lösung
1
2
3
4
5
6
7
def sucheBuchstabePosition(text, b):

    for i in range(len(text)):
        if text[i] == b:
            return i

    return -1

Wort suchen *

Question

*Anspruchsvoll

Schreibe eine Funktion welche das Vorhandensein einer Zeichenkette in einer anderen überprüft, oder in anderen Worten: finde heraus, ob z.B. ein Wort in einem Text vorkommt.

Erstelle dazu eine Funktion mit zwei Parametern:

  • text die Zeichenkette, in der wir suchen

  • s das zu suchende Wort (auch eine Zeichenkette)

Wenn s in text enthalten ist, dann soll True zurückgegeben werden, andernfalls False.

  • Die Funktion hat ein Parameter vom Typ Array

  • Hinweis: Verwende nicht das Schlüsselwort in, wir wollen die Funktionalität von in nachbauen.

###(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.
Verbleibende Versuche : 5/5

.128013d/n(Sx52ILc8[oysvf70äw]FrkWe+jlö4 u-!3tm1bTipg):,a6=9h050b0C0N0Y0S0F0q0I0l0F0Y0q0q0!010N0S0T010406050q0J0O0O0Y0z0p040k0G110d0U050c111315170 0T04051l1e1o0c1l0 0b0S0r0/0;0?0^0$0S0U0$0F1C0$0N0}050*0Q0F0C1x0=0@011B1D1F1D0N1L1N1J0N0z1m0N0$0/0o0-0T0Y0d0^0i011P1z010s0,0C0d0Y0O0C1J0q1-0d1?1R1_1N1|1~0}0a0I191b0U0q0r0o0z0q0l1E0Y1d1f221m0c1(2r1#1%1$1K0b240^1F0d1{0o0q1J1u1w0:1Q2B0S2D0d0o2I1J0T0z0C1m211.2r2X0d2W222A012P0z140F0}0I0P1e2!0~102%2K1@2*2,2.0i2;2q0 2!2(2{0Y2-040I0M2 2Y312^1y1R34360I0H3a2#3c1.332i2|370h3k2?322_3f3p352.0Z3t3m233w0^3g2.0t3C2@3n3F2)3y3h0m3K3v3e3G3P2.0#3S3d2L3O2+3z040P0u3Z3M3U3$3q0P2:2p3b3L3E3.3H3)2~3?3l3^3o3%360P393~3u3!2`3W3)3j463D413:3s4d403N3{0P3B4i3T3#4l3J4o483x420}0P3R4t3-4q4a0P3Y461p2U2r2I2u0b1%2z3N0l2Q1 1m4K1n4I3^2Z2q054Q0(2$4B1@0A0}0(0s3t0I4j3`0s0}112l0C0B2i0N3t4:3#0|040e4}4p2`0}0N0C0g4|4G541R500X4.4~55040q534u0^500V0W3C0I5s4/5c3G0}0F0v1c0C0R585a2=5u5m010o0}0!5g5v2)0Q5x1{5l4(5d0}525b5H0d565D5S3_4 0}0V5r5t5h3f5x5z0U0C0f0J4^5M5H5J045L465G5T3G5P04275$2(505W2=5-5w5j653N5o3C065t5 5%4)0}0s2i5_602)0}0S6p6k1R0o0w6s0d6u33620z1.5;6d3.676H4q5/5A5C596B3N5{0K6Q3`6M5;5?5^5~6a5I0}0D6U3#0O0S4x6K1@5o5q4d6h6i5,5N5Z045;0s0J0d0(6A6!5N5{5}5F6#0A0l0}0R0z0J0C5+6@6j2(4*046n0z6)5i0E7n6w6y042N7q610}6E5A6.5U517A6b5y5A6Y0$7e5X6q6:7f7g6^5Y0}0Q5@0$0q1L0C0j0d7H7J76735K7v6r6c7K6v5n0}0n7D7*7p7,660}0x7N7O7h4k7R7T7V0Y0Q7X0d6O5E2q7}3.747)6`576P7@6e7/7;6`6t725`6%8c0}7?695N507`6=7|6i776s4-8m6q6`7S2l81837Y867)5{0L75886#8E807W7Y7!7;506;2=6?8x6@8Q0}6|6~708L7(8C7-01780}0y350q7#308!8$5N7j0S8B7$7Q6{0C6}6 5R8g6I0}8Y308#5s8z042U0N0J0z71916q8;047b7d6g8{9f9h9j9l8P8}79048?0-8_3@0c4#2V4H9I0c4U2s4M1e2v9P821N4J1v2?9L0)0+0-04.
Lösung
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
def sucheWort(text, s):
    längeText = len(text)
    längeSuche = len(s)

    for i in range(längeText - längeSuche + 1):

        gefunden = True
        for j in range(längeSuche):
            buchstabeInSuche = s[j]
            buchstabeInText = text[i + j]

            if buchstabeInText != buchstabeInSuche:
                gefunden = False

        if gefunden:
            return True


    return False

Zeichenketten formatieren

Beispiel Zeichenketten formatieren

Zeichenketten können aus mehreren anderen Zeichenketten zusammengesetzt werden. Zahlen können auch an Zeichenketten gehängt werden, wenn sie zuvor in eine Zeichenkette umgewandelt werden.

###(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.