Zeilenumbruch

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 5. September 2005, 18:59

Mr hat geschrieben:ja wenn man das alles mit Kommata trennt geht das.
Nein, ich habe in der einen Zeile nur eine for-Schleife und eine einzige Print-Anweisung :D
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
Also bei mir geht das ohne Probleme, was ist denn bei dir die Fehlermeldung?

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 Modvoice
Mr

Dienstag 6. September 2005, 12:43

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.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 6. September 2005, 13:18

Mr hat geschrieben:wieso eigentlich xrange. Warum nicht einfach nur range, wo liegt n da der Unterschied?
s. http://www.python-forum.de/viewtopic.php?p=12053#12053

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Dienstag 6. September 2005, 13:26

Wenn ich mal einen Tipp geben darf.
Alles was Du brauchst ist xrange und die string Function/Methode center()

MfG
Andreas

Edit:
Okay, ich habe es in 9 Zeilen
Ich in drei :mrgreen:
Aber ich muss zugeben dass mein Baum keinen Stamm hat ;)
Gast

Dienstag 6. September 2005, 15:26

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:
Okay, ich habe es in 9 Zeilen
Ich in drei :mrgreen:
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?

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 6. September 2005, 15:47

Hi!

Das wurde Dir schon gezeigt (von jens), aber ich zeigs nochmal, sonst wird das ein Endlosbeitrag, ohne dass was weitergeht ;)

Code: Alles auswählen

for i in range(1,20,2):
    print "*" * i
Jetzt nich die Leerzeichen dazumachen, und fertig :)

PS: Meine Lösung ist auch ein Einzeiler (46 Zeichen), auch ohne Stamm.

Gruß, mawe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 6. September 2005, 15:51

Leonidas hat geschrieben: das wäre praktsch wieder ein Kandidat für unseren Einzeiler-Thread
Wir haben sowas? Wo?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 6. September 2005, 16:02

Öhm, Shame on me, ich kannte .center() noch nicht!

Aber mit .center() komme ich auf 2 Zeilen, mit Stamm auf 3, und aus dem Zweizeiler kann man auch noch einen lesbaren Einzeiler machen :)

Öhm, ich dachte wir hätten so einen Thread.. meine einen gesehen zu haben. Aber ich kann gerne einen "Obfuscated Python" Thread anlegen :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Dienstag 6. September 2005, 22:45

mawe hat geschrieben:PS: Meine Lösung ist auch ein Einzeiler (46 Zeichen), auch ohne Stamm.
Habe auch einen Einzeiler ohne Stamm, allerdings mit 79 Zeichen. Es sind aber auch immer Leerzeichen zwischen Operatoren -- das ganze soll ja lesbar bleiben. :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 6. September 2005, 23:08

BlackJack hat geschrieben:
mawe hat geschrieben:PS: Meine Lösung ist auch ein Einzeiler (46 Zeichen), auch ohne Stamm.
Habe auch einen Einzeiler ohne Stamm, allerdings mit 79 Zeichen. Es sind aber auch immer Leerzeichen zwischen Operatoren -- das ganze soll ja lesbar bleiben. :wink:
Ich liege dazwischen mit 66 Zeichen, auch mit Leerzeichen und so Sachen wie 15 + 1 damit es einfacher zu lesen und verstehen ist :)

Edit: Hier noch schnell ein Programm, dass alle Leerzeichen frisst und ausgibt wieviele Zeichen übrig geblieben sind:

Code: Alles auswählen

code = raw_input('Generatorcode eingeben: ')
justcode = code.replace(' ', '')
print r"Dein Code ist %d \S-Zeichen lang." % len(justcode)
Ich komme damit nach etwas Optimierung auf 44 (Nicht-Leer-)Zeichen. ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 7. September 2005, 05:28

Leonidas hat geschrieben: Edit: Hier noch schnell ein Programm, dass alle Leerzeichen frisst und ausgibt wieviele Zeichen übrig geblieben sind
TIMTOWTDI :)

Code: Alles auswählen

code = raw_input('Code eingeben: ')
print "Der Code ist %d Zeichen lang." % (len(code) - code.count(" "))
Mr

Mittwoch 7. September 2005, 15:19

bin ich der Einziege, der das nicht hinkriegt? Ich bin echt kein Programmiergenie!
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 7. September 2005, 15:43

Mr hat geschrieben: bin ich der Einziege, der das nicht hinkriegt?
Ja :) Kleiner Scherz ;)

Von Andreas hast Du den Tipp mit center() bekommen, das macht eigentlich schon die ganze Arbeit. Hier mal ein Beispiel:

Code: Alles auswählen

>>> from string import center
>>> print center("a", 3)
 a
>>> print "a"
a
print center("a", 3) gibt also einen String mit Länge 3 aus, wobei das a in der Mitte steht (zentriert ;)), der Rest sind Leerzeichen.
Ok. Von jens wissen wir, dass man mit "*" * x das Zeichen "*" x-mal ausgeben lassen kann. Verbinden wir gleich mal unsere neu erworbenen Kenntnisse:

Code: Alles auswählen

>>> def baum():
...     print center("*" * 1, 5)
...     print center("*" * 3, 5)
...     print center("*" * 5, 5)
...
>>> baum()
  *
 ***
*****
Hui! Das sieht ja schon fast aus wie ein Baum :) Statt hunderttausendmal print, nimmst Du einfach die for-Schleife die wir Dir schon einige Male gezeigt haben, fertig.

Gruß, mawe
BlackJack

Mittwoch 7. September 2005, 22:00

Leonidas hat geschrieben:Edit: Hier noch schnell ein Programm, dass alle Leerzeichen frisst und ausgibt wieviele Zeichen übrig geblieben sind:

Code: Alles auswählen

code = raw_input('Generatorcode eingeben: ')
justcode = code.replace(' ', '')
print r"Dein Code ist %d \S-Zeichen lang." % len(justcode)
Ich komme damit nach etwas Optimierung auf 44 (Nicht-Leer-)Zeichen. ;)
Wenn Du es dir mal nicht ein wenig zu einfach machst: Du hast doch sicher auch eine Zeichenkette mit einem einzelnen Leerzeichen drin, das mitgezählt werden sollte. Oder hast Du eine Lösung mit `center()`? :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 7. September 2005, 22:07

BlackJack hat geschrieben:Wenn Du es dir mal nicht ein wenig zu einfach machst:
Ich liebe es, es mir so einfach wie möglich zu machen *g*
BlackJack hat geschrieben:Du hast doch sicher auch eine Zeichenkette mit einem einzelnen Leerzeichen drin, das mitgezählt werden sollte. Oder hast Du eine Lösung mit `center()`? :wink:
Ich hatte zuerst eine Lösung mit ' ' aber als ich von .center() erfahren habe, habe ich entschlossen center zu nehmen, ist ja wirklich besser, da habt ihr recht.

Das einzige was ich meinem 44 Zeichen Programm vorwerfen könnte ist, dass es ganz ohne Leerzeichen nicht auskommt, denn Python versteht foriinrange(...) nicht wirklich gut ;) Ein lesbares, verstädliches Programm mit Leerzeichen zwischen den Operatoren ist bei mir 58 Zeichen lang. Ich bin ja mal gespannt auf die Auflösung, der Thread macht viel Spaß! Wir sollten so lustige Sachen öfter machen :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten