Python Force python pour garder les zéros non significatifs des variables int
Ci-dessous est une section de code qui fait partie d'une fonctionnelle de cryptage et décryptage de programme.
while checkvar < maxvar: # is set to < as maxvar is 1 to high for the index of var
#output.append("%02d" % number)
i =ord(var[checkvar]) - 64 # Gets postional value of i
i = ("%02d" % i)
if (checkvar + 1) < maxvar:
j =ord(var[(checkvar + 1)]) - 64 # Gets postional value of i
j = ("%02d" % j)
i = str(i) + str(j) #'Adds' the string i and j to create a new i
li.append(int(i))
checkvar = checkvar + 2
print li
Comme vous pouvez le voir, les deux variables i et j sont d'abord traités comme chaîne de caractères à ajouter un 0 devant toute seule chiffres (string). Ces variables sont ensuite combinés pour faire un numéro à quatre chiffres (toujours comme une chaîne de caractères). Plus tard dans le programme, le nombre créés sont utilisés dans une fonction pow. COMME ints supprimer les zéros.
Ma question: Est-il possible de la force python à garder le zéro pour ints. J'ai et de continuer à rechercher en ligne.
MODIFIER
POUR aider les gens, j'ai inclus le encrpytion partie du programme. C'est là que réside le problème. Les variables créées dans le code ci-dessus sont passés à travers une fonction pow (). Comme cela ne peut pas gérer les chaînes-je convertir des variables à ints où le zéro est perdu.
#a = li[]
b=int(17)#pulic = e
c=int(2773)#=n
lenli=int(len(li))
enchecker = int(0)
#encrpted list
enlist = []
while enchecker < lenli:
en = pow(li[enchecker],b,c)#encrpyt the message can only handle int
enlist.append(int(en))
enchecker = enchecker + 1
print enlist
i = "%02d" %i
, qui est la bonne chose à faire ici... pourquoi n'est-ce pas le travail pour vous?Non, les valeurs entières ne sont pas stockées avec zéro. D'autre comment définiriez-vous combien de zéros non significatifs à prendre en considération? Vous devez la formater pour l'imprimer dans la forme d'une chaîne, que vous utilisez actuellement.
Quand Python contient un entier, sous les couvertures, il est juste un tas de zéros et des uns. Le nombre décimal que vous voyez comment est ce que des tas de bits est converti en lisible par l'homme de la représentation. Vous pouvez utiliser des chaînes de caractères fonctions de mise en forme (comme celui que vous utilisez) pour ajouter des zéros à cette représentation, mais vous ne pouvez pas stocker les zéros à gauche dans l'int lui-même. Il n'a tout simplement pas de bon sens.
Ce code ne fonctionne pas. le problème est variable int enlever le 0. À Rohit Jain. Si vous vous demandez combien de zéros je considère que c'est déjà fait (même si c'est un string). Si l'on parle de python définir les zéros alors je ne sais pas
OriginalL'auteur Dan1676 | 2012-11-21
Vous devez vous connecter pour publier un commentaire.
Le concept de zéros est un concept d'affichage, pas de numérique. Vous pouvez mettre un nombre infini de zéros sur un nombre sans changer sa valeur. Puisqu'il n'est pas un numérique, concept, il n'est pas stocké avec le nombre.
Vous devez décider comment le nombre de zéros que vous voulez, quand vous convertir le nombre en une chaîne de caractères. Vous pouvez garder ce nombre séparément si vous le souhaitez.
OriginalL'auteur Mark Ransom
Si les commentaires ci-dessus sont vrai en ce qui concerne 1, 01, et 001, sont tout de même comme un INT, il peut être très utile dans la modélisation temporelle, ou séquentielle de fabrication d'un film de maintenir les zéros non significatifs. Je le fais souvent pour assurer les clips sont dans le bon ordre. Le moyen facile de le faire est d'utiliser zfill. zfill assure la str version de le nombre est au moins le nombre de caractères que vous dites, et ce, en remplissant le côté gauche de la chaîne "nombre" avec des zéros.
Ce qui fait une "chaîne" et pas une de type "entier". "TYPE" est important dans le contexte. C'est une bonne approche si nous voulons que la nouvelle variable "type de chaîne", mais si nous avons besoin de type "entier", alors non.
meilleure réponse. Mais que faire si le nombre de zéros est variable, comme nous ne savons pas, mais nous voulons préserver d'entrée nombre de zéros
c'est la réponse correcte.
OriginalL'auteur user9297
Je commençais à jour des chaînes de caractères comme
hhmmss
à venir à travers la ligne de série de mon Arduino.supposons donc que j'ai eu
s = "122041"
; ce serait12:20:41
, cependant9am
serait090000
.La déclaration
print "%d" % (s)
provoque une erreur d'exécution parce que le 9 n'est pas un nombre octal et est par conséquent un caractère illégal.Pour résoudre ce problème:
Espère que ça aide
OriginalL'auteur julian lewis