Python - преобразование символов в цепочку битов - PullRequest
1 голос
/ 15 марта 2019

Это - для домашнего задания, но я вложил работу в свое решение и не уверен, где я получаю ошибку. Вот что я должен сделать:

  1. Добавьте 1 к числовому значению ASCII каждого символа.
  2. Преобразуйте его в битовую строку.
  3. Сдвиньте биты строки на одно место влево.

Вот код, который у меня есть:

message = input("Enter a message: ")
ordstore = 0

for ch in message:
    ordstore = ord(ch) + 1
    bstring = ""
    while ordstore > 0:
        remainder = ordstore % 2
        ordstore = ordstore // 2
        bstring = str(remainder) + bstring

#print(bstring)

if(len(bstring) > 0):
    move1 = bstring[0]
    new_string = bstring[1:]
    new_string += move1

print(new_string)

Моя проблема в том, что я перезаписываю значения, которые я храню в первом цикле for. Моя первоначальная мысль, чтобы исправить это было использовать:

ordstore = ord(ch) += 1

Однако это тоже не решает мою проблему.

Любая помощь или руководство очень ценится!

1 Ответ

0 голосов
/ 15 марта 2019

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

for ch in message:
    ordstore = ord(ch) + 1
    bstring = ""
    tempordstore = ordstore 
    while tempordstore > 0:
        remainder = tempordstore % 2
        tempordstore = tempordstore // 2
        bstring = str(remainder) + bstring

Но даже здесь ваш bstring заменяет каждый ch in message. Возможно, вытащить его наружу, чтобы вы продолжали добавлять к bstring?

bstring = ""
for ch in message:
    ordstore = ord(ch) + 1
    tempordstore = ordstore 
    while tempordstore > 0:
        remainder = tempordstore % 2
        tempordstore = tempordstore // 2
        bstring = str(remainder) + bstring

Таким образом, ваш bstring основан не только на последнем символе сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...