Как преобразовать строку в двоичный код, используя список и словарь - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь преобразовать строку в массив символов, затем перебрать каждый символ в массиве и сравнить с ключами словаря, а затем, если они совпадают, вывести значение ключа и перейти к следующему символу в массиве

Iсобрал несколько примеров и попытался решить это в моей голове.Я новичок в Python и вернулся к программированию в качестве хобби после долгого времени, чтобы попытаться научить моего 10-летнего сына.Он говорил о двоичном коде, и я сказал, что мы могли бы написать программу на python, которая могла бы, например, взять его имя в качестве входных данных и напечатать его имя в двоичном коде.

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

Если бы я должен был сказать, например, abcd, я бы хотел, чтобы вывод был новым словарем с символами в слове с их представителями двоичного ключа или просто для печати буквенных ключей в итерации цикла #nextк репрезентативному двоичному значению, например

 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']
>>> 

* Почему ключи не выходят в том же порядке?

1 Ответ

0 голосов
/ 23 марта 2019
#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)

пример вывода:

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