Seite 1 von 1

Sonderzeichen in cmd

Verfasst: Donnerstag 23. Oktober 2008, 10:25
von mathi
hallo,
ich weiß dass dieses leidige Thema schon öffter kam, aber ich begreife es einfach nicht :

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

print u"\u20ac".encode("cp1252")
j=int_input(u'\nrichtig?:')

jetzt hätte ich gerne das € symbol. Warum funktioniert das nicht auf der Windows Konsole?

Verfasst: Donnerstag 23. Oktober 2008, 10:35
von Hyperion
Kann denn "cp1252" das Symbol darstellen?

Verfasst: Donnerstag 23. Oktober 2008, 10:44
von mathi
richtig :oops: , geht nicht,

gibt es ein anderes encoding was auf der CMD funktioniert?

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print u"\u03d1".encode("cp1252")
j=raw_input(u'\nrichtig?:')
hier müßte ϑ stehen, aber soweit ich weiß kann man in der CMD nur cp850 und cp1252 verwenden, falsch??

Verfasst: Donnerstag 23. Oktober 2008, 11:08
von BlackJack
Also das €-Zeichen kann man in cp1252 kodieren. Die "Eingabeaufforderung" verwendet aber AFAIK standardmässig eine "DOS-kompatible" Kodierung und da ist das €-Zeichen nicht enthalten.

Genausowenig wie das griechische kleine ("script") Theta.

Die Kodierung der Eingabeaufforderung kann man mit irgendeinem "DOS"-Befehl auch auf andere Kodierungen umstellen, vielleicht sogar über das Menü des Fensters!? Grundsätzlich würde ich aber sagen ist so ein "DOS-Terminal" nicht so gut für beliebige Ausgaben von Unicode-Zeichen geeignet.

Verfasst: Donnerstag 23. Oktober 2008, 11:19
von mathi
danke,
dann müßte ich mir ja ein anderes Terminal suchen bzw. schreiben, was eingaben annehmen und Ausgaben machen kann..... gibts da evtl. was??
ich habe halt die cmd genommen, weil sie auf jedem Win-Rechner vorh. ist.

Verfasst: Donnerstag 23. Oktober 2008, 12:22
von BlackJack
`Tkinter` gehört zur Python-Standardbibliothek und kommt mit Unicode-Zeichen klar. Da kannst Du dann sogar mit verschiedenen Schriftgrössen arbeiten.

Verfasst: Donnerstag 23. Oktober 2008, 12:41
von mathi
ist es aufwändig (für einen eher ungeübten), eine Konsole zu programmieren, die wie eine CMD funktioniert??

ich brauche lediglich:

print eine Zeile
gib eine Variable ein (Buchstabe, Zahl)
reche etwas
und gib das ergebnis aus (Text)


hier mal ein Beispiel:

Code: Alles auswählen

        while True:
            try:
                print u'gegeben: x | gesucht: y '
                X1=float_input(u'Wert X1 mit X1<x: ')
                X2=float_input(u'Wert X2 mit X2>x: ')
                Y1=float_input(u'Wert Y1 mit y=?: ')
                Y2=float_input(u'Wert Y2 mit y=?: ')
                x=float_input (u'Wert x: ')
                y=(x-X1)*(Y2-Y1)/(X2-X1)+Y1
                print u'Ergebnis y= ',y
            except (ValueError,ZeroDivisionError):
                print u'****Rechenfehler: Eingaben prüfen!?! ****'
            foo = ask_raw_input(u'erneute Iteration (j/N)? [N] ','n') 
            if foo.lower()=='n' or foo=='0': 
                break

Verfasst: Donnerstag 23. Oktober 2008, 12:56
von BlackJack
Ich würde sagen, ja das ist "schwierig" weil GUI-Programmierung anders funktioniert. Da gibt man nicht die Reihenfolge der Abfragen und Ausgaben so vor, sondern reagiert auf Ereignisse die der Benutzer auslöst.

Verfasst: Donnerstag 23. Oktober 2008, 13:02
von mathi
nicht schön,

müßte ich das neu erfinden? ich könnte mir vorstellen, dass soetwas nicht das 1. Mal überlegt wird.

google hilft leider nicht

Verfasst: Donnerstag 23. Oktober 2008, 13:21
von Leonidas
mathi hat geschrieben:dann müßte ich mir ja ein anderes Terminal suchen bzw. schreiben, was eingaben annehmen und Ausgaben machen kann..... gibts da evtl. was??
Ubuntu ;)

Vielleicht hilft dir ja das SourceForge-Projekt "Console", dort wird auch CMD verwendet, aber vielleicht nutzt das ja einen besseren Zeichensatz.

Verfasst: Donnerstag 23. Oktober 2008, 13:26
von mathi
Leonidas hat geschrieben:Ubuntu
Leider werden einige für mich wichtige Programme (kommerzielle) nicht für Linux angeboten (Statik Software), deshalb scheidet das aus :-(


Console nutzt cp850 :cry:

Verfasst: Donnerstag 23. Oktober 2008, 13:32
von Leonidas
mathi hat geschrieben:Leider werden einige für mich wichtige Programme (kommerzielle) nicht für Linux angeboten (Statik Software), deshalb scheidet das aus :-(
Wenn du schon darauf eingehst: Wine und VirtualBox existieren, sind kostenlos und frei.

Verfasst: Donnerstag 23. Oktober 2008, 13:37
von BlackJack
Vielleicht wäre EasyGUI was für Dich. Das lässt einen weiterhin linare Programmabläufe schreiben:

Code: Alles auswählen

from easygui import msgbox, multenterbox, ynbox


def main():
    values = list()
    while True:
        values = multenterbox(u'gegeben x | gesucht: y',
                              u'Berechnung',
                              ('Wert X1 mit X1<x',
                               'Wert X2 mit X2>x',
                               'Wert Y1 mit y=?',
                               'Wert Y2 mit y=?',
                               'Wert x'),
                               values)
        if values is not None:
            try:
                x_1, x_2, y_1, y_2, x = map(float, values)
                y = (x - x_1) * (y_2 - y_1) / (x_2 - x_1) + y_1
            except (ValueError, ZeroDivisionError):
                msgbox(u'**** Eingabe prüfen!?! ****', u'Fehler')
            else:
                msgbox(u'y = %f' % y, u'Ergebnis')
        if not ynbox(u'Erneute Iteration?', u'Weiter?', ('Ja', 'Nein')):
            break
Ist ein einzelnes Python-Modul und basiert auf `Tkinter`.

Verfasst: Donnerstag 23. Oktober 2008, 13:51
von mathi
vielen Dank für die Mühe,
dass könnte was für mich sein. Leider läuft das Programm so nicht in IDLE und ich weiß nicht warum.

IDLE 1.2.2
>>> ================================ RESTART ================================
>>>
>>> ================================ RESTART ================================
>>>
>>> ================================ RESTART ================================
>>>


ok, habe es geschafft es laaufen zu lassen :-)
>>>

Verfasst: Donnerstag 23. Oktober 2008, 14:23
von BlackJack
Weil IDLE selber `Tkinter` benutzt und deshalb Probleme damit hat, wenn man das auch tut.

Verfasst: Donnerstag 23. Oktober 2008, 14:28
von numerix
Das klingt jetzt aber so, als würden sich IDLE und Tkinter-Anwendungen gar nicht vertragen. So schlimm ist es ja nun nicht. :wink:

Ich kann mich an keines meiner Tkinter-Programme erinnern, das an sich funktioniert hätte und nur beim Start aus IDLE heraus nicht gelaufen wäre. Manchmal gibt es die ein oder andere Bockigkeit, aber unlösbar war bei mir bisher noch keiner dieser Fälle.

Verfasst: Freitag 24. Oktober 2008, 06:28
von mathi
Hallo,
im Grunde brauche ich doch nicht mehr als:
http://www.python-forum.de/topic-6298.html

dieses Beispiel und habe meinen Rahmen. Jetzt muß ich doch eigentlich "nur noch" versuchen, etwas einzubauen, dass mein Programm darin ablaufen lässt (die Befehle der Reihe nach ablaufen lässt)?

Oder kann ich mir das aus dem Kopf schlagen?