将提升的位置转换为二进制
Converting raised position to binary
我正在努力从 o-string 二进制到 Unicode,这个过程的一部分需要将 Raised Position 转换为二进制。我似乎无法完成它。文档测试将解释需要执行的操作。
我在下面提供了我的代码,但离获得正确答案还差得很远。
def raisedpos_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
看起来您可以创建一组(转换为整数)单个数字,然后在 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
我正在努力从 o-string 二进制到 Unicode,这个过程的一部分需要将 Raised Position 转换为二进制。我似乎无法完成它。文档测试将解释需要执行的操作。
我在下面提供了我的代码,但离获得正确答案还差得很远。
def raisedpos_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
看起来您可以创建一组(转换为整数)单个数字,然后在 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