2017-12-11 2 views
0

Ich formatiere einige Code für einen Baudot-Übersetzer und das Programm muss in 10001 11001 genauso wie 1000111001, zum Beispiel nehmen.Teilen einer Reihe von Zahlen nach jeder 5. Nummer

Wie würde ich das machen?

sentence=[] 
if " " in Baudot=True: 
    null 
else: 

codingSeq=Baudot.split(" ") 
for letter in codingSeq: 
+1

Dies ist nicht ganz klar zu machen. Was ist deine eigentliche Frage? Auch was heißt 'wenn 'in Baudet = wahr:' sogar gemein? Vielleicht meintest du "wenn" "in Baudet == True:" - aber warum der falsche Vergleich eines Booleschen mit einem Booleschen Booleschen? Verwenden Sie 'if" "in Baudet:' –

+0

grundsätzlich, wenn Leerzeichen in der Zeichenfolge sind, nichts tun. Ansonsten, teilen Sie jedes 5. Zeichen – Testarific

Antwort

2

Wenn ich Ihre Frage richtig verstehe, möchten Sie eine binäre Sequenz in ein Baudot-Format konvertieren. Wenn das der Fall ist, dann sollte dies für Sie arbeiten:

bstr = "100011001101101" 
    baudot = " ".join([bstr[i:i+5] for i in range(0,len(bstr),5)]) 

Code ändern:

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 

Sie jetzt

bsplit("10001100111010101") 
+0

Sie müssten auch sicherstellen, dass die Länge Ihrer Zeichenfolge ohne Leerzeichen ein Vielfaches von 5 ist. Für die Sie können etwas tun: len (''. Join (seq.split (' ')))% 5 == 0 –

0

ja, Saravana Kumar Antwort nennen kann einfacher gemacht werden indem Sie einfach den len(seq) % 5 == 0 als den einzigen benötigten Test verwenden

def bsplit(seq): 
    if len(seq) % 5 == 0: 
     return ' '.join(seq[i:i+5] for i in range(0, len(seq), 5)) 
    return seq 

mit einem Inline-if-else wir einen einzigen return haben kann, habe ich paren Zeilenumbrüche zu ermöglichen, die Lesbarkeit zu etwas wiederherzustellen, nachdem es sich um eine ‚one-liner‘

def bsplit(seq): 
    return (seq if len(seq) % 5 
       else ' '.join(seq[i:i+5] 
           for i in range(0, len(seq), 5))) 
Verwandte Themen