Sonderzeichen in cmd

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.
Antworten
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Kann denn "cp1252" das Symbol darstellen?
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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??
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.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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.
BlackJack

`Tkinter` gehört zur Python-Standardbibliothek und kommt mit Unicode-Zeichen klar. Da kannst Du dann sogar mit verschiedenen Schriftgrössen arbeiten.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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
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.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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:
Zuletzt geändert von mathi am Donnerstag 23. Oktober 2008, 13:37, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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`.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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 :-)
>>>
Zuletzt geändert von mathi am Donnerstag 23. Oktober 2008, 14:33, insgesamt 1-mal geändert.
BlackJack

Weil IDLE selber `Tkinter` benutzt und deshalb Probleme damit hat, wenn man das auch tut.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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?
Antworten