Python :: Aufgabe #233 :: Lösung #1

1 Lösung Lösung öffentlich
#233

Text in Blindenschrift (Braille-Schrift) darstellen

Anfänger - Python von hollst - 12.11.2019 um 20:14 Uhr
Hallo,

Eure Aufgabe sei es, einen gegebenen Text in ein Blindenschriftmuster zu überführen.

Das Alphabet bestehe aus den in DE verwendeten 26 + 3 Buchstaben (alles Kleinbuchstaben im Braille),
dem Leerzeichen, den Dezimalzahlen 0 ... 9 und vier Sonderzeichen (!, ?, ., ,) (Abb. 1).

Zwei Zeichen werden jeweils durch ein ordinäres Leerzeichen getrennt,
zwischen zwei Zielen ist eine Leerzeichenzeilen eingefügt.

Exemplarisch sei der Satz "TrainYourProgrammer gehört zu meinen Lieblings-Webseiten." als
Blindschriftmuster dargestellt (Abb. 2). "-" und "+" gehören nicht zu unserem Alphabet
und sind durch Leerzeichen zu ersetzen.

Viel Spaß!
#1
vote_ok
von kaschperl (400 Punkte) - 27.02.2020 um 16:32 Uhr
Eine kniffelige Aufgabe ;-)

Ich hatte 3 Lösungsansätze:
1. Braillezeichen "malen"
- Braille Punkte kodiert mit Zahlen wie in Wikipedia beschrieben
- Dictionary ascii & Braille kodierte Zahlen aufbauen
- Zahlen erstellen und dann grafisch ausgeben
Module PIL und funktion ellipse
2. Braillezeichen mit unicode Angben ausgeben
- Braillezeichen fangen ab Unicode 2800 an und enden bei 28FF.
- print(u'\u2801') für a
- Dictionary aufbauen
3. Unicodezeichen und ASCII im Quelltext jeweils als string hinterlegen und mit string.translate übersetzen

Ich habe mich für die 3.te Variante entschieden, da dieses am schnellsten zum Ziel führt.

Weitere Infos zu Braille:
https://de.wikipedia.org/wiki/Brailleschrift
https://de.wikipedia.org/wiki/Unicodeblock_Braille-Zeichen
https://en.wikipedia.org/wiki/Braille_Patterns
https://www.brailletranslator.org/de.html
https://www.cbm.de/behinderung-und-sprache/blindenschrift-braille/blindenschrift-uebersetzer.html?code=0027668&gclid=EAIaIQobChMI05fA8dLx5wIVheh3Ch0TRQj9EAAYASAAEgIA1PD_BwE

Quellcode ausblenden Python-Code
class Braille:
    '''Funktionssammlung rund um die Brailleschrift '''

    def __init__(self):
        self.ascii = 'abcdefghijklmnopqrstuvwxyzäöü!?., 0123456789#'
        self.braille = '⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵⠜⠪⠳⠖⠢⠄⠂ ⠚⠁⠃⠉⠙⠑⠋⠛⠓⠊⠼'
        self.numbersign = '⠼'
        self.transtab = str.maketrans(self.ascii, self.braille)

    def ascii2braille(self, text):
        '''Übersetzt Ascii in Braille'''
        # Text in Kleinbuchstaben überführen
        lowertext = text.lower()
        # unbekannte Zeichen durch Leerzeichen ersetzen
        cleantext = ''
        for char in lowertext:
            if char in self.ascii:
                # bei Zahlen das Braille Zeichen ⠼ für # voranstellen
                if char in '0123456789':
                    cleantext = cleantext + '#'
                cleantext = cleantext + char
            else:
                cleantext = cleantext + ' '

        print(f'Braille:{cleantext.translate(self.transtab)}')
        print(f'Text   :{text}')
        # print(f'Aufbereiteter Text zur Übersetzung: {cleantext}')

if __name__ == "__main__":
    b = Braille()
    b.ascii2braille("TrainYourProgrammer gehört zu meinen Lieblings-Webseiten.")
    b.ascii2braille("Dieser Text enthält auch Zahlen 145 2 345 # .-ß$%& Na und?")
    
# Testausgaben:
# Braille:⠞⠗⠁⠊⠝⠽⠕⠥⠗⠏⠗⠕⠛⠗⠁⠍⠍⠑⠗ ⠛⠑⠓⠪⠗⠞ ⠵⠥ ⠍⠑⠊⠝⠑⠝ ⠇⠊⠑⠃⠇⠊⠝⠛⠎ ⠺⠑⠃⠎⠑⠊⠞⠑⠝⠄
# Text   :TrainYourProgrammer gehört zu meinen Lieblings-Webseiten.
# Braille:⠙⠊⠑⠎⠑⠗ ⠞⠑⠭⠞ ⠑⠝⠞⠓⠜⠇⠞ ⠁⠥⠉⠓ ⠵⠁⠓⠇⠑⠝ ⠼⠁⠼⠙⠼⠑ ⠼⠃ ⠼⠉⠼⠙⠼⠑ ⠼ ⠄      ⠝⠁ ⠥⠝⠙⠢
# Text   :Dieser Text enthält auch Zahlen 145 2 345 # .-ß$%& Na und?

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2095413

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.