Chaîne de remplacer ne semble pas y avoir de travail
J'ai d'abord essayé d'utiliser =
opérateur d'accorder de la valeur, mais il a renvoyé une erreur,
alors j'ai essayé d'utiliser string.replace()
:
encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
et
encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 2)
Mais c'est retourner à la valeur originale.
Aider à comment utiliser le remplacer API correctement pour donner le résultat correct
Aussi est-il un autre API qui peut être utilisé à la place de unichr()
.
La encrypted_str
est en train de l'utilisateur par encrypted_str = raw_input()
dec_str2
est la freq de la chaîne entrée par l'utilisateur.
La question à peine préoccupations de la variable
Je veux savoir si je suis en utilisant le replcae()
API incorrectement comme il me donne de sortie inchangée pour encrypted_str
Peut-on utiliser encrypted_str[j]
serait de retour d'un personnage à partir de la chaîne pour définir la sous-chaîne de la replace()
API.
J'ai utilisé encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 1)
max remplacer 1
au lieu de 2 (que j'ai juste besoin d'un remplacement).
De l'opération que j'ai besoin d'être fait sera dans C comme suit:
encrypted_str[j] = dec_str2[k] -32
.
Comme je suis nouveau sur python je suis en train d'essayer de trouver un substitut.
- comment vous pensez que nous pouvons vous aider sans savoir à propos de
encrypted_str
etdec_str2
et en fait ce qui est la logique derrière votre code ? - Je ne pense pas que cela importe beaucoup, Mais la logique est de déchiffrer Ceaser de Chiffrement à l'aide de déchiffré freq chaîne
- s'il vous plaît ajouter votre décrivent à la question , et vos données ou un peu d'eux !
Vous devez vous connecter pour publier un commentaire.
Chaînes de caractères en Python sont immuables. Cela signifie qu'un objet de type string n'aura jamais sa valeur a changé après qu'il a été créé. C'est pourquoi un élément d'assignation comme
some_str[4] = "x"
va lever une exception.Pour une raison similaire, aucune des méthodes fournies par le
str
classe peut muter la chaîne. Ainsi, lastr.replace
méthode ne fonctionne pas de la façon dont je pense que vous l'attendez. Plutôt que de modifier la chaîne en place, il retourne une nouvelle chaîne de la demande de remplacement.Essayer:
Si vous allez faire beaucoup de ces remplacements, il peut faire sens pour transformer votre chaîne dans une liste de personnages, de faire les modifications une par une, puis utiliser
str.join
à tour la liste de retour dans une chaîne de nouveau lorsque vous avez terminé.Python chaînes sont immuables. Cela signifie qu'une chaîne de caractères ne peut pas être modifié par un appel de méthode comme indiqué dans votre post. Vous devez utiliser une assignation afin d'utiliser la chaîne de retour à partir de votre appel de méthode.
Par exemple:
Maintenant
encrypted_str
contient la nouvelle valeur.