<h2>更新你的词典</h2>
<p>最好的方法是更新你的<code>brailleDict</code>来说明大写字母。你最初的解决方案就会奏效。你知道吗</p>
<p>尽管如此,这允许您使用<code>str.translate</code>方法,这可以说是一个更好的解决方案。你知道吗</p>
<pre><code>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'
</code></pre>
<p>缺点是<code>str.translate</code>会使它无法识别的字符保持不变。您可以使用<code>str.isalpha</code>检查字符串是否可翻译,如果不可翻译,则生成<code>ValueError</code>,或者更新翻译表以删除未知字符。你知道吗</p>
<pre><code>from collections import defaultdict
...
brailleTranslation = defaultdict(lambda: None, str.maketrans(brailleDict))
print('#bob'.translate(brailleTranslation)) # still prints '110000101010110000'
</code></pre>
<p>如果用所有盲文字符填充<code>dict</code>,则可以在上述函数中检查<code>s.isprintable()</code>。你知道吗</p>
<h2>使用<code>str.upper</code></h2>
<p>或者,可以使用<code>str.isupper</code>检查字符串是否由大写字符组成。你知道吗</p>
<pre><code>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'
</code></pre>