【问题标题】:Converting raised position to binary将提升的位置转换为二进制
【发布时间】:2020-02-13 14:02:58
【问题描述】:

我正在从 o-string 二进制转换为 Unicode,此过程的一部分需要将 Raised Position 转换为二进制。我似乎无法完成它。文档测试将解释需要执行的操作。

我在下面提供了我的代码,但离得到正确答案还差得很远。

def raisepos_to_binary(s): ''' (str) -> str 在凸起位置转换表示盲文字符的字符串 表示成二进制表示。 TODO:让学生完成。

>>> raisedpos_to_binary('')
'00000000'
>>> raisedpos_to_binary('142536')
'11111100'
>>> raisedpos_to_binary('14253678')
'11111111'
>>> raisedpos_to_binary('123')
'11100000'
>>> raisedpos_to_binary('125')
'11001000'
'''

res = ''
lowest_value = '00000000'
for i, c in enumerate(s):
    if c == i:
        lowest_value = lowest_value.replace('0', '1')
return lowest_value

【问题讨论】:

    标签: python-3.x binary braille


    【解决方案1】:

    看起来您可以创建一组(转换为整数)个位数,然后在 1..8 的范围内迭代生成“1”或“0”,例如:

    def raisedpos_to_binary(digits):
        raised = {int(digit) for digit in digits}
        return ''.join('1' if n in raised else '0' for n in range(1, 9))
    

    测试:

    for test in ['', '142536', '14253678', '123', '125']:
        print(test, '->', raised_pos_to_binary(test))
    

    给你:

     -> 00000000
    142536 -> 11111100
    14253678 -> 11111111
    123 -> 11100000
    125 -> 11001000
    

    因此,您的模块应该包含:

    def raisedpos_to_binary(digits):
        """
        >>> raisedpos_to_binary('')
        '00000000'
        >>> raisedpos_to_binary('142536')
        '11111100'
        >>> raisedpos_to_binary('14253678')
        '11111111'
        >>> raisedpos_to_binary('123')
        '11100000'
        >>> raisedpos_to_binary('125')
        '11001000'
        """
    
        raised = {int(digit) for digit in digits}
        return ''.join('1' if n in raised else '0' for n in range(1, 9))
    
    
    if __name__ == '__main__':
        import doctest
        doctest.testmod()
    

    然后使用以下命令运行您的脚本:

    python your_script.py -v
    

    【讨论】:

    • “142536”、“125”和“142353678”的文档测试仍然无法正常工作
    • 对我来说很好用(5 次通过,0 次失败。)- 你确定使用上面的代码吗?你是如何运行文档测试的?
    • 是的,相同的代码!我通过导入它来运行 doctest,然后像上面那样运行它
    • @MatthewTabet 你知道我在答案中添加的内容吗?
    • 嗨,约翰,是的,我确实知道那里有什么,但它仍然不起作用
    猜你喜欢
    • 2021-11-14
    • 2018-06-24
    • 1970-01-01
    • 2018-01-29
    • 2017-09-27
    • 2012-01-06
    • 1970-01-01
    • 2018-09-15
    • 2014-03-01
    相关资源
    最近更新 更多