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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Mr

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

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

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])

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])

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

Ö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 (former) Modvoice
BlackJack

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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

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])

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

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Mr

ich hab das dann grad mal programmiert mit diesem Programmcode:

Code: Alles auswählen


for s in xrange (1,30,2):
    print "*" * s
mit diesem bild hier:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
entweder bin ich da nicht durchgestiegen oder das ist ganz einfach nicht das, was ich wollte, denn ich hatte mir da sonen beidseitiegen fertigen, ganzen Baum vorgestellt. Das mag zwar ne schriettlänge von 2 haben und mag auch die gewünschte zahl an sternen ausgeben und so aber ihc hatte mir das anders vorgestellt, oder unterliegt mir da schon wieder ein Fehler?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mr, du musst ja erstmal Leerzeichen vor den Sternen machen müssen. Sieh dir doch mal die Funktion .center() an, das ist genau das was dir noch fehlt (dann sieht deine Lösung fast genau aus wie meine).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mr hat geschrieben: entweder bin ich da nicht durchgestiegen oder das ist ganz einfach nicht das, was ich wollte, denn ich hatte mir da sonen beidseitiegen fertigen, ganzen Baum vorgestellt.
Du hast Dir meinen Post nicht wirklich angesehen, oder?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also ich hab nun eine Lösung, die Bäume in variable größe liefert.
baum( 7 ):

Code: Alles auswählen

   *   
  ***  
 ***** 
   *   
baum( 12 ):

Code: Alles auswählen

     *      
    ***     
   *****    
  *******   
 *********  
*********** 
    ***     
    ***     
baum( 30 ):

Code: Alles auswählen

              *               
             ***              
            *****             
           *******            
          *********           
         ***********          
        *************         
       ***************        
      *****************       
     *******************      
    *********************     
   ***********************    
  *************************   
 ***************************  
***************************** 
           *******            
           *******            
           *******            
           *******            
           *******            
           *******            

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Code: Alles auswählen

def baum(breite):
    for i in range(1, breite, 2):
        print ("*" * i).center(breite)
    
baum(20)
         *          
        ***         
       *****        
      *******       
     *********      
    ***********     
   *************    
  ***************   
 *****************  
******************* 
>>>
TUFKAB – the user formerly known as blackbird
Antworten