Seite 1 von 1
Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 10:06
von SpyHRO65
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)
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 10:11
von /me
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.
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 10:32
von SpyHRO65
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.
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 11:04
von /me
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))
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 11:06
von 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.
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 11:37
von SpyHRO65
@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^^
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 12:53
von JonasR
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

Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 15:49
von /me
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)
Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 18:47
von Hyperion
/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

Re: Übergabe Parameter an Funktion
Verfasst: Mittwoch 3. Juli 2013, 23:13
von Sirius3
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)
Re: Übergabe Parameter an Funktion
Verfasst: Freitag 5. Juli 2013, 08:35
von /me
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)