Seite 1 von 1
Mit einem Einzeiler Muster erstellen
Verfasst: Mittwoch 3. Juni 2009, 16:54
von du_ne
Tag,
Ich bin neu in python, und dementsprechend auch im Forum.

Ich hätte auch gleich eine Frage, denn ich arbeite gerade ein Tutorial durch, und komme mit folgender Aufgabe nicht klar(Die Aufgabe war kein Muss, sondern als kleines Extra gedacht, ich wollte trotzdem wissen, wie sie zu lösen ist.)
btw möchte ich keine Komplettlösung, sondern Hinweise, oder Funktionsvorschläge.
Wer schafft den Einzeiler: erzeuge folgende Ausgabe
mit einem einzigen print-Befehl. Aber: du musst Variablen benutzen!
Das Bild hierzu:
http://img193.imageshack.us/img193/4541 ... aaaaav.png
Ich danke für jegliche Hilfe
du_ne
PS: Dies ist mein zweiter Tag mit Python(Mit einfachen Variablen kenne ich mich aus.)
Verfasst: Mittwoch 3. Juni 2009, 17:06
von Hyperion
Also ich habe ganz straight forward das zu bieten:
Code: Alles auswählen
In [1]: print "*******\n* *\n*******"
*******
* *
*******
oder ein wenig hübscher:
Code: Alles auswählen
In [4]: print "*"*7 + "\n* *\n" + "*"*7
*******
* *
*******
Ist die Aufgabe denn irgend wie noch präziser gestellt? Ansonsten ist's doch Unsinn!
Edit: Auch so ... mit Variablen ... was genau meint das? Variable Länge und Höhe der Box, oder was?
Verfasst: Mittwoch 3. Juni 2009, 17:15
von du_ne
Die Aufgabe wurde nur zur Übung gestellt, ohne tieferen Sinn.
Das
Kenne ich noch nicht. Ist das eine Variable? Wenn ja, wird sie normal wie alle anderen definiert? Danke jedoch für die Antwort.
Verfasst: Mittwoch 3. Juni 2009, 17:18
von Hyperion
Äh ... nee, das ist die Eingabeaufforderung von iPython:
http://ipython.scipy.org/moin/
Ist also eine Python-Shell. Ist hier recht beliebt, weil sie in vielem mächtiger ist, als die herkömmliche (Code-Completion, Highlighting, uvm). Hat also mit der Aufgabe nix zu tun! Alles nach dem ":" ist dann Code, darunter dann die Ausgabe.
Verfasst: Mittwoch 3. Juni 2009, 17:29
von du_ne
Ah, ich denke das mit iPython werde ich mir ein andernmal ansehen, wenn ich die Grundlagen vollens beherrsche. Das Rechteck funktioniert auch. Danke für die Hilfe.
Verfasst: Mittwoch 3. Juni 2009, 17:31
von Hyperion
du_ne hat geschrieben:Ah, ich denke das mit iPython werde ich mir ein andernmal ansehen, wenn ich die Grundlagen vollens beherrsche.
Naja, das kann man auch gut zum Lernen nehmen! Speziell am Anfang probiert man imho viel in der shell aus - oder wie machst Du das?
Das Rechteck funktioniert auch. Danke für die Hilfe.
Hm ... naja, hat mit Python eigentlich nix zu tun

(Das erste zumindest mal genau gar nichts!)
Verfasst: Mittwoch 3. Juni 2009, 17:37
von du_ne
Naja, das kann man auch gut zum Lernen nehmen!
Naja... Ich denke dann müsste ich wieder neuere Befehle mir aneignen, um die Scripte zum Laufen zu bekommen, ich vergleiche das gerade mit Tkinter(Wo man auch etwas includieren musste. :/)
Speziell am Anfang probiert man imho viel in der shell aus - oder wie machst Du das?
Einzelne kleinere Scripts mache ich in der Shell. Scripts mit mehreren Variablen in einer .py-Datei.
Hm ... naja, hat mit Python eigentlich nix zu tun Wink (Das erste zumindest mal genau gar nichts!)
Ich finde schon, dass die Übungen mein Verständnis von Malnehmen/Addieren von Strings erweitert haben. Im Tutorial war auch ein Dreieck dabei, wobei ich Anfangs einige Schwierigkeiten hatte, es später aber trotzdem geschafft habe.

Verfasst: Mittwoch 3. Juni 2009, 17:49
von Hyperion
du_ne hat geschrieben:
Naja... Ich denke dann müsste ich wieder neuere Befehle mir aneignen, um die Scripte zum Laufen zu bekommen, ich vergleiche das gerade mit Tkinter(Wo man auch etwas includieren musste. :/)
Man braucht da nix spezielles - funktioniert wie die normale Python-Shell! (kann eben
zusätzlich mehr!)
Verfasst: Mittwoch 3. Juni 2009, 17:55
von derdon
Code: Alles auswählen
print(('\n*' + ' ' * 5 + '*\n').join('*' * 7 for _ in xrange(2)))
Edit: und hier mit String-Formatting:
Code: Alles auswählen
print('\n*{0}*\n'.format(' ' * 5).join('*' * 7 for _ in xrange(2)))
Verfasst: Mittwoch 3. Juni 2009, 17:59
von du_ne
Hyperion:
Ich habe mir IPython gedownloaded, und werde mal die Doku dazu lesen.
Verfasst: Mittwoch 3. Juni 2009, 18:03
von Hyperion
Und noch besser:
Code: Alles auswählen
print((1*('\n*' + ' ' * 5 + '*')+'\n').join('*' * 7 for _ in xrange(2)))
So, statt der 1 und der 7 braucht es nun noch eine Variable, dann kann man die Box so gestalten, wie man lustig ist

Verfasst: Mittwoch 3. Juni 2009, 18:12
von BlackJack
@derdon: Da kann man aber noch ein bisschen Luft rauslassen:
Wobei man ohne das `join()` noch ein bisschen Sparen kann:
Edit: Mit Variablen:
Code: Alles auswählen
h=5;b=10;print'*'*b+'\n'+('*'+' '*(b-2)+'*\n')*(h-2)+'*'*b