Permutation circulaire d'une chaine de caractères
Résolu/Fermé
Taranis33
Messages postés
9
Date d'inscription
lundi 22 décembre 2014
Statut
Membre
Dernière intervention
31 décembre 2014
-
22 déc. 2014 à 11:46
mamiemando Messages postés 33304 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 octobre 2024 - 28 déc. 2014 à 20:48
mamiemando Messages postés 33304 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 octobre 2024 - 28 déc. 2014 à 20:48
A voir également:
- Permutation circulaire python
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- \R python ✓ - Forum Python
- Citizen code python - Guide
- Ce programme est écrit en python ✓ - Forum Python
- Python retour à la ligne dans le code - Forum Python
1 réponse
mamiemando
Messages postés
33304
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 octobre 2024
7 794
23 déc. 2014 à 14:07
23 déc. 2014 à 14:07
Pour commencer je t'invite à lire un cours de python, car c'est un exercice très simple.
https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python
En python ça s'écrit assez facilement : si tu as une chaîne s, alors s[i:j] correspond à la sous-chaîne allant du caractère i au caratère j. Tu peux concaténer deux chaînes avec l'opérateur +.
Maintenant réfléchis avec un papier et un crayon sur comment tu découperais la chaîne s et comment tu réassemblerais les morceaux pour obtenir le bon résultat.
Suppose dans mon exemple que tu veuilles décaler de d = 2 caractères à droite. Alors en gros tu vas obtenir "ef" suivi de "abcd" :
Maintenant regardons les valeurs significatives : 6 correspond à la longueur de la chaîne s (
Écrire ça sous forme de fonction devrait maintenant être une formalité.
Bonne chance
https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python
En python ça s'écrit assez facilement : si tu as une chaîne s, alors s[i:j] correspond à la sous-chaîne allant du caractère i au caratère j. Tu peux concaténer deux chaînes avec l'opérateur +.
(mando@velvet) (~) $ python
Python 2.7.8 (default, Oct 18 2014, 12:50:18)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "abcdef"
>>> s[0:3]
'abc'
Maintenant réfléchis avec un papier et un crayon sur comment tu découperais la chaîne s et comment tu réassemblerais les morceaux pour obtenir le bon résultat.
Suppose dans mon exemple que tu veuilles décaler de d = 2 caractères à droite. Alors en gros tu vas obtenir "ef" suivi de "abcd" :
>>> s[4:6] + s[0:4]
'efabcd'
Maintenant regardons les valeurs significatives : 6 correspond à la longueur de la chaîne s (
len(s)) et 4 correspond à 6 - 2 (ie
len(s) - d).
>>> d = 2
>>> s[(len(s)-d):len(s)] + s[0:(len(s)-d)]
'efabcd'
Écrire ça sous forme de fonction devrait maintenant être une formalité.
Bonne chance
24 déc. 2014 à 10:02
En tout cas merci beaucoup !
24 déc. 2014 à 15:14
Bonne chance, et bonnes fêtes
27 déc. 2014 à 11:28
En effet,si je l'applique pour une chaine s=abcde et un décalage x=2, Python affiche comme résultat 'deabc'. Or, il faut que le programme affiche comme résultat : 'cdeab'.
Voici les modifications que j'ai apporté :
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)] <=== Changement
print (s[:-1]) <=== Changement
Maintenant le programme fonctionne bien :
- ce n'est plus s[(len(s)-d):len(s)] + s[0:(len(s)-d)], mais : s[(len(s[:-1])-x):len(s)] + s[0:(len(s)-x)].
- on demande d'afficher print (s[:-1]) et non plus print(s).
En tout cas merci beaucoup de m'avoir donné la base pour arriver à coder ce programme !
28 déc. 2014 à 20:48
Bonne continuation et bonnes fêtes :)