119 votes

Python: Comment puis-je incrémenter un caractère?

Je connais Python, venant de Java et de C. Comment incrémenter un caractère? En Java ou en C, les caractères et les entiers sont pratiquement interchangeables, et dans certaines boucles, il m'est très utile de pouvoir incrémenter des caractères et indexer des tableaux par des caractères.

Comment puis-je faire cela en Python? C’est déjà assez grave de ne pas avoir un traditionnel pour (;;) looper. Y at-il un moyen de réaliser ce que je veux réaliser sans avoir à repenser toute ma stratégie?

Toute aide appréciée.

201voto

Eli Bendersky Points 82298

En Python 2.x, il suffit d'utiliser l' ord et chr fonctions de:

>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>> 

Python 3.x fait ce plus organisé et intéressant, en raison de sa distinction claire entre les bytes et unicode. Par défaut, une "chaîne" est unicode, de sorte que les travaux ci-dessus (ord reçoit de l'Unicode des caractères et de l' chr produit).

Mais si vous êtes intéressés en octets (comme pour le traitement de certains flux de données binaires), les choses sont encore plus simples:

>>> bstr = b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'

16voto

S.Lott Points 207588

"assez mauvais de ne pas avoir un traditionnel pour (;;) looper" ?? Quoi?

Essayez-vous de faire

 import string
for c in string.lowercase:
    ...do something with c...
 

Ou peut-être utilisez-vous string.uppercase ou string.letters ?

Python n'a pas for(;;) car il existe souvent de meilleures façons de le faire. Il n’a pas non plus de maths de caractères car ce n’est pas nécessaire non plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X