2016-10-26 5 views
0

Je suis en train de créer un convertisseur virgule flottante en binaire32, qui est composé de huit bits pour l'exposant et vingt-quatre bits pour la mantisse. J'ai exponent = [] et mantissa = []. Si l'utilisateur entre 010000111111101101000000000000000 je veux les index un à huit de value à ajouter à exponent et indexe neuf à trente deux de value à ajouter sur mantissa. J'ai actuellement le code spaghetti suivant pour ce faire:Comment puis-je étendre/ajouter une liste avec plusieurs index d'une variable?

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) 

Ainsi, plutôt que chaque indice annexant, je me demandais individuellement s'il y a un moyen de les ajouter à la liste en une seule ligne. J'ai essayé les extend méthodes suivantes:

exponent.extend(value[1, 2, 3, 4, 5, 6, 7, 8]) et sans virgules trop

exponent.extend(value[1], value[2], value[3], value[4], value[5], value[6], value[7], value[8],) que je ne puis rendue compte extend prendre un argument.

exponent.extend(value[1-8]) qui semblent soustraire le un et huit. J'ai essayé exponent = {} qui est un ensemble je crois? Et puis essayé exponent.update suivi par les multiples index avec des virgules. Ce qui m'a alors dit qu'il ne supporte qu'un seul argument.

Autres suggestions sur la façon d'ajouter plusieurs index de value à une liste?

Répondre

3

Même code peut être écrit en utilisant la chaîne tranchage comme:

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

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

monsieur vous êtes trop rapide pour moi, je concède ma réponse et juste plutôt upvote – MooingRawr

+0

Merci beaucoup pour cela. Cependant, pour l'exposant j'ai fait 'value [1: 8]' car le premier chiffre est le bit de signe donc je ne voulais pas que cela soit dans l'exposant. Merci beaucoup pour votre aide! –

+1

@AugustWilliams: dans ce cas, vous devez faire '[1: 9]' pour prendre 8 bits car cela prend elemnets jusqu'à '9-1' i.e 8. vérifier edit –

1

Bien que votre question a été répondu avec une solution soignée que je voulais réellement répondre à votre question initiale. Vous pouvez ajouter une liste à une liste en utilisant l'un d'eux:

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] 

Notez que list.extend modifie en fait la liste tandis que l'addition elle-même ne fonctionne pas. Vous pouvez cependant faire a += b et obtenir le même résultat que a.extend(b).

Vous pouvez donc effectuer les opérations suivantes:

exponent.extend(value[1:9]) 

Si vous utilisez list.extend vous pouvez réellement utiliser toute itérables (comme tuple ou ensemble), mais lorsque vous utilisez a += b ou c = a + b En général, ils doivent tous deux être du même type .

+0

Je suis très heureux que vous ayez posté ceci, car cela m'a aidé plus tard dans mon programme. J'ai besoin d'ajouter une base à un point spécifique de la mantisse et je cherchais à le faire avec une liste.Tu m'as beaucoup aidé! Merci! –