7 Replies - 5759 Views - Last Post: 11 December 2012 - 03:46 PM Rate Topic: -----

#1 Stephenfrazier10  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 109
  • Joined: 12-September 12

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.

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()



Is This A Good Question/Topic? 0
  • +

Replies To: Binary to Decimal Converter Not Working

#2 sepp2k  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 2151
  • View blog
  • Posts: 3,306
  • Joined: 21-June 11

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

Was This Post Helpful? 0
  • +
  • -

#3 Stephenfrazier10  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 109
  • Joined: 12-September 12

Re: Binary to Decimal Converter Not Working

Posted 06 December 2012 - 11:42 PM

I know it assumes you enter a number in binary.
Was This Post Helpful? 0
  • +
  • -

#4 sepp2k  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 2151
  • View blog
  • Posts: 3,306
  • Joined: 21-June 11

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.
Was This Post Helpful? 0
  • +
  • -

#5 Tayacan  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 145
  • View blog
  • Posts: 275
  • Joined: 18-January 11

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:

  • 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()


Was This Post Helpful? 1
  • +
  • -

#6 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5901
  • View blog
  • Posts: 12,806
  • Joined: 16-October 07

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:
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


Was This Post Helpful? 1
  • +
  • -

#7 Stephenfrazier10  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 109
  • Joined: 12-September 12

Re: Binary to Decimal Converter Not Working

Posted 10 December 2012 - 01:00 PM

Thanks for all your help.
Was This Post Helpful? 0
  • +
  • -

#8 Stephenfrazier10  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 109
  • Joined: 12-September 12

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()
        


Was This Post Helpful? 0
  • +
  • -

Page 1 of 1