Codage d'une chaine de caractère
Résolu
Taranis33
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Taranis33 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Taranis33 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais écrire la fonction codage_minuscules(chaine, x) qui retourne la phrase chaine chiffrée avec un décalage de x lettres, en supposant que « chaine » ne comporte que des caractères minuscules.
exemple :
chiffre_minuscules('bonjour', 3)
>>>'erqmrxu'
Pour ce faire, j'ai déjà codé deux autres programmes :
- la fonction permutation(chaine, x) qui retourne la chaîne après une permutation de x lettres vers la droite :
s=0
s= input("entrer une chaine à permuter :")
x=0
x=int(input("entrer un décalage x :"))
def permutation(s,x):
s= s[(len(s[:-1])-x):len(s)] + s[0:(len(s)-x)]
print (s[:-1])
- la fonction indice(c, chaine) qui retourne l'indice de c dans la chaîne ou ?1 si c est
absent:
chaine= 0
chaine= input("entrer une chaine de caractères:")
c= 0
c= input("entrer un caractère c:")
def indice(c,chaine):
if c in chaine:
chaine.find(c)
chaine.index(c)
print (chaine.index(c))
print ("c est dans la chaine:")
print(c)
else:
c= -1
print (c)
print ("c n\'est pas dans la chaine")
Il faudrait que je combine ces deux programmes pour y arriver. Voici ce que j'ai fait :
chaine=0
chaine= input("entrer une chaine :")
x=0
x= int(input("entrer un décalage :"))
c=0
c=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
def codage_minuscules(chaine,x):
#retourne la phrase chaine chiffrée avec un décalage de x lettres
while c in chaine:
chaine.find(c)
chaine= chaine.index(c)+x
else:
break
Le programme n'est pas complet et faux. En effet, je n'arrive pas à faire fonctionner la boucle while.
Dans l'absolu, je voudrais que chaque indice de "chaine" soit ajouté au décalage x, et ce pour tous les caractères contenus dans "chaine" (d'où la boucle while). Ensuite je voudrais faire intervenir le premier programme (celui qui retourne la chaîne après une permutation de x
lettres vers la droite) pour associer chaque indice à une lettre de l'alphabet mais je ne vois pas comment.
Si vous avez une idée quant à la manière de procéder, je suis preneur !
Merci beaucoup.
Note : Pardon pour la présentation du code, chaque indentation est suprimmée.
Je souhaiterais écrire la fonction codage_minuscules(chaine, x) qui retourne la phrase chaine chiffrée avec un décalage de x lettres, en supposant que « chaine » ne comporte que des caractères minuscules.
exemple :
chiffre_minuscules('bonjour', 3)
>>>'erqmrxu'
Pour ce faire, j'ai déjà codé deux autres programmes :
- la fonction permutation(chaine, x) qui retourne la chaîne après une permutation de x lettres vers la droite :
s=0
s= input("entrer une chaine à permuter :")
x=0
x=int(input("entrer un décalage x :"))
def permutation(s,x):
s= s[(len(s[:-1])-x):len(s)] + s[0:(len(s)-x)]
print (s[:-1])
- la fonction indice(c, chaine) qui retourne l'indice de c dans la chaîne ou ?1 si c est
absent:
chaine= 0
chaine= input("entrer une chaine de caractères:")
c= 0
c= input("entrer un caractère c:")
def indice(c,chaine):
if c in chaine:
chaine.find(c)
chaine.index(c)
print (chaine.index(c))
print ("c est dans la chaine:")
print(c)
else:
c= -1
print (c)
print ("c n\'est pas dans la chaine")
Il faudrait que je combine ces deux programmes pour y arriver. Voici ce que j'ai fait :
chaine=0
chaine= input("entrer une chaine :")
x=0
x= int(input("entrer un décalage :"))
c=0
c=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
def codage_minuscules(chaine,x):
#retourne la phrase chaine chiffrée avec un décalage de x lettres
while c in chaine:
chaine.find(c)
chaine= chaine.index(c)+x
else:
break
Le programme n'est pas complet et faux. En effet, je n'arrive pas à faire fonctionner la boucle while.
Dans l'absolu, je voudrais que chaque indice de "chaine" soit ajouté au décalage x, et ce pour tous les caractères contenus dans "chaine" (d'où la boucle while). Ensuite je voudrais faire intervenir le premier programme (celui qui retourne la chaîne après une permutation de x
lettres vers la droite) pour associer chaque indice à une lettre de l'alphabet mais je ne vois pas comment.
Si vous avez une idée quant à la manière de procéder, je suis preneur !
Merci beaucoup.
Note : Pardon pour la présentation du code, chaque indentation est suprimmée.
A voir également:
- Codage d'une chaine de caractère
- Codage ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractere vide - Guide
1 réponse
Bonjour,
S'il s'agit d'un exercice, je te déconseille d'utiliser index() et find() (cf. ton précédent sujet). Le but est de reconstruire ces fonctions...
Pour décaler les lettres de x, tu n'as pas besoin d'indice, ni de permutation. Il te suffit de parcourir chacun des éléments de la chaîne, de convertir la lettre en entier (avec ord(...)) de l'additionner avec x, et de reconvertir en lettre avec chr(...)). Il faudra faire attention aux dernières lettres. Pour cela, tu devras utiliser l'opération modulo (%). Je te laisse réfléchir sur son utilisation.
Note : Comme dit la dernière fois, n'oublie pas d'utiliser la balise "code python" lorsque tu posteras ton code. Exemple :
<code python>ici tu mets ton code</code>
Sinon c'est illisible...
Cdlt,
Google is your friend
S'il s'agit d'un exercice, je te déconseille d'utiliser index() et find() (cf. ton précédent sujet). Le but est de reconstruire ces fonctions...
Pour décaler les lettres de x, tu n'as pas besoin d'indice, ni de permutation. Il te suffit de parcourir chacun des éléments de la chaîne, de convertir la lettre en entier (avec ord(...)) de l'additionner avec x, et de reconvertir en lettre avec chr(...)). Il faudra faire attention aux dernières lettres. Pour cela, tu devras utiliser l'opération modulo (%). Je te laisse réfléchir sur son utilisation.
Note : Comme dit la dernière fois, n'oublie pas d'utiliser la balise "code python" lorsque tu posteras ton code. Exemple :
<code python>ici tu mets ton code</code>
Sinon c'est illisible...
Cdlt,
Google is your friend
Après presque 3h de recherches sur Python (c'est beaucoup pour si peu), j'ai enfin réussis à coder et voici ce que ca donne :
Pour autant, le programme marche pour toutes les lettres et je n'ai pas eu besoin d'utiliser le modulo...
Dans tous les cas, grâce à votre aide j'ai pu répondre à la question posée et j'ai vraiment progressé sur Python ! Merci beaucoup,
Cordialement.
Ben non, ça ne peut pas marcher... Imagine que tu veux un décalage de 5.
'A' te donnera 'F', mais 'Z' te donnera quoi à ton avis ? Ca te donnera '_'.
D'où la nécessité du modulo pour reboucler sur les premières lettres...
Mais je vais me débrouiller tout seul à partir de maintenant, j'ai déjà eu beaucoup d'aide et il est important d'essayer par soi-même. En tout cas merci d'avoir donné de votre temps pour répondre à mes question, cela m'a été fort utile !
Merci,
Salutations.