[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