Y at-il « facile » moyen de convertir une chaîne de lettres à une valeur entière? Je connais une méthode qui fonctionnerait, mais ce serait très fastidieux. Oh et en Python, j'ai oublié de mentionner ça. Ce serait comme "ABC" = 123Conversion des valeurs de chaîne des valeurs entières
Répondre
prédéfinir un dictionnaire qui associe des lettres aux chiffres:
d = {'A': '1', 'B': '2', 'C': '3', 'D': '4',
'E': '5', 'F': '6', 'G': '7', 'H': '8',
'I': '9', 'J': '10', 'K': '11', 'L': '12',
'M': '13', 'N': '14', 'O': '15', 'P': '16',
'Q': '17', 'R': '18', 'S': '19', 'T': '20',
'U': '21', 'V': '22', 'W': '23', 'X': '24',
'Y': '25', 'Z': '26'}
Ensuite, vous pouvez convertir avec:
int(''.join(d[c] for c in 'ABC'))
print ([ord (c) - ord ('A') + 1 for c in 'ABC'])
N.B. La réponse de Rob est mieux ... (jusqu'à la 'i'; =))
, ce que je avais besoin – michael2103
Votre problème est underspecified. Il y a littéralement des fonctions infinies qui convertiront 'ABC'
-123
, dont celui-ci:
def letter2number(s):
return 123
Si vous voulez convertir les chaînes en enchaînant les chiffres décimaux de la lettre de crédits compensatoires dans l'alphabet, celui-ci pourrait fonctionner pour vous. Notez que vous ne pouvez pas aller autour de la valeur: 24
pourrait être X
ou il pourrait être BD
.
def letter2number(s):
return int(''.join('%d'%(ord(ch)-ord('A')+1) for ch in s))
assert letter2number('ABC') == 123
assert letter2number('XYZ') == 242526
ajouter donc 100 à chaque code (pour faire simple), puis coller ensemble. –
Mais «ABC» ne donnera pas «123», ce qui était une exigence. –
En effet. Il devrait donc être un code de longueur variable, peut-être avec le 0 comme indicateur d'extension. Mais je suppose que ce n'est pas ce que OP recherchait ... –
Que serait "XYZ" à traduire? –
Oui, c'est tout à fait une bonne question ... Merci –