I can't figure out why my program doesn't output 128.255.3.15
with an input of 10000000111111110000001100001111
.
Code:
#function to read a number
def readNum():
binary = input("Please enter a 32 digit number: ")
return binary
#function to check to make sure there are 32 digits
def checkNum(binary):
while len(binary) != 32:
flag = 'error'
return flag
else:
flag = 'true'
return flag
#function to split the number into 4 strings and 8 bits
def splitNum(binary):
first = binary[0:8]
second = binary[8:16]
third = binary[16:24]
fourth = binary[24:32]
return [first, second, third, fourth]
#function to check to see if they are all numbers and calculate sum
def calcSum(first):
decimal = 0
binary = 0
digit = 0
flag = 'true'
for digit in first:
try:
decimal = int(digit)
except ValueError:
flag = 'error'
break;
else:
decimal = decimal*2 + int(digit)
if flag == 'true':
return decimal
else:
print("Not a valid number.")
#main function
def main():
flag = 'true'
myList = []
binary = readNum()
flag = checkNum(binary)
if flag == 'true':
myList = splitNum(binary)
part1 = calcSum(myList[0])
part2 = calcSum(myList[1])
part3 = calcSum(myList[2])
part4 = calcSum(myList[3])
print(part1, ".", part2, ".", part3, ".", part4)
else:
print("Not a valid 32 digit number!!")
#call main
main()