0

I am trying to convert a string to a char array then loop through each char in the array and compare against dictionary keys and then if they match print the key value and move to next char in array

I have gathered some examples and tried to work it out in my head. I am new to python and have come back to programming as a hobby after a long time to try and teach my 10 year old son. He was talking about binary and i said we could write a program in python that could for example take his name as input and print his name in binary code.

 #binary table is formatted such i have shortened it for simplicity

    binaryTable =   {
       "a" : "01100001",
       "b" : "01100010",
       "c" : "01100011",
       "d" : "01100100"
    }

    word = input('please input a value to see its representation in    Binary Code: ')

    def split(letters): 
        return [char for char in letters]

    def members(dictArg, keysListArg):
        count = 0
        for x in newArray:
            if newArray[x] == binaryTable.keys():
                value = binaryTable.keys()
                print(newArray[x])
                print(' : ')
                print(value)
                count += 1
        return count

   def printBinary(dictArg, keysListArg): 
      count = 0 
      for list_item in keysListArg: 
        if list_item in dictArg:
            count+= 1
            print(count)
            print(list_item)
            print(' : ')
            #print(keysListArg)
            #print(dictArg) #print dictArg.Key() How to do this
            print('\n')
      return count


    print('testing printBinary function\n')

    newArray = split(word)
    #members(newArray, binaryTable)
    printBinary(newArray. binaryTable)

If i were to put say abcd i would like the output to be a new dictionary with the chars in word with their binary key representatives or just to print the letter keys in the for loop iteration #next to the representative binary value eg

 j : 0110101
 a : 0101010
 m : 0101010
 e : 0101010
 s : 0101010

output:


1
a
 : 


2
e
 : 


3
j
 : 


4
m
 : 


5
s
 : 


['j', 'a', 'm', 'e', 's']
>>> 

*Why do the keys not come out in the same order?

  • what version of python? `dict` used to not guarantee order of keys when iterating. not sure of the behavior now. https://stackoverflow.com/questions/5629023/key-order-in-python-dictionaries – MFisherKDX Mar 22 '19 at 22:40
  • 3.7 I edited the function as such but it still prints in the wrong order: – James Dean Mar 22 '19 at 22:44
  • def printBinary(dictArg, keysListArg): count = 0 for list_item in keysListArg: if list_item in dictArg: count+= 1 print(count) print(list_item) print(' : ') x = keysListArg.get(list_item) print(x) return count – James Dean Mar 22 '19 at 22:45
  • I'm having a hard time understanding what you are after ... but did you mean to call the function `printBinary` as `printBinary(binaryTable, newArray)` instead of `printBinary(newArray, binaryTable)` ? – MFisherKDX Mar 22 '19 at 22:52
  • I have solved it: – James Dean Mar 22 '19 at 22:56
  • word = input('please input a value to see its representation in Binary Code: ') def split(letters): return [char for char in letters] def printBinary(dictArg, keysListArg): count = 0 for list_item in dictArg: if list_item in keysListArg: x = keysListArg.get(list_item) print(list_item + ' : ' + x) return count newArray = split(word) printBinary(newArray, binaryTable) – James Dean Mar 22 '19 at 22:57
  • im sorry i am new to stack overflow i do not yet know how to format correctly. Thank you very much for your help – James Dean Mar 22 '19 at 22:58

1 Answers1

0
#program to take a string and show the binary representation of all the letters
binaryTable =   {
   "a" : "01100001",
   "b" : "01100010",
   "c" : "01100011",
   "d" : "01100100",
   "e" : "01100101",
   "f" : "01100110",
   "g" : "01100111",
   "h" : "01101000",
   "i" : "01101001",
   "j" : "01101010",
   "k" : "01101011",
   "l" : "01101100",
   "m" : "01101101",
   "n" : "01101110",
   "o" : "01101111",
   "p" : "01110000",
   "q" : "01110001",
   "r" : "01110010",
   "s" : "01110011",
   "t" : "01110100",
   "u" : "01110101",
   "v" : "01110110",
   "w" : "01110111",
   "x" : "01111000",
   "y" : "01111001",
   "z" : "01111010",
   "A" : "01000001",
   "B" : "01000010",
   "C" : "01000011",
   "D" : "01000100",
   "E" : "01000101",
   "F" : "01000110",
   "G" : "01000111",
   "H" : "01001000",
   "I" : "01001001",
   "J" : "01001010",
   "K" : "01001011",
   "L" : "01001100",
   "M" : "01001101",
   "N" : "01001110",
   "O" : "01001111",
   "P" : "01010000",
   "Q" : "01001111",
   "R" : "01010010",
   "S" : "01010011",
   "T" : "01010100",
   "U" : "01010101",
   "V" : "01010110",
   "W" : "01010111",
   "X" : "01011000",
   "Y" : "01011001",
   "Z" : "01011010"
}

print('Hello there! I am a binary translator. Add some text to see it in binary!')
print('Below is a binary table for all characters of the Alphabet. Remember, upper and lower case characters have different binary values!')
print(
'''
   Letter    Binary      Letter  Binary
     a          01100001    A   01000001
     b      01100010    B   01000010
     c      01100011    C   01000011
     d      01100100    D   01000100
     e      01100101    E   01000101
     f      01100110    F   01000110
     g      01100111    G   01000111
     h      01101000    H   01001000
     i      01101001    I   01001001
     j      01101010    J   01001010
     k      01101011    K   01001011
     l      01101100    L   01001100
     m      01101101    M   01001101
     n      01101110    N   01001110
     o      01101111    O   01001111
     p      01110000    P   01010000
     q      01110001    Q   01010001
     r      01110010    R   01010010
     s      01110011    S   01010011
     t      01110100    T   01010100
     u      01110101    U   01010101
     v      01110110    V   01010110
     w      01110111    W   01010111
     x      01111000    X   01011000
     y      01111001    Y   01011001
     z      01111010    Z   01011010''')


word = input('please input a value to see its representation in Binary Code: ')

#splits the word into single letters and stores in a list aka newArray
def split(letters): 
    return [char for char in letters]

#takes the parameters of newArray and binaryTable.
#new array is the input word split into letters
def printBinary(dictArg, keysListArg): 
  for list_item in dictArg: 
    if list_item in keysListArg:
        #grabs the binary value linked to its key and stores in x
        x = keysListArg.get(list_item)
        #prints list item along side its binary key
        print(list_item + ' : ' + x)

#splits the word
newArray = split(word)
#prints each letter next to its binary code representation
printBinary(newArray, binaryTable)

sample output:

please input a value to see its representation in Binary Code: louis
l : 01101100
o : 01101111
u : 01110101
i : 01101001
s : 01110011
>>>