2016-10-26 2 views
0

Я пытаюсь создать преобразование с плавающей запятой binary32 в десятичный преобразователь, который состоит из восьми бит для экспоненты и двадцать четыре бита для мантиссы. У меня есть exponent = [] и mantissa = []. Если пользователь вводит 010000111111101101000000000000000, я хочу индексировать от одного до восьми от value до exponent и индексировать от девяти до тридцати двух от value до mantissa. Я в настоящее время имею следующий спагетти код, чтобы сделать это:Как я могу расширить/добавить список с несколькими индексами из переменной?

print ("Welcome to August's floating point value to decimal converter!") 
value = input("Please enter 32 bit floating value to convert.") 
exponent = [] 
mantissa = [] 
exponent.append(value[1]) 
exponent.append(value[2]) 
exponent.append(value[3]) 
exponent.append(value[4]) 
exponent.append(value[5]) 
exponent.append(value[6]) 
exponent.append(value[7]) 
exponent.append(value[8]) 
print (exponent) 
mantissa.append(value[9]) 
mantissa.append(value[10]) 
mantissa.append(value[11]) 
mantissa.append(value[12]) 
mantissa.append(value[13]) 
mantissa.append(value[14]) 
mantissa.append(value[15]) 
mantissa.append(value[16]) 
mantissa.append(value[17]) 
mantissa.append(value[18]) 
mantissa.append(value[19]) 
mantissa.append(value[20]) 
mantissa.append(value[21]) 
mantissa.append(value[22]) 
mantissa.append(value[23]) 
mantissa.append(value[24]) 
mantissa.append(value[25]) 
mantissa.append(value[26]) 
mantissa.append(value[27]) 
mantissa.append(value[28]) 
mantissa.append(value[29]) 
mantissa.append(value[30]) 
mantissa.append(value[31]) 
mantissa.append(value[32]) 
print (mantissa) 

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

exponent.extend(value[1, 2, 3, 4, 5, 6, 7, 8]) и без запятых тоже

exponent.extend(value[1], value[2], value[3], value[4], value[5], value[6], value[7], value[8],) который я тогда понял, extend принимать только один аргумент.

exponent.extend(value[1-8]) которые, кажется, вычитали один и восемь.

Я пробовал exponent = {} который я считаю верным? А затем попробовал exponent.update, а затем несколько указателей с запятыми. Который тогда сказал мне, что поддерживает только один аргумент.

Любые другие предложения по добавлению нескольких индексов от value к списку?

ответ

3

же код может быть написано с использованием строки нарезкой, как:

value = input("Please enter 32 bit floating value to convert.") 

exponent, mentissa= value[1:9], value[9:] 
+2

сэр, вы слишком быстро для меня, я соглашаюсь на мой ответ и просто скорее повышу – MooingRawr

+0

Большое спасибо за это. Однако для экспоненты я сделал значение [1: 8] ', поскольку первая цифра является знаковым битом, поэтому я не хотел этого в экспоненте. Большое спасибо за Вашу помощь! –

+1

@AugustWilliams: в этом случае вы должны сделать '[1: 9]' для принятия 8 бит, поскольку он принимает элементы до '9-1' i.e 8. check edit –

1

Хотя ваш вопрос ответили аккуратным решением, которое я хотел на самом деле ответить на свой вопрос. Вы можете добавить список в список с помощью любого из них:

a = [1, 2, 3] 
b = [4, 5, 6] 
c = a + b # c is now [1, 2, 3, 4, 5, 6] 
a.extend(b) # a is now [1, 2, 3, 4, 5, 6] 

Обратите внимание, что list.extend фактически изменяет список, а сама добавка не делает. Однако вы можете сделать a += b и достичь того же результата, что и a.extend(b).

Таким образом, вы можете сделать следующее:

exponent.extend(value[1:9]) 

Если вы используете list.extend вы можете использовать любой итерацию (как кортеж или набор), но при использовании a += b или c = a + b они, как правило, оба должны быть того же типа ,

+0

Я очень рад, что вы разместили это, поскольку это помогло мне позже в моей программе. Мне нужно добавить основание в определенную точку в мантиссе, и я искал сделать это со списком.Ты мне очень помог! Благодаря! –

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