Mit einem Einzeiler Muster erstellen

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
Benutzeravatar
du_ne
User
Beiträge: 11
Registriert: Mittwoch 3. Juni 2009, 11:12
Kontaktdaten:

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.)
Ich bin neu hier.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?
Benutzeravatar
du_ne
User
Beiträge: 11
Registriert: Mittwoch 3. Juni 2009, 11:12
Kontaktdaten:

Die Aufgabe wurde nur zur Übung gestellt, ohne tieferen Sinn. ;)

Das

Code: Alles auswählen

In [1]:
Kenne ich noch nicht. Ist das eine Variable? Wenn ja, wird sie normal wie alle anderen definiert? Danke jedoch für die Antwort.
Ich bin neu hier.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ä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.
Benutzeravatar
du_ne
User
Beiträge: 11
Registriert: Mittwoch 3. Juni 2009, 11:12
Kontaktdaten:

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.
Ich bin neu hier.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!)
Benutzeravatar
du_ne
User
Beiträge: 11
Registriert: Mittwoch 3. Juni 2009, 11:12
Kontaktdaten:

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. :)
Ich bin neu hier.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!)
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

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)))
Zuletzt geändert von derdon am Mittwoch 3. Juni 2009, 18:03, insgesamt 1-mal geändert.
Benutzeravatar
du_ne
User
Beiträge: 11
Registriert: Mittwoch 3. Juni 2009, 11:12
Kontaktdaten:

Hyperion:
Ich habe mir IPython gedownloaded, und werde mal die Doku dazu lesen.
Ich bin neu hier.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
BlackJack

@derdon: Da kann man aber noch ein bisschen Luft rauslassen:

Code: Alles auswählen

print('\n*'+' '*5+'*\n').join(['*'*7]*2)
Wobei man ohne das `join()` noch ein bisschen Sparen kann:

Code: Alles auswählen

print'*'*7+'\n*'+' '*5+'*\n'+'*'*7
Edit: Mit Variablen:

Code: Alles auswählen

h=5;b=10;print'*'*b+'\n'+('*'+' '*(b-2)+'*\n')*(h-2)+'*'*b
Antworten