['banane', 7] code> # chaîne et taille de l'étape li>
- Sortie requise:
'utgtgt' code> # Chaque caractère de la chaîne a déplacé à l'envers à l'étape Taille de l'étape Li>
import ast
in_string = input()
lis = ast.literal_eval(in_string)
st = lis[0]
step = lis[1]
alphabets = 'abcdefghijklmnopqrstuvwxyz'
password = ''
for letter in st:
if letter in alphabets:
index_val = alphabets.index(letter) - (step)
password += alphabets[index_val]
print(password)
3 Réponses :
Le module de chaîne contient des méthodes pour Créer un dictionnaire de transformation a > et un Traduire la méthode pour faire exactement ce que vous voulez: sortie: p> Vous lui donnez la chaîne d'origine et une chaîne longue égale pour mapper des lettres et appliquer ce dictionnaire à l'aide de Les chaînes tranchées équivalent à: p> qui est ce que votre voir Compréhension de la notation de tranche Si vous n'avez jamais vu de tranchant en chaîne en utilisation. P> p> str.translate (Dictionnaire) code>. p>
pas code> est pour. p>
Vraiment soigné! La réponse donnée semble ne pas modifier que des caractères minuscules. Comment allumera-t-on aussi de déplacer des caractères majuscules aussi? (E.G. banane code> à
utgtgt code>, plutôt que
utntnt code>)
@saha je pensais que c'est clair - vous appliquez la même chose pour les lettres majuscules. Je les ai éditées aussi.
En traitant chaque caractère et en vérifiant son cardinal NO et la prise de calcul en conséquence vous aider à atteindre le résultat
def func(string, size): if size%26==0: size=26 else: size=size%26 new_str = '' for char in string: if char.isupper(): if ord(char)-size<ord('A'): new_str+=chr(ord(char)-size+26) else: new_str+=chr(ord(char)-size) elif char.islower(): if ord(char)-size<ord('a'): new_str+=chr(ord(char)-size+26) else: new_str+=chr(ord(char)-size) return new_str res =func('baNaNa', 7) print(res) # output utGtGt
Voici une solution simple qui utilise l'opérateur Il collecte essentiellement toutes les lettres d'un dictionnaire de recherche d'index inverse, de sorte que la recherche de positions de lettre est alors il passe par chaque lettre et calcule la valeur de décalage de l'index de la lettre par exemple. Pour la lettre puis une fois que vous avez cette valeur de décalage, convertissez-la en majuscules ou en minuscule en fonction du cas de l'original / em> lettre. p> à la fin nous venons de Je vais probablement aller avec @ Patrick Artner's solution pythonique. Je viens de montrer la mise en œuvre ci-dessus comme un exercice d'apprentissage :-). p> p> % code> modulo pour passer des lettres à l'envers.
O (1) code> au lieu d'utiliser
list.index () code>, qui est linéaire
o (n) code> recherches. p>
A code> avec une valeur de décalage de
7 code>, le calcul sera
(0 - 7)% 26 code>, qui donnera
19 code>, la position de
u code>. P>
str.join () code> la liste des résultats dans une chaîne. Ceci est plus efficace que faire
+ = code> pour rejoindre des chaînes. P>
J'ai "uttt" quand j'essaie
Que devriez-vous
'a' code> devenir? Ou n'importe quel
abcdef code>?
Puisque la banane devrait renvoyer ugtgt i gues
a code> deviendrait
t code>?
Est-ce que cela répond à votre question? Fonction César Cipher à Python