ich versuche die letzten paar stunden schon verzweifelt diese aufgabe zu lösen. ich weiß, ich will auch keine ganze lösung (wäre natürlich schön, wenn doch), aber bitte ein paar tipps (am besten für den anfang des skripts!)...ich bin über jeden tipp sehr dankbar!
ich würde nicht auf die idee kommen, euch mit sowas zu belästigen, aber ich bin hier am verzweifeln! ein paar tipps würden mir bestimmt auf die sprünge helfen. danke!
Schreibt eine Funktion
pad(aString, width) -> str,
die einen String aString und eine ganze Zahl width nimmt und einen String zurückgibt, der mindestens width Zeichen lang ist. Ist aString kürzer als width, soll der resultierende String von vorne mit Leerzeichen "aufgefüllt" werden.
Das soll dann so aussehen:
>>> pad("ab", 2)
'ab'
>>> pad("abc", 2)
'abc'
>>> pad("abc", 5)
' abc'
Hinweise: Ihr müsst offenbar so viele Leerzeichen vorne dranhängen, wie width größer ist als len(aString). Erfreulicherweise gilt in python "any string"*n=="" für alle n<1.
anfängerfunktion mit string und int
-
- User
- Beiträge: 2
- Registriert: Sonntag 5. November 2006, 21:30
- Wohnort: Stuggi
Zuletzt geändert von bloodybeginner am Montag 6. November 2006, 00:15, insgesamt 1-mal geändert.
Erstmal hallo hier,
vielleicht so:
Ich halte nichts von den print Anweisungen direkt in der Funktion, deshalb wird der fertig formatierte String zurückgegeben. Ist aber Geschmackssache, kannst Du ja noch ändern.
Gruß, Whitie
vielleicht so:
Code: Alles auswählen
def pad(a_string, width):
diff = width - len(a_string)
if diff > 0:
return '%s%s' % (diff * ' ', a_string)
else:
return a_string
>>> print pad('abc', 5)
abc
>>> print pad('abc', 2)
abc
>>> print pad('abc', 10)
abc
>>>
Gruß, Whitie
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hallo bloodybeginner, willkommen im Forum,
Erstmal administratives: könntest du bitte deinen ersten Beitrag editieren und ihm einen sinnvollen Titel geben? Ansonsten ist die Antwort auf den Titel nur: "Ja"
Ich habe mal Whities Code gekürzt:
Meine Variante wäre aber:
Du siehst, sowas wie die Funktion pad() bietet Python schon mit .rjust().
Erstmal administratives: könntest du bitte deinen ersten Beitrag editieren und ihm einen sinnvollen Titel geben? Ansonsten ist die Antwort auf den Titel nur: "Ja"
Ich habe mal Whities Code gekürzt:
Code: Alles auswählen
In [1]: def pad(a_string, width):
...: diff = width - len(a_string)
...: return '%s%s' % (diff * ' ', a_string)
...:
In [2]: pad('ab', 2)
Out[2]: 'ab'
In [3]: pad('abc', 2)
Out[3]: 'abc'
In [4]: pad('abc', 5)
Out[4]: ' abc'
Code: Alles auswählen
In [9]: pad = lambda a_string, width: a_string.rjust(width)
In [10]: pad('ab', 2)
Out[10]: 'ab'
In [11]: pad('abc', 2)
Out[11]: 'abc'
In [12]: pad('abc', 5)
Out[12]: ' abc'
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ähem, das sieht von der Formulierung her irgendwie nach Hausaufgaben aus.
Naja, ich habe auch noch 'ne Variante:
Das ist das allererste mal, das ich den * an der Stelle mal benutzt habe. Ich wusste, irgendwann brauch' ich das mal.
Wenn man sich auf Zeichenketten beschränkt, kann man Leonidas Ansatz noch kürzen:
Naja, ich habe auch noch 'ne Variante:
Code: Alles auswählen
def pad(string, length):
return '%*s' % (length, string)
Wenn man sich auf Zeichenketten beschränkt, kann man Leonidas Ansatz noch kürzen:
Code: Alles auswählen
pad = str.rjust