Ergebnisausgabe in Datei

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.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Dienstag 4. Dezember 2007, 10:35

mathi hat geschrieben:Am Ende möchte ich für print und write die gleiche Art verwenden, um besser kopieren zu können.
Kopieren ist immer doof ;P Nur Spaß... Naja, Print is'n Statement, write'ne Funktion. In Python 3000 wird's sich ändern :3
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 4. Dezember 2007, 10:36

:-)
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Dienstag 4. Dezember 2007, 11:44

in python 3000 wird doch print auch zur ner funktion... also

Code: Alles auswählen

print ("so geht das dann") 
#statt
print "so geht das jetz"
Jabber: tayce@jaim.at
BlackJack

Dienstag 4. Dezember 2007, 11:49

@mathi: OMG wie bist Du denn auf die Backticks gekommen? Die sollte man nicht verwenden. Sie sind leicht zu übersehen, in manchen Schriftarten sehen sie aus wie normale, einfache Anführungsstriche ('), und sie sind schon seit Ewigkeiten "deprecated". Sie bewirken das gleiche wie die `repr()`-Funktion. Allerdings kann man das auch mit Zeichenkettenformatierung hinbekommen:

Code: Alles auswählen

f.write("text=%r kn\n" % round(c, 3))
Letztendlich kann man das Runden aber auch mit '%.3f' als Platzhalter für die Formatierung machen. Die `round()`-Funktion bietet sich eher an, wenn man mit dem gerundeten Wert weiter rechnen möchte.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 4. Dezember 2007, 12:00

die Backticks habe ich aus einem Tutorial :oops:

also würde ich folgendermaßen schreiben:

Code: Alles auswählen

print('fcd= %0.2f N/mm^2' % fcd)

sichern.write('fcd=%0.2f N/mm^2\n' % fcd)

 # bzw.

sichern.write('fcd='+repr(fcd)+' N/mm^2\n')  # ohne Rundung

richtig?
BlackJack

Dienstag 4. Dezember 2007, 12:31

Bein ``print`` würde ich noch die Klammern weglassen.

Und das letzte kannst Du auch so schreiben:

Code: Alles auswählen

sichern.write('fcd=%r N/mm^2\n' % fcd)
Wobei man bei der `repr()`-Darstellung halt auch immer die Ungenauigkeiten von Fliesskommazahlen sieht. Ist in der Regel nicht so erwünscht.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 4. Dezember 2007, 13:11

Ich möchte bei "print" deshalb die Klammern lassen, weil Python 3000 ja nicht mehr print sondern print() kennen wird!


Falsch?
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Dienstag 4. Dezember 2007, 13:23

mathi hat geschrieben:Ich möchte bei "print" deshalb die Klammern lassen, weil Python 3000 ja nicht mehr print sondern print() kennen wird!


Falsch?
Bei Python3000 wird sich soviel ändern, das's sich nicht lohnt es schon jetzt zu tun. Also halte dich lieber an das jetzige, Software zum portieren wird es dann auch geben.
BlackJack

Dienstag 4. Dezember 2007, 13:24

@mathi: Wenn Du dann mehrere Ausgaben machen willst, geht das mit den Klammern nicht mehr, weil die dann ein Tupel erzeugen. In Python <3.0 ist ``print`` nun einmal eine Anweisung und keine Funktion. Klammern erwecken beim lesen nur einen falschen Eindruck.

Für die Umsetzung von Python 2.x nach Python 3.0 wird ein Skript geschrieben, dass möglichst viele Veränderungen automatisch macht und mit ``print`` kann das Programm umgehen. Von folgenden Varianten kannst Du nur die erste auch in Python 2.x in Klammern setzen, die anderen *müssen* weiterhin ohne Klammern geschrieben werden:

Code: Alles auswählen

print 'hallo'
print 'Mein Name ist', name, '.  Wie heisst Du?'
print >>error_log, 'warning:', reason
Wenn Du jetzt schon mit den Klammern anfängst, hast Du also einen Mix in alten Programmen ohne einen wirklichen Grund oder Mehrwert.
Antworten