[Tutor] Binary/Decimal convertor

Alan Gauld alan.gauld at btinternet.com
Sat Jan 12 01:59:13 CET 2013


On 11/01/13 21:51, Ghadir Ghasemi wrote:
> Hi, I made a program called binary/denary convertor.

> Can anyone tell me about how I could stop the user entering a binary
 > number with more than 8 numbers or 8 bit

Why would you want to? Your code can handle much bigger binary numbers, 
why limit the user to 8 bits?

> Here is the code. I started off by entering 'len' function.

> num1 = int(input('please enter the first 8 bit binary number: '),2)

Here hyou read the number as a string and already convert it to a real 
number in Python. So the conversion from  binary has already happened 
regardless of how long the string was.


> if len(num1) > 8:
>      print("please enter an 8 bit binary number")

You now try to see how long the number is, but numvers don;t have a length.
So to do what you claim you want you need to do the len() check before 
you do the inty() conversion.
Something like:

  num1 = input('please enter the first 8 bit binary number: ')
  if len(num1) > 8:
       print("please enter an 8 bit binary number")
  else:
     num = int(num,2)

Then put that in while a loop that repeats until the length is <=8

> return int(num1,2)

And here you return which would terminate your function except you don't 
have a function so it will give a syntax error. And trying to convert a 
num as a binary won't work because its already stored internally as a 
binary number. This only works if you still have the string as described 
above.

> num2 = int(input('please enter the second 8 bit binary number: '),2)

And this doesn't do any len() checks....

> result = add_binary_numbers(num1, num2)
> print('the result is', bin(result)[2:])

I'd suggest that you make your add_binary_numbers() function return
the binary string. Otherwise it doesn't add any value over the
standard plus sign...


-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list