Zeilenumbruch
Tag
wie definiere ich eine etwas, dass nach einem Zeilenumbruch aussieht, denn Zeilenumbruch ist kein Python-Befehl.
Meine Aufgabe besteht eigentlich darin, dass ich ein Programm schreiben soll, dass eine Art von Tannenbaum ausgibt. Aber das löse ich schon selbst, ich brazche allerdings Hilfe bei dem Zeilenumbruch.
Mfg
wie definiere ich eine etwas, dass nach einem Zeilenumbruch aussieht, denn Zeilenumbruch ist kein Python-Befehl.
Meine Aufgabe besteht eigentlich darin, dass ich ein Programm schreiben soll, dass eine Art von Tannenbaum ausgibt. Aber das löse ich schon selbst, ich brazche allerdings Hilfe bei dem Zeilenumbruch.
Mfg
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
öhm meinst du einfach
??
sonst ist der Zeilenumbruch ein \n im String -> 'test\ntest2'
Gruss
Code: Alles auswählen
print
sonst ist der Zeilenumbruch ein \n im String -> 'test\ntest2'
Gruss
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Noch ein wenig mehr info:
bei print wird immer ein Zeilenumbruch eingefügt:
Ausgabe:
Ausgabe:
Ausgabe:
bei print wird immer ein Zeilenumbruch eingefügt:
Code: Alles auswählen
for i in xrange(2):
print i
Wenn man das nicht haben will, kann man bei print ein Komma dranhängen:0
1
Code: Alles auswählen
for i in xrange(2):
print i,
Dabei wird allerdings immer ein Leerzeichen zwischen gehängen Wenn das auch nicht sein soll, muß man sys.stdout direkt "beschreiben":0 1
Code: Alles auswählen
import sys
for i in xrange(2):
sys.stdout.write( str(i) )
Wie man hier schon sehen kann, möchte stdout einen String haben und akzeptiert keine Zahlen oder was anderes...01
also hier mal mein ach so toller, eigendlich nicht vorzeigbarer, Code, der nicht funktioniert und ich nicht wweiß, warum"
Code: Alles auswählen
s="*"
while s<=15:
s=s+1
print s
print
if s==15:
print "Fertig"
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich werds jetzt nicht fertig machen (ist ja schließlich deine Aufgabe), aber das geht in deine Richtung:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
char = '*'
while len(char) <= 15:
print char
char += '*'
print "Fertig"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
hey danke, einen fertigen code hatte ich nicht erwartet. Naja das nächste Problem ist für mich also Leerzeichen zu erstellen, also praktisch einen Baum zu erstellen, der, zur Verdeutlichung, ganz so aussieht, wie ein Tannenbaum.
Ich hatte mir gedacht, dass man Leerzeichen so erstellen kann:
aber bei mir gibt der dann nur Zahlen aus.
mfg
Ich hatte mir gedacht, dass man Leerzeichen so erstellen kann:
Code: Alles auswählen
l = " "
mfg
hier ist also mein code, wie zu erwarten geht er aber nicht:
Edit (Leonidas): Code in Python-Tags gesetzt.
Code: Alles auswählen
s = '*'
l = " "
while len(s) <= 29:
print s
s += '**'
while len(l) <= 14:
print l
l - " "
print "Fertig"
]Edit (Leonidas): Code in Python-Tags gesetzt.
versteh ich nicht. Der code ist doch unverändert oder liege ich jetzt ganz falsch?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Der Code ist unverändert, jedoch ist er nicht mehr in |code| Tags, sondern in |python|-Tags, dadurch hast du Syntaxhighlighting.Mr hat geschrieben:versteh ich nicht. Der code ist doch unverändert oder liege ich jetzt ganz falsch?Edit (Leonidas): Code in Python-Tags gesetzt.
Okay, ich habe es in 9 Zeilen gelöst (mit Kommentaren sinds viel mehr), am Schluss kann ich die Lösung posten, aber ich denke es ist besser wenn du selbst drauf kommst, deswegen gebe ich dir erstmal paar Tipps.
1. Du musst dir klar werden was zu zuerst brauchst. Zuerstz brauchst du die anzahl von Sternen in einer Zeile. In der ersten Zeile ist ist es einer, in der zweiten Zeile sind es drei, in der dritten fünf usw. Also siehst du, dass es immer um Zwei mehr wird. Dazu gibt es eine Schleife in Python: for anzahl_sterne in xrange(1, 16, 2), wobei 1 die erste Zahl ist, 16 die höchste (wird nicht erreicht) und 2 der Schritt (ich gehe davon aus dass dein Baum maximal 15 Sterne lang sein darf).
2. Danach kannst du bestimmen, wieviel von der 15 Felder langen Zeile frei bleibt. Bei der ersten Zeile ist es 15 - 1 = 14, dann 15 - 3 = 12 usw.
So.. ich hoffe ich habe dich auch den Weg gebracht, fallst was kann ich noch Punkt drei folgen lassen, aber damit ist das eigentlich dann auch schon komplett gelöst.
Iopodx hat übrigens auch gerade seinen Christbaum-Generator fertiggeschrieben und ist einen anderen Weg gegangen
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
1. hab ich doch damit schon gelöst gehabt?!?
das, denke ich zumindest, gibt einen Baum aus, ohne jegliches Leerzeichen.
und 2. hab ich noch nicht so ganz aber ich schau mal.
mfg
Code: Alles auswählen
while len(s) <= 29:
print s
s += '**'
und 2. hab ich noch nicht so ganz aber ich schau mal.
mfg
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es ist halt nur so, dass es mit einer for-Schleife meines Erachtens wesentlich effizienter ist, da man immer die genaue Anzahl von belegten (Sternen) und somit auch die unbelegten Stellen (Freizeichen) hat. Du kannst es natürlich mit einer while-Schleife machen, jedoch ist dies eigentlich unnötig, da die for-Schleife für diese Aufgabe viel passender ist.
Außerdem muss man sich manchmal vom geschriebenen Code losreißen, etwas refaktorisieren, dann kann man das Problem oft auf eine bessere Weise lösen.
Das Programm lässt sich sogar in einer Zeile schreiben *g*.. das wäre praktsch wieder ein Kandidat für unseren Einzeiler-Thread.. oder für Obfuscated Python
Außerdem muss man sich manchmal vom geschriebenen Code losreißen, etwas refaktorisieren, dann kann man das Problem oft auf eine bessere Weise lösen.
Das Programm lässt sich sogar in einer Zeile schreiben *g*.. das wäre praktsch wieder ein Kandidat für unseren Einzeiler-Thread.. oder für Obfuscated Python
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
also ich habe das aber, naja, wi gehwohnt geht das nicht und ich keine Ahnung, wieso
Edit (Leonidas): Code in Python Tags gesetzt.
Code: Alles auswählen
for s in range (1,30,2):
print s
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, ich habe in der einen Zeile nur eine for-Schleife und eine einzige Print-AnweisungMr hat geschrieben:ja wenn man das alles mit Kommata trennt geht das.
Also bei mir geht das ohne Probleme, was ist denn bei dir die Fehlermeldung?Mr hat geschrieben:also ich habe das aber, naja, wi gehwohnt geht das nicht und ich keine Ahnung, wieso
Code: Alles auswählen
for s in range (1,30,2): print s
Code: Alles auswählen
In [1]: for s in xrange(1, 30, 2):
...: print s
...:
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
wieso eigentlich xrange. Warum nicht einfach nur range, wo liegt n da der Unterschied?
Zu dem Programm: Die Zahlen krieg ich auch manchmal hin allerdings nicht immer, aber wie sterne erzeugen? Ich hab mir zwar gedacht, dass ich s = "*" schreiben könnte aber dann geht nichts mehr.
Zu dem Programm: Die Zahlen krieg ich auch manchmal hin allerdings nicht immer, aber wie sterne erzeugen? Ich hab mir zwar gedacht, dass ich s = "*" schreiben könnte aber dann geht nichts mehr.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
s. http://www.python-forum.de/viewtopic.php?p=12053#12053Mr hat geschrieben:wieso eigentlich xrange. Warum nicht einfach nur range, wo liegt n da der Unterschied?
Wenn ich mal einen Tipp geben darf.
Alles was Du brauchst ist xrange und die string Function/Methode center()
MfG
Andreas
Edit:
Aber ich muss zugeben dass mein Baum keinen Stamm hat
Alles was Du brauchst ist xrange und die string Function/Methode center()
MfG
Andreas
Edit:
Ich in dreiOkay, ich habe es in 9 Zeilen
Aber ich muss zugeben dass mein Baum keinen Stamm hat
also das macht mich echt fertig. Ich lerne das gerfade, wiher soll ich denn das kennen, wenn ich noch nicht mal den einfachen Baum machen kann?Anonymous hat geschrieben:Wenn ich mal einen Tipp geben darf.
Alles was Du brauchst ist xrange und die string Function/Methode center()
MfG
Andreas
Edit:Ich in dreiOkay, ich habe es in 9 Zeilen
Aber ich muss zugeben dass mein Baum keinen Stamm hat
Aber wir wollen mal nicht von der eigendlichen Aufgabe abweichen. Ja, ok, das gibt zahlen aus, aber ich brauch doch sternchen: mit s = "*" geht dasnicht