[Tutor] Binary/Decimal convertor

Dave Angel d at davea.name
Fri Jan 11 23:17:17 CET 2013


On 01/11/2013 04:51 PM, 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 by repeating the question over and over until they do enter a correct binary number( 8-bit or less)
> Here is the code. I started off by entering 'len' function.
>
> def add_binary_numbers(num1, num2):
>     return num1 + num2
>
> num1 = int(input('please enter the first 8 bit binary number: '),2)
> if len(num1) > 8:
>     print("please enter an 8 bit binary number")
> return int(num1,2)
> num2 = int(input('please enter the second 8 bit binary number: '),2)
> result = add_binary_numbers(num1, num2)
> print('the result is', bin(result)[2:])
>
>

1.  Specify the Python version.  I'll assume version 3.3
2.  Show whatever error you got.  I'd guess something like the following:

          File "<stdin>", line 1, in <module>
          TypeError: object of type 'int' has no len()



The len() function operates on strings, lists, and other sequences and
mappings.  But although you had a string at first, you've already
converted it to an int, which has no len() method.  It might be simplest
to compare the value num to 0 and 255.  Alternatively, you could compare
it before doing the int function.

Since you're doing it twice, it probably makes sense to do this in a
function.  Write a function that repeatedly asks the user till it gets a
value in the right range.

The other error that jumps out is that you have a return statement at
top-level, while the statement only makes sense inside a function.  That
problem goes away once you put the input logic inside a function.



-- 

DaveA



More information about the Tutor mailing list