The goal of this part of the lab is to motivate a right-to-left conversion of decimal numbers into binary form. Thus, you will end up writing a function numToBinary(anInteger) that works as follows:
>>> numToBinary(5) '101'
The code I have is:
def isOdd (x): if x%2==1: return('True') if x%2==0: return('False') def numToBinary(x): if n==0: return '' elif isOdd(x): return numToBinary(x//2)+'1' else: return numToBinary(x//2)+'0'
But this returns the string from left to right. Can anyone help me find a way to go from the left to right representation to a right to left representation?
Advertisement
Answer
Is this Python?
I don’t see any “left-to-right” problem in your code. However, the function isOdd
that you provided returns Strings ('False'
and 'True'
). It should return Booleans (i.e. remove the single-quotes).
def isOdd (x): if x%2==1: return(True) # <<< THIS if x%2==0: return(False) # <<< AND THIS
Also, you’re using a variable named n
inside numToBinary
, which is not defined anywhere (it should be x
, obviously)
def numToBinary(x): if x==0: # <<<< THIS! return '' elif isOdd(x): return numToBinary(x//2)+'1' else: return numToBinary(x//2)+'0'
This code should work fine.
If you just want to convert a number to binary, you can use Python’s internal bin
function. Try: bin(5)[2:]
for example.