2012-03-29 4 views
0

Ich versuche, eine Funktion zu schreiben, die eine Zeichenfolge zurückgibt, die die eingegebene Zeichenfolge mit doppelten Zeichen ist. Zum Beispiel, wenn die Eingabe 'Hallo' war, dann sollte die Funktion 'hheelllloo' zurückgeben. Ich habe es versucht, aber ich finde keine Möglichkeit, die Funktion zu schreiben. Jede Hilfe würde sehr geschätzt werden - Danke.Wie schreibt man eine Funktion in Python, die eine Zeichenkette annimmt und eine neue Zeichenkette zurückgibt, die die ursprüngliche Zeichenkette mit allen wiederholten Zeichen ist?

+3

Können Sie was Sie bisher versucht haben? Wir können versuchen, das zu korrigieren. – Shoban

Antwort

3
s = 'hello' 
''.join(c+c for c in s) 

# returns 'hheelllloo' 
5

Mit einem einfachen Generator:

>>> s = 'hello' 
>>> ''.join(c * 2 for c in s) 
'hheelllloo' 
+1

Ich denke, das ist kein Listenverständnis, sondern ein Generatorausdruck. – moooeeeep

+0

@moooeeeep zustimmen. –

4
def repeatChars(text, numOfRepeat): 
    ans = '' 
    for c in text: 
     ans += c * numOfRepeat 
    return ans 

zu benutzen:
repeatChars ('hallo', 2)
output: 'hheelllloo'

Da Strings unveränderlich sind, ist es keine gute Idee zu concate nieren sie zusammen, wie in der repeatChars-Methode gesehen. Es ist in Ordnung, wenn der Text, den du manipulierst, eine kurze Länge wie 'Hallo' hat, aber wenn du 'superflagilisticexpialidocious' (oder längere Strings) übergibst ... Du bekommst den Punkt. Als Alternative habe ich meinen vorherigen Code mit @Roman Bodnarchuks Code verschmolzen.

Alternative Methode:

def repeatChars(text, numOfRepeat): 
    return ''.join([c * numOfRepeat for c in text]) 

Warum? Lesen Sie dazu: Efficient String Concatenation in Python

1
>>> s = "hello" 
>>> "".join(map(str.__add__, s, s)) 
'hheelllloo' 
1
def doublechar(s): 
    if s: 
     return s[0] + s[0] + doublechar(s[1:]) 
    else: 
     return "" 
+0

Schöne Verwendung von beiden Rekursionen, und warum Rekursion zu verschwenden ist, um in realen Problemen in Python verwendet werden. Um zu lernen, wie es funktioniert, passt es jedoch. – jsbueno

Verwandte Themen