Leerzeichen zwischen 2 variablen entfernen

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.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Leerzeichen zwischen 2 variablen entfernen

Beitragvon EnTeQuAk » Freitag 21. Juli 2006, 15:06

Hallo alle zusammen!

Ich bin gerade dabei ein wenig Python zu lernen.

Nun habe ich mein erstes kleines Script geschrieben:

Code: Alles auswählen

#!usr/bin/env python

# Summe der Zahlen von 1 bis 5
punkt = '.'
summe = 0
zaehler = 1
for i in [1, 2, 3, 4, 5]:
    summe = summe+i
    print zaehler, punkt, "Summe von 1 bis" ,i, ":" , summe
    zaehler += 1
print "Ende der Rechnung"


Leider wird immer das hier ausgegeben:

1 . Summe von 1 bis 1 : 1
[...]


Wie bekomme ich das Leerzeichen zwischen der 1 und den '.' bzw ':' weg? Also das da steht
1. Summe von 1 bis 1: 1


Ich freue mich über jegliche Hilfe ;)

MfG EnTeQuAk
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Beitragvon pr0stAta » Freitag 21. Juli 2006, 15:16

Um deinen Code aufzugreifen:

Code: Alles auswählen

punkt = '.'
summe = 0
zaehler = 1
for i in [1, 2, 3, 4, 5]:
    summe = summe+i
    print str(zaehler) + punkt, "Summe von 1 bis" ,i, ":" , summe
    zaehler += 1
print "Ende der Rechnung"
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Freitag 21. Juli 2006, 15:17

Hoi und willkommen im Forum,

muß zugeben, daß mich der Titel des Threads verwirrt hat: Da will jemand Leerzeichen zwischen Variablen entfernen?!? Aber was Du meinst ist ja nur, wie man die Ausgabe mit print gestalten kann.

Also das Komma bewirkt ja nur, daß print keinen Zeilenumbruch macht. Allerdings werden die übergebenen Argumente immer noch separiert.

Versuche mal folgendes:

Code: Alles auswählen

f = 3.1
d = 1
s = 'ein string'
print "Hier sehen wir eine Fliesskommazahl: %.1f und hier eine ganze Zahl %d" % (f,d)
print "Und hier wird ein String %s in einen anderen gefuegt und ausgegeben" % s


Näheres findest Du an dieser Stelle im Tutorial.
Gruß,
Christian

edit: Da war wohl jemand schneller und hat noch eine andere Möglichkeit gezeigt: Alles in Strings umwandeln und dann verketten ...
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Freitag 21. Juli 2006, 16:33

Hmm es scheint erstmal zu gehen ;)

Aber ich lass nicht locker!

So Also die Ausgabe

1.Summe von 1 bis 1 : 1
2.Summe von 1 bis 2 : 3
3.Summe von 1 bis 3 : 6
4.Summe von 1 bis 4 : 10
5.Summe von 1 bis 5 : 15
Ende der Rechnung

Haut erstmal hin.

Nun möchte ich vor dem Doppelpunkt das Leerzeichen wegbekommen.

Ich finde die Lösung mit dem

Code: Alles auswählen

[...]

str(zaehler) + punkt, "Summe von 1 bis" , i , ":" , summe

[...]

sehr gut.

Wo finde ich eine kleine Doku über das umwandeln mit diesem "str"?
Oder kann mir jmd die Funktionsweise etwas erklären weil so ganz sehe ich nicht durch. Ich denke das es nur die variable zaehler in einen String umwandelt. Aber so ganz stimmt das nicht oda? Und das mit dem Komma ok. Aber um Variablen zu verknüpfen muss ich doch das Komma nehmen oder?

Sorry wenn ich mich dumm anstelle aber ich seh net so ganz durch ;'(

MfG ChrissiG
Zuletzt geändert von EnTeQuAk am Freitag 21. Juli 2006, 16:39, insgesamt 1-mal geändert.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Freitag 21. Juli 2006, 16:38

Sorry für Dp ;)

Aber ich habs gefunden mit etwas rumprobieren und überlegen.

schaut euch das mal an:

Code: Alles auswählen

#!usr/bin/env python
# Summe der Zahlen von 1 bis 5
punkt = '.'
summe = 0
zaehler = 1
for i in [1, 2, 3, 4, 5]:
    summe = summe+i
    print str(zaehler)+str(punkt)+" Summe von 1 bis " + str(i)+ ":", summe
    zaehler += 1
print "Ende der Rechnung"


Das bringt die gewünschten Resultate.

Wie könnte ich das noch so etwas verbessern? So dass der Code evtl. "konformer" ist oder einfach kürzer?

Ich weiß net ob das so wichtig ist in so einem frühen Status wie ich bin aber ich denke an später mal zu denken ist immer gut ;)
Außerdem will ich etwas lernen ;)

MfG ChrissiG
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 21. Juli 2006, 17:33

Machs lieber mit Format-Strings, die sind schneller und universeller:

Code: Alles auswählen

#!/usr/bin/env python
# Summe der Zahlen von 1 bis 5
punkt = '.'
summe = 0
zaehler = 1
for i in range(1, 6):
    summe += i
    print "%s%s Summe von 1 bis %s: %s" % (zaehler, punkt, i, summe)
    zaehler += 1
print "Ende der Rechnung"


Alternativ gibts auch noch die eingebaute Funktion sum(), die auch wunderschön summieren kann.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Freitag 21. Juli 2006, 20:38

So ich habe das Script nun noch etwas verbessert ;) ich habe es etwas kürzer gemacht und den punkt nicht mehr in einer Variablen definiert und mit dem raw_input() etwas "peppiger" gemacht ;) so wird das bei mir in SPE länger angezeigt. (beim ausführen)

Es sieht nun so aus:

Code: Alles auswählen

#!usr/bin/env python
# Summe der Zahlen von 1 bis 5
summe = 0
zaehler = 1
for i in [1, 2, 3, 4, 5]:
    summe += i
    print "%s. Summe von 1 bis %s: %s" % (zaehler, i, summe)
    zaehler += 1
print "Ende der Rechnung"
raw_input("Mit Return beenden")


Nun bin ich schon mal sehr sehr zufrieden. Und nun die Frage an euch. Ist es ratsam sich erstmal mehrere Funktionen anzueignen oder gleich mit der Gestaltung des Scriptes anzufangen? Ich bin ja erstmal Anfänger und wie ihr seht noch nicht sehr weit.

Mir persönlich reichen erstmal Konsolenanwendungen aber später solls schon etwas grafisches sein.

Was empfehlt ihr mir? Wenn jetz schon mit den Grafischen Sachen anfangen womit, wie und wie am besten?

Hier erstmal nen großes Danke an die kleinen Helferlein im Forum, ich denke wir werden uns noch mal sehen ;(

MfG EnTeQuAk
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 21. Juli 2006, 21:00

ChrissiG hat geschrieben:

Code: Alles auswählen

#!usr/bin/env python
# Summe der Zahlen von 1 bis 5
summe = 0
zaehler = 1
for i in [1, 2, 3, 4, 5]:
    summe += i
    print "%s. Summe von 1 bis %s: %s" % (zaehler, i, summe)
    zaehler += 1
print "Ende der Rechnung"
raw_input("Mit Return beenden")

Ich finds nur schade, dass du meinen Range-Code nicht übernommen hast, ein Shebang immer noch falsch ist, kein Encoding angegeben ist (gut, das habe ich auch nicht gemacht, shame on me), und ein nerviges "Mit Return beenden" am Schluss kommt. In Python-Tags hast du das Programm auch nicht gesetzt, schade.

ChrissiG hat geschrieben:Ist es ratsam sich erstmal mehrere Funktionen anzueignen oder gleich mit der Gestaltung des Scriptes anzufangen?

Ich würd sagen - lern erstmal mit Funktionen zu Arbeiten, mit OOP usw. Das sind die Basics, die brauchst du danach immer wieder. Achja, und lerne deine Programme gut zu strukturieren - das hilft massiv, wenn die Programme größer werden.

ChrissiG hat geschrieben:Was empfehlt ihr mir? Wenn jetz schon mit den Grafischen Sachen anfangen womit, wie und wie am besten?

Blackbird und ich würden dir zu PyGTK raten, Gerold und Francesco zu wxPython. Das ist nicht zuletzt eine Geschmacksfrage und eine Frage was man genau für Anforderungen hat. Allerdings solltest du, und das ist wichtig, englisch halbwegs beherrschen: die Dokumentation (soweit vorhanden) ist in 99% aller Fälle auf Englisch. Aber bleib erstmal bei Konsolenprogrammen - da lernst du mehr, und auch Dinge die du bei grafischen Sachen sowieso brauchst.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Samstag 22. Juli 2006, 05:51

Ok das war zu viel ;)

Ich finds nur schade, dass du meinen Range-Code nicht übernommen hast,

Ich musste erstmal schnell mir aneignen was das genau macht ;) nun is es drinne im Code )genau wie du das angegeben hast)

ein Shebang immer noch falsch ist, kein Encoding angegeben ist (gut, das habe ich auch nicht gemacht, shame on me),


von beidem noch nie gehört... Ich werde mal die Doku weiter abarbeiten ;)

und ein nerviges "Mit Return beenden" am Schluss kommt. In Python-Tags hast du das Programm auch nicht gesetzt, schade.

Wie gesagt ansonsten wird bei mir die Konsole sofort geschlossen und auch für Programme unter Windows wurde es als Tipp angegeben (in meinem Buch). Gäbe es eine andere Möglichkeit das per Hand zu beenden? Oder das es "lange" stehen bleibt?(die Konsole ;) )

MfG EnTeQuAk
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 22. Juli 2006, 11:17

ChrissiG hat geschrieben:
ein Shebang immer noch falsch ist, kein Encoding angegeben ist (gut, das habe ich auch nicht gemacht, shame on me),


von beidem noch nie gehört... Ich werde mal die Doku weiter abarbeiten ;)

Ich meine das:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

Die erste Zweile ist der Shebang, also das Programm welches ausgeführt wird, wenn du es unter Linux direkt startest, das ist eine Raute, gefolgt von einem Ausrufezeichen und das wird von dem Kompletten Pfad zum Programm gefolgt. Du vergisst immer den ersten Slash / ("root") im Pfad. Ist aber auch nicht so wichtig.

ChrissiG hat geschrieben:
und ein nerviges "Mit Return beenden" am Schluss kommt. In Python-Tags hast du das Programm auch nicht gesetzt, schade.

Wie gesagt ansonsten wird bei mir die Konsole sofort geschlossen und auch für Programme unter Windows wurde es als Tipp angegeben (in meinem Buch). Gäbe es eine andere Möglichkeit das per Hand zu beenden? Oder das es "lange" stehen bleibt?(die Konsole ;) )

Das ist ein blöder Tipp. Die Konsole bleibt offen, in dem du sie schon vorher öffnest und das Programm nicht per Doppelklick startest sondern über die Konsole, wie im Wiki unter [wiki=FAQ#WieStarteIchSkripte]Wie starte ich Skripte?[/wiki] beschreiben ist. Ich habe quasi immer, sowohl unter Windows als auch unter Linux eine Konsole offen, eben genau für sowas.

Stell dir vor, alle Konsolenprogramme würden ein Enter am Schluss verlangen: dir eintippen, mit Enter beenden, cd eintippen, mit Enter beenden, usw. Da würdest du auf die dauer mehr Enter drücken als sinnvolle Dinge machen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Samstag 22. Juli 2006, 11:41

Leonidas hat geschrieben:
ChrissiG hat geschrieben:
ein Shebang immer noch falsch ist, kein Encoding angegeben ist (gut, das habe ich auch nicht gemacht, shame on me),


von beidem noch nie gehört... Ich werde mal die Doku weiter abarbeiten ;)

Ich meine das:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

Die erste Zweile ist der Shebang, also das Programm welches ausgeführt wird, wenn du es unter Linux direkt startest, das ist eine Raute, gefolgt von einem Ausrufezeichen und das wird von dem Kompletten Pfad zum Programm gefolgt. Du vergisst immer den ersten Slash / ("root") im Pfad. Ist aber auch nicht so wichtig.

Ahh ;) Das meinst du damit. Gut ok :D Werde es berücksichtigen, Danke!
ChrissiG hat geschrieben:
und ein nerviges "Mit Return beenden" am Schluss kommt. In Python-Tags hast du das Programm auch nicht gesetzt, schade.

Wie gesagt ansonsten wird bei mir die Konsole sofort geschlossen und auch für Programme unter Windows wurde es als Tipp angegeben (in meinem Buch). Gäbe es eine andere Möglichkeit das per Hand zu beenden? Oder das es "lange" stehen bleibt?(die Konsole ;) )

Das ist ein blöder Tipp. Die Konsole bleibt offen, in dem du sie schon vorher öffnest und das Programm nicht per Doppelklick startest sondern über die Konsole, wie im Wiki unter [wiki=FAQ#WieStarteIchSkripte]Wie starte ich Skripte?[/wiki] beschreiben ist. Ich habe quasi immer, sowohl unter Windows als auch unter Linux eine Konsole offen, eben genau für sowas.

Stell dir vor, alle Konsolenprogramme würden ein Enter am Schluss verlangen: dir eintippen, mit Enter beenden, cd eintippen, mit Enter beenden, usw. Da würdest du auf die dauer mehr Enter drücken als sinnvolle Dinge machen.


Hmm Stimmt schon, habe ich mir auch schon gedacht. ABER es gibt auch Personen (zumindest mein Daddy der immer alles auch Teste möchte) die einfach zu faul sind die Konsole zu öfnnen (egal ob win oda Linux).
Ich verstehe dich und ich verstehe die (zwar net ganz aber na ja). Gäbe es noch eine andere Möglichkeit? Wenn net is auch net das Ding :D

MfG ChrissiG
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 22. Juli 2006, 11:53

ChrissiG hat geschrieben:Gäbe es noch eine andere Möglichkeit?

Hmm, du kannst versuchen, ob sys.argv beim Aufruf per Klick oder beim shellaufruf anders aussieht, aber ich genke nicht dass du damit sonderlich viel erfolg haben willst. Bei Windows kannst du eine BAT-Datei schrieben, die dein Programm aufruft und danach pause startet und damit die Konsole offen hält - das scheint wohl die beste Idee zu sein.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Samstag 22. Juli 2006, 15:07

Ok das is ne Idee ;) Ein glück das ich damals auch Pascal in der Schule gelernt habe ;) ab an die *.bat :D :D


Also bin hierhin...

MfG EnTeQuAk

Wer ist online?

Mitglieder in diesem Forum: Mephisto