def Binary_to_Decimal(): Again = "Y" while Again in "Yy": binaryNumber = str(input("Enter a number in binary, to get it converted into decimal: ")) binaryNumber = binaryNumber[::1] Multiplyer = 1 DecimalNumber = 0 for i in range(len(binaryNumber)): if i == 1: DecimalNumber = DecimalNumber + Multiplyer Multiplyer = Multiplyer * 2 elif i == 0: Multiplyer = Multiplyer * 2 print("That number is decimal is: " + str(DecimalNumber)) print("\n") Again = input("Do you want to convert anymore? (Y or N)") Binary_to_Decimal()
Binary to Decimal Converter Not Working
Page 1 of 17 Replies  6594 Views  Last Post: 11 December 2012  03:46 PM
#1
Binary to Decimal Converter Not Working
Posted 06 December 2012  11:05 PM
I have did this out on paper over and over, and the algorithm I have developed seems like it should work. Im not sure why its not working, any help would be appreciated.
Replies To: Binary to Decimal Converter Not Working
#2
Re: Binary to Decimal Converter Not Working
Posted 06 December 2012  11:35 PM
It would help if you explained how exactly the code is not working, but at a first glance, your loop does nothing when i is neither 0 nor 1.
This post has been edited by sepp2k: 06 December 2012  11:35 PM
#3
Re: Binary to Decimal Converter Not Working
Posted 06 December 2012  11:42 PM
I know it assumes you enter a number in binary.
#4
Re: Binary to Decimal Converter Not Working
Posted 07 December 2012  01:21 AM
A binary number can still be more than 2 digits long.
#5
Re: Binary to Decimal Converter Not Working
Posted 07 December 2012  02:28 AM
Okay, so the problem is in your for loop. You're only doing things if i is either 1 or 0, and you're not even doing the right things in those cases. So here's what should actually happen in your for loop:
Here's how to do that in code:
 Pull out the binary digit from the string.
 Multiply it with the multiplier and add it to the DecimalNumber.
 Double the multiplier.
 Proceed with the next digit.
Here's how to do that in code:
def Binary_to_Decimal(): Again = "Y" while Again in "Yy": binaryNumber = str(input("Enter a number in binary, to get it converted into decimal: ")) binaryNumber = binaryNumber[::1] Multiplyer = 1 DecimalNumber = 0 for i in range(len(binaryNumber)): DecimalNumber += int(binaryNumber[i]) * Multiplyer # Step 1 and 2 Multiplyer *= 2 # Step 3 print("That number is decimal is: " + str(DecimalNumber)) print("\n") Again = input("Do you want to convert anymore? (Y or N)") Binary_to_Decimal()
#6
Re: Binary to Decimal Converter Not Working
Posted 07 December 2012  08:18 AM
Look at the value in binaryNumber, not the number of i. You can actually do that with:
Also, there is a fundamental logic error: shift then add. Reversing is wrong with that approach. Walk it:
for i in binaryNumber: # do something if i == '1': # do something
Also, there is a fundamental logic error: shift then add. Reversing is wrong with that approach. Walk it:
s = '1011' n = 0 n = n * 2 + 1 = 1 n = n * 2 + 0 = 2 n = n * 2 + 1 = 5 n = n * 2 + 1 = 11
#7
Re: Binary to Decimal Converter Not Working
Posted 10 December 2012  01:00 PM
Thanks for all your help.
#8
Re: Binary to Decimal Converter Not Working
Posted 11 December 2012  03:46 PM
I got my entire program working now!
""" Gives the user multiple choices on converting between different number systems used in computer science/programming """ def Decimal_To_Binary_Converter(): """ Takes a decimal base number and converts it to a binary base number """ Again = "Y" while Again in "Yy": DecimalNumber = int(input("Enter a number in decimal, to get it converted into binary: ")) BinaryVersion = int(bin(DecimalNumber)[2:]) print("That decimal number in binary is: " + str(BinaryVersion)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def Binary_to_Decimal_Converter(): """ Takes a binary base number and converts it to a decimal base number """ Again = "Y" while Again in "Yy": binaryNumber = str(input("Enter a number in binary, to get it converted into decimal: ")) binaryNumber = binaryNumber[::1] Multiplyer = 1 DecimalNumber = 0 for i in range(len(binaryNumber)): DecimalNumber += int(binaryNumber[i]) * Multiplyer Multiplyer = Multiplyer * 2 print("That binary number in decimal is: " + str(DecimalNumber)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def Decimal_to_Hex_Converter(): """ Converts a decimal base number to a hexadecimal base number """ Again = "Y" while Again in "Yy": DecimalNumber = int(input("Enter a number in decimal, to have it converted into hexadecimal: ")) HexNum = hex(DecimalNumber) RealHexNum = HexNum[2:] print("That decimal number in hexadecimal is: " + str(RealHexNum)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def Binary_to_Hex_Converter(): """ Converts a binary base number to a hexadecimal base number """ Again = "Y" while Again in "Yy": BinaryNumber = str(input("Enter a number in binary, to have it converted to hexadecimal: ")) BinaryNumber = BinaryNumber[::1] Multiplyer = 1 DecimalNumber = 0 for i in range(len(BinaryNumber)): DecimalNumber += int(BinaryNumber[i]) * Multiplyer Multiplyer = Multiplyer * 2 hexVersion = hex(DecimalNumber) hexVersion = hexVersion[2:] print("That binary number in hexadecimal is " + str(hexVersion)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def Hex_to_Decimal_Converter(): """ Converts a hexadecimal base number to a decimal base number """ Again = "Y" while Again in "Yy": HexValue = input("Enter a number in hexadecimal, to get it converted into decimal: ") DecimalValue = int(HexValue, 16) print("That hexadecimal number in decimal is " + str(DecimalValue)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def Hex_to_Binary_Converter(): """ Converts a hexadecimal base number to a binary base number """ Again = "Y" while Again in "Yy": HexValue = input("Enter a number in hexadecimal, to get it converted into binary: ") DecimalValue = int(HexValue, 16) BinaryValue = bin(DecimalValue) BinaryValue = BinaryValue[2:] print("That hexadecimal number in binary is " + str(BinaryValue)) print("\n") Again = input("Do you want to convert anymore? (Y or N) ") print("\n") def main(): """ Asks the user which type of conversion they want done, then takes their choice and calls on the appropriate function. Prevents the user from picking an option that is not a choice with an else statement. """ print("Welcome to my Binary and Decimal Converter!") print("") print("Press 1 for decimal to binary ") print("Press 2 for binary to decimal") print("Press 3 for decimal to hexadecimal") print("Press 4 for binary to hexadecimal") print("Press 5 for hexadecimal to decimal") print("Press 6 for hexadecimal to binary") print("\n") choice = input("What do you want to do? ") if choice == "1": print("\n") Decimal_To_Binary_Converter() elif choice == "2": print("\n") Binary_to_Decimal_Converter() elif choice == "3": print("\n") Decimal_to_Hex_Converter() elif choice == "4": print("\n") Binary_to_Hex_Converter() elif choice == "5": print("\n") Hex_to_Decimal_Converter() elif choice == "6": print("\n") Hex_to_Binary_Converter() else: print("\n") print("That was not an option, try again!") print("\n") main() main()
Page 1 of 1
