Übergabe Parameter an Funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SpyHRO65
User
Beiträge: 8
Registriert: Montag 22. April 2013, 15:59

Moin Moin,

ich habe da ein kleines Problem. Und zwar gelingt es mir nicht einen string an eine bereits definiert Funktion zu übergeben und ich weiß echt nicht woran es liegen könnte. Vielleicht kann mir jemand einen Denkanstoß geben!?

MfG

Spy

Code: Alles auswählen

# a)

##satz = input('geben Sie einen Satz an: ')
##buchstabe = input('geben Sie einen Buchstaben ein, welcher alle Vokale des Ausgangssatzes ersetzt: ') 
def erzeugeStrophe(y):
    kopie = ''

    for zeichen in satz:

        if zeichen not in 'aeiouäöü':
            kopie = kopie + zeichen
        else: kopie = kopie + buchstabe

    return kopie

# b)

satz = input('geben Sie einen Satz an: ')
 

kopie = ' '

vokale = 'aeiou'

for i in range(len(vokale)):
    
    buchstabe = vokale[i]

    x = erzeugeStrophe()

    print = (x)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Du hast eine Funktion erzeugeStrophe und definierst dort einen Parameter mit dem Namen y den du dann aber in der Funktion gar nicht verwendest. Beim Aufruf lässt du den Parameter dann komplett weg.

Der gesamte Code ist übrigens merkwürdig und ist nicht nur unpythonisch, sondern hat auch mit lauffähigem Code oder grundlegendem Verständnis von Python nicht viel zu tun.
SpyHRO65
User
Beiträge: 8
Registriert: Montag 22. April 2013, 15:59

Sorry, habe nicht vor hauptberuflicher Informatiker zu werden. Für meine Verhältnisse reicht mein Code aus...

Aber trotzdem Danke für die Antwort. Hat mir geholfen.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

SpyHRO65 hat geschrieben:Aber trotzdem Danke für die Antwort. Hat mir geholfen.
Dann nehme ich an, dass dein Ansatz jetzt etwa so aussieht:

Code: Alles auswählen

def replace_vowels(data, replacement_char):
    result = ''
    for char in data:
        if char.lower() in 'aeiouäöü':
            result += replacement_char
        else:
            result += char
    return result

for vowel in 'aeiou':
    print(replace_vowels('Ratatatouille', vowel))
BlackJack

@SpyHRO65: Das hat nichts mit Informatiker zu tun, auch wenn man nur hobbymässig selbst zu Werkzeug greift, sollte man doch zumindest so sorgfältig arbeiten, dass einem nicht alles beim kleinsten anhauchen um die Ohren fliegt.

Für Deine Verhältnisse reicht der Code nicht aus, es sei denn Dir ist nicht wichtig, dass der auch läuft und funktioniert. ;-) Sollten Deine Ansprüche bei „hauptsache es läuft, wie es aussieht ist egal” stehen bleiben, dann ist die Frage was Du vom Forum erwartest. Auf Dauer haben hier wahrscheinlich die wenigsten Lust kaputte Programme zu flicken oder so eine Haltung zu unterstützen.
SpyHRO65
User
Beiträge: 8
Registriert: Montag 22. April 2013, 15:59

@BlackJack: hier soll ja niemand meine Programme flicken oder meine Haltung unterstützen. ich habe ja nur gefragt ob mir jemand vielleicht nen anstoß geben könnte. und ich mache das nicht absichtlich, dass es komisch aussieht. ich kann es einfach nicht besser^^
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Es hat dich auch niemand dafür verspottet, dass du es nicht besser kannst. SOndern es wurde dir zum lernen gezeigt wie du es besser machen kannst. IMHO eigentlich ganz nett ;)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

SpyHRO65 hat geschrieben:@BlackJack: hier soll ja niemand meine Programme flicken oder meine Haltung unterstützen. ich habe ja nur gefragt ob mir jemand vielleicht nen anstoß geben könnte. und ich mache das nicht absichtlich, dass es komisch aussieht. ich kann es einfach nicht besser^^
Wir sind ja anfängerkompatibel geblieben. Wenn du mehr Erfahrung hättest, hätte ich dir eine andere Lösung vorgeschlagen.

Code: Alles auswählen

def replace_vowels(data, replacement_char):
    return ''.join((char, replacement_char)[char.lower() in 'aeiouäöü'] for char in data)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

/me hat geschrieben:

Code: Alles auswählen

def replace_vowels(data, replacement_char):
    return ''.join((char, replacement_char)[char.lower() in 'aeiouäöü'] for char in data)
Feines Ding :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

alternativ:

Code: Alles auswählen

def replace_vowels(data, replacement_char, vowels='aeiouäöü'):
    replace_char = dict(zip(vowels.lower()+vowels.upper(),
        replacement_char.lower()*len(vowels)+replacement_char.upper()*len(vowels))).get
    return ''.join(replace_char(char, char) for char in data)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

noch mal alternativ:

Code: Alles auswählen

def replace_vowel3(data, replacement_char):
    return ''.join(char if char.lower() not in 'aeiouäöü' else replacement_char for char in data)
Antworten