sprünge?

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:

Mittwoch 28. November 2007, 09:14

Ist nicht gerade Pythonspezifisch, eher Editorspezifisch. Bei IDLE muss man bspw. nur einen Block markieren und auf Tabulator drücken, schon wird der Block eingerückt.

(Für deinen Fall brauchst du übrigens eher eine while schleife, in solchem Stil:

Code: Alles auswählen

while True:
    <operationen>
    foo = raw_input("Weiterrechnen[J/n]? ")
    if foo.lower() == "n":
        break
Oder hab ich dich falsch verstanden?)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mittwoch 28. November 2007, 09:19

mathi hat geschrieben:muß ich jetzt wirklich die 30 Zeilen die ich schon geschrieben habe händisch einrücken um die blöcke zu definieren [...] oder gibt es einen automatismus?
Das haengt von deinem Editor ab. In Emacs kann man einen ausgewaehlten Bereich nach links/rechts verschieben: py-shift-region-right bzw. C-c > (und entsprechend fuer die andere Richtung).

Ganz automatisch kann so etwas natuerlich nicht gehen, da Bloecke ja ein wichtiges Syntax-Element darstellen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
BlackJack

Mittwoch 28. November 2007, 09:26

Und ich kann mir diesen Link nicht verkneifen: http://if-schleife.de/

Das scheint jemandem sehr wichtig zu sein. :-)

@mathi: Das sieht nach einer "Übersetzung" eines BASIC-Programms nach Python aus. Wenn Du damit fertig bist, solltest Du Python etwas intensiver lernen und es dann noch einmal überarbeiten. Was bei einer 1:1 Umsetzung heraus kommt dürfte nämlich kein schöner Python-Code werden.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 09:33

vielen Dank für die Hinweise, Ratschläge.

Ich wollte halt damit anfangen und mich so langsam in Python einarbeiten. Icch freue mich aber, dass die kleinen Anfangsschwiegigkeiten (bin kein Informatiker sondern Bau-Ing.) trotzdem Beantwortung finden.

:D
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 09:34

@BlackJack:

die Site ist interessant :-)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 28. November 2007, 10:41

Rebecca hat geschrieben:
mathi hat geschrieben:muß ich jetzt wirklich die 30 Zeilen die ich schon geschrieben habe händisch einrücken um die blöcke zu definieren [...] oder gibt es einen automatismus?
Das haengt von deinem Editor ab. In Emacs kann man einen ausgewaehlten Bereich nach links/rechts verschieben: py-shift-region-right bzw. C-c > (und entsprechend fuer die andere Richtung).
Analog dazu in nutze ich in Vim die Blockauswahl mit Shirft + V und dann '>', '<' zum ein und ausrücken oder gar '2>' und '2<' wenn es mehrere Einrückungsebenen sein sollen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 11:38

ich nutze IDLE und bin wirklich zufrieden damit
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 12:38

wieder ein Problem:

ich nutze
# -*- coding: cp1252 -*-


aber wenn ich mit pyinstaller ( -F -c ) eine .exe erzeuge wird ("mm²") (das Quadrat) nicht dargestellt. Im IDLE ist es richtig.

Was mache ich falsch?
BlackJack

Mittwoch 28. November 2007, 12:45

Wie gibst Du das '²' ein und wo wird es nicht richtig dargestellt? Die Kodierungsangabe bewirkt das korrekte Dekodieren von Unicode-Zeichenketten-Literalen im Quelltext ─ sonst nichts.

Edit: Und man muss natürlich auch wirklich in der Kodierung speichern, die man im Kommentar angegeben hat.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 12:49

ich gebe mit ALTGr+2 ein, und sehe in der Win-Console (habe die .exe mit der option -c erstellt) statt dem ² nur ein graues Feld ( unter Linux hieße das für mich z.B. UTF-8 versuchen, klappt hier aber nicht, denn dann siehts noch schlimmer aus).

-> ich denke, ich spreche im richtigen Code, da beim ausführen des Programms in IDLE ja alles richtig ist - oder?

meine Vermutung ist, das die Console von Windows das nicht packt?? -> falsch habs grad getestet geht, muß also an der "Übersetzung" des pyinstallers liegen.


Edit: im Handbuch von pyinstaller finde ich nichts
Zuletzt geändert von mathi am Mittwoch 28. November 2007, 13:07, insgesamt 1-mal geändert.
BlackJack

Mittwoch 28. November 2007, 13:06

Sorry, bei Eingabe meinte ich was da wirklich in Deinem Code steht, also steht da eine Unicode-Zeichenkette, wo im Quelltext der passende Bytewert für das ²-Zeichen steht, oder ist es eine normale Byte-Zeichenkette? Bei letzterem klappt die Ausgabe natürlich nur wenn das "Ausgabemedium" die gleiche Kodierung versteht, in der das Zeichen im Quelltext kodiert ist, oder der Bytewert für das Zeichen in beiden Kodierungen zufällig gleich ist.

Der Kommentar sagt nichts darüber aus ob er zur tatsächlichen Kodierung des Quelltextes passt. Und das ein in IDLE eingegebener Text in Byte-Zeichenketten in IDLE wieder ausgegeben wird, wie er eingegeben wurde, hat ebenfalls nichts zu bedeuten. Innerhalb von IDLE wird ja immer die selbe Kodierung verwendet.

Kodierungen sind eine "lustige" Sache und letztendlich läuft's darauf hinaus, dass man bei robusten Programmen, die wirklich mit Zeichen umgehen sollen a) intern durchgehend mit Unicode arbeiten muss; b) an den "Ein-" und "Ausgängen" dafür sorgen muss, dass entsprechend de- und enkodiert wird; und c) eine Option für die Ein- und Ausgabe-Kodierungen vorsehen muss, weil man die nicht in allen Fällen automatisch ermitteln kann.

Zur Windowskonsole: Das Ding heisst ja manchmal auch DOS-Eingabeaufforderung und verwendet dementsprechend normalerweise auch eine andere Kodierung als "Windows".
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 13:17

das lustige ist: ich wollte ein programm schreiben (.py) dass ich in Linux und Windows gleichermaßen anwenden kann, ABER:

UTF-8 zeigt unter Linux ein ü
unter Windows aber kryptische Zeichen ->(Edit: ü) =8895-1?
, sollte da nicht bei gleicher kodierung das gleiche rauskommen?
BlackJack

Mittwoch 28. November 2007, 13:32

Nein natürlich nicht. Wenn bei gleicher Kodierung überall das gleiche dargestellt würde, könnte man ja *eine* Kodierung nehmen und die anderen alle vergessen. Das wäre schön. :-)

In UTF-8 wird ein ä mit zwei Bytes kodiert: '\xc3\xa4', bei iso-8859-1 als ein Byte: '\xe4'. Wenn man die beiden ersten Bytes irgendwo ausgiebt wo iso-8859-1 erwartet wird, werden die beiden Zeichen ü angezeigt.

Wenn Du ein Programm schreiben willst das "überall" läuft, musst Du wie gesagt intern mit Unicode arbeiten und für den Notfall den Benutzer die Kodierung angeben lassen in welcher Kodierung das ausgegeben werden soll. Zum Beispiel sowohl unter Windows als auch unter Linux beim Umleiten der Ausgabe in eine Datei. Dateien bestehen aus Bytes, die haben keine Kodierung, also muss man explizit sagen welche verwendet werden soll wenn man Unicode-Text hineinschreiben will.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 13:57

Edit:

http://www.python-forum.de/topic-5095.html

hab ich grad gefunden, hätte mir dann wohl die Frage ersparen können.
Antworten