Обновите свой словарь
Лучшим подходом будет обновить ваш brailleDict
для учета заглавных букв.Тогда ваше первоначальное решение будет работать.
Хотя это позволяет вам использовать метод str.translate
, который, возможно, является еще лучшим решением.
brailleDict = {'a' : '100000', 'b': '110000', ...}
# Add the capital letter Braille representations to your dict
brailleDict.update({char.upper(): '000001' + code for char, code in brailleDict.items()})
# Create a translation dict to be used by `str.translate`
brailleTranslation = str.maketrans(brailleDict)
print('bob'.translate(brailleTranslation)) # '110000101010110000'
print('Bob'.translate(brailleTranslation)) # '000001110000101010110000'
Недостатком является то, что str.translate
будетоставьте символы, которые он не распознает, без изменений.Вы можете проверить, переводится ли ваша строка с помощью str.isalpha
и поднять ValueError
, если это не так, или обновить таблицу перевода, чтобы удалить неизвестные символы.
from collections import defaultdict
...
brailleTranslation = defaultdict(lambda: None, str.maketrans(brailleDict))
print('#bob'.translate(brailleTranslation)) # still prints '110000101010110000'
Если вы заполните dict
со всеми символами Брайля вы можете проверить s.isprintable()
вместо этого в вышеуказанной функции.
Использовать str.upper
В качестве альтернативы, вы можете проверить, состоит ли строка из прописных символов, используя str.isupper
.
brailleDict = {'a' : '100000', 'b': '110000', ...}
def braille(string):
return ''.join(('000001' if char.isupper() else '')
+ brailleDict[char.lower()] for char in string)
print(braille('bob')) # '110000101010110000'
print(braille('Bob')) # '000001110000101010110000'