我为Baudot翻译器格式化了一些代码,例如,程序需要采用与1000111001相同的10001 11001。
我将如何做到这一点?
sentence=[]
if " " in Baudot=True:
null
else:
codingSeq=Baudot.split(" ")
for letter in codingSeq:
答案 0 :(得分:2)
如果我正确理解您的问题,您希望将二进制序列转换为Baudot格式。如果是这种情况,那么这应该对你有用:
bstr = "100011001101101"
baudot = " ".join([bstr[i:i+5] for i in range(0,len(bstr),5)])
修改您的代码:
def bsplit(seq):
flag = True
for i in seq.split(" "):
if len(i)!=5:
flag = False
if flag:
return seq
else:
seq = "".join(seq.split(" ")) #To remove all existing spaces
return " ".join([seq[i:i+5] for i in range(0,len(seq),5)]) #To reformat the sequence
您现在可以致电
bsplit("10001100111010101")
答案 1 :(得分:0)
是的,只需使用len(seq) % 5 == 0
作为唯一需要的测试,Saravana Kumar的回答可以更简单
def bsplit(seq):
if len(seq) % 5 == 0:
return ' '.join(seq[i:i+5] for i in range(0, len(seq), 5))
return seq
使用内联if-else我们可以有一个return
,我添加了paren以允许换行符在使其成为“单行”之后有所恢复可读性
def bsplit(seq):
return (seq if len(seq) % 5
else ' '.join(seq[i:i+5]
for i in range(0, len(seq), 5)))