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

#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ß!
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

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
Python-Code
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

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
Seite 1 von 0
1