2016-05-01 2 views
0

Я пытаюсь создать двоично-десятичный преобразователь. Мне не разрешено использовать int() и/или bin() для преобразования между # системами.Двоичный десятичный конвертер

Я провел целых 12 часов, и я не думаю, что я где-нибудь, я полный новичок, любая помощь вообще будет замечательной. То, что я пытаюсь сделать, это ввод данных пользователем в виде строки, и обратное, так что я могу умножить его на^(длина строки) 2

index = 0 
total = 0 
binary_number = str(input("please input a number")) 
print("input test: ", binary_number) #test line 
size = len(binary_number) - 1 
print(size) #determine string length 
binary_number = binary_number[::-1] 
print("reversed: ", binary_number) #test line 


while index < size: 
    for a in range(len(binary_number)): 
     if binary_number[index] == '1': 
      total = binary_number * 2**[index] 
      index += 1 
     else: 
      total = total 
      index +=1 

ответ

0

Ваш код имеет некоторые глупые ошибки.

1. Для строки длины 'L' действительный диапазон индексов от 0 до (L-1).

В вашем цикле while вы указали «индекс < размер». Это было бы идеально, если бы не уменьшился размер на 1 с этой линией, размер = LEN (binary_number) - 1

2. Некорректное логики для преобразования в двоичную строку в десятичное число

Этот строка в цикле while "для диапазона (len (binary_number)):" совершенно неверно. Вам это не нужно.

3. Всякий раз, когда вы находите «1» в вашей двоичной строке, вы должны добавить 2 ** индекс к общей сумме того, что у вас есть. Но вместо этого вы назначаете «total» новому значению.

Новое значение, которое вы вычисляете, также неверно.

Вы вычислить его как -> binary_number * 2 ** [индекс]

Remember, binary_number является списком. [index] также является списком. Вы здесь совершенно беспорядочны. Вы хотите сделать индекс 1 * 2 **. Вы должны удалить квадратные скобки вокруг индекса. Вместо этого можно скопировать скобки(). Кроме того, вместо binary_number вы должны заменить его на-int (binary_number [index]). Или вам это не нужно.

Вот ваш код с минимальными изменениями и печати Оператор-

index = 0 
total = 0 
binary_number = str(input("please input a number")) 
print("input test: ", binary_number) #test line 
size = len(binary_number) - 1 
print(size) #determine string length 
binary_number = binary_number[::-1] 
print("reversed: ", binary_number) #test line 


while index <= size: 
     if binary_number[index] == '1': 
      total += (2**index) 
      index += 1 
     else: 
      total = total 
      index +=1 
print(total) 
+0

спасибо за поломки. Я знаю, что там какие-то глупые ошибки, это больше, потому что кодирование для меня невероятно новое, и мне нужно как-то учиться. Спасибо за ваш вклад, я ценю это. – Newerino6525

Смежные вопросы