Flipping a binary in a string

Tags: ,



I am new to python and coding in general. So what I am trying to achieve is to flip each bit in a binary string (for eg. if I input ‘110’ the output should be ‘001’). I specifically need to use the while loop and I need to define it as a function. Here is what I’ve tried so far:

def flip(binary_string):
    new_string= ''
    i=0
    while i<len(binary_string):
        if i == '0':
            new_string=new_string+ '1'
        if i == '1':
            new_string= new_string+ '0'
        i=i+1    
    return new_string

however it just returns the empty new_string as defined in the beginning. What’s wrong with my code? any help would be greatly appreciated

Answer

You were comparing the array index and not the element. Fixed that in the code below.

def flip(binary_string):
    new_string= ''
    i=0
    while i<len(binary_string):
        if binary_string[i] == '0':
            new_string=new_string+ '1'
        if binary_string[i] == '1':
            new_string= new_string+ '0'
        i=i+1    
    return new_string


flip("100")
>>> 011


Source: stackoverflow