Drei Chinesen mit dem Kontrabass in Python


Damian_Hiller

Grünschnabel
Hallo, ich möchte das Lied "Drei Chinesen mit dem Kontrabass" selbst erzeugen für die Vokale. Also die erste Strophe ist fest definiert, aber die anderen Strophen will ich selbst generieren lassen.
Ich habe einen String definiert (Die erste Strophe) und ich habe eine Liste mit Vokalen erstellt. Wie kann man die Liste mit dem String vergleichen lassen, Vokale finden und sie in einer Strophe mit "A" ersetzen, in der anderen Strophe mit "E", usw. ?
 

Technipion

Erfahrenes Mitglied
Hallo Damian,
es ist eine nette Idee, die "Vokalstrophen" aus der ersten Strophe zu erzeugen. Allerdings unterscheidet sich das Pattern der letzten 5 Strophen so stark von der ersten, dass ich das aufteilen würde.
Ich habe mal den Songtext unter http://www.songtexte.com/songtext/rolf-zuckowski/drei-chinesen-mit-dem-kontrabass-1bc20144.html nachgeschlagen. Du hast z.B. in der ersten Strophe das Wort "Drei", welches ab der zweiten Strophe jedoch zu "Dro", "Dri", "Dra", etc. wird, also mit Vokabeln finden und ersetzen wird das nichts.
Ich habe schnell ein Beispielprogramm geschrieben, das für die "Vokalstrophen" eine Stringvorlage verwendet. Falls dir das Thema noch nicht so geläufig ist, hier eine gute Einführung: https://pyformat.info/.

Und hier mein Programmcode (in einen Spoiler gepackt falls du es lieber noch einmal selbst versuchen möchtest):
Python:
""" kontrabass.py
    Erzeuge die Strophen des bekannten Kinderliedes 'Drei Chinesen mit dem Kontrabass'.
"""


def main():

    ErsteStrophe = ('Drei Chinesen mit dem Kontrabass\n'
                    'Saßen auf der Straße und erzählten sich was.\n'
                    'Da kam ein Polizist: "Ja was ist denn das?"\n'
                    'Drei Chinesen mit dem Kontrabass.')

    Strophenvorlage = ('Dr{v} Ch{v}n{v}s{v}n m{v}t d{v}m K{v}ntr{v}b{v}ss\n'
                       'S{v}ßen {v}f d{v}r Str{v}ße {v}nd {v}rz{v}hlt{v}n s{v}ch w{v}s.\n'
                       'D{v} k{v}m {v}in P{v}l{v}z{v}st: "J{v} w{v}s {v}s d{v}nn d{v}s?"\n'
                       'Dr{v} Ch{v}n{v}s{v}n m{v}t d{v}m K{v}ntr{v}b{v}ss.')

    Vokale = ('o', 'i', 'a', 'e', 'u')

    Absatz = '\n' * 3

    """ Gib die Strophen in der Konsole aus: """

    Strophen =  [ErsteStrophe + Absatz]
    Strophen += [Strophenvorlage.format(v=vokal) + Absatz for vokal in Vokale]

    print(''.join(Strophen))

    return 0


if __name__=='__main__':
    main()

Falls du noch Fragen hast melde dich.
Gruß Technipion