Indice d'un caractère dans une chaine

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 - 26 déc. 2014 à 11:49
Taranis33 Messages postés 9 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 31 décembre 2014 - 27 déc. 2014 à 12:40
Bonjour à tous,

Je souhaite faire un programme qui me permette d'écrire la fonction indice(c, chaine) qui retourne l'indice de c dans la chaîne ou ?1 si c est
absent, par exemple :

>>> indice('x', 'erxe')
2
>>> indice('y', 'erxe')
-1

Voici ce que j'ai fait :

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)
c #indice de c dans 'chaine' <=== Partie de programme manquante
print ("c est dans la chaine")
print(c)
else:
c= -1
print (c)
print ("c n\'est pas dans la chaine")

Il me manque la partie qui me permet de déterminer l'indice du caractère dans la chaine ( autrement dit la partie la plus importante), toutes mes idées ayant échouées jusqu'à présent. Donc si vous avez des suggestions pour déterminer cet indice ou même pour améliorer le programme, n'hésitez pas.

Merci !
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 déc. 2014 à 22:05
Bonjour,

Petite question comme ça, c'est un exercice à faire ? Car sinon, tu as la méthode index() qui existe déjà ;-).

Exemple :
c.index('x') -> 2
Cela simplifiera ta fonction.

Pour améliorer ton programme, je te conseille de passer plutôt par des classes. Et utilise plutôt input_raw() que input().

Note : la prochaine fois, n'oublie pas d'utiliser la balise "code python" lorsque tu posteras ton code. Exemple :
<code python>ici tu mets ton code</code>
0
Taranis33 Messages postés 9 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 31 décembre 2014
27 déc. 2014 à 10:21
Bonjour,

Oui en effet il s'agit d'un exercice. Donc le soucis c'est que je ne sais pas vraiment ce que j'ai le droit de mettre comme fonction dans mes programmes, et comme Python est nouveau pour moi je suis un peu perdu...

Passer par des classes, c'est à dire ?

Et quelle est la différence entre input_raw() et input() ? Et ce n'est pas input_raw() mais plutôt raw_input() ?


En tout cas quand j'essaye ces deux fonctions, le même message d'erreur apparaît dans la console Spyder : 'undefined name'.

Et la fonction index est très pratique, grâce à elle le programme marche ;)

Je vais y penser la prochaine fois.

Merci beaucoup pour l'aide !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 déc. 2014 à 11:40
Oui, c'est raw_input().
Effectivement, raw_input() s'appelle input() en Python 3. J'imagine donc que tu utilises cette version ;-). Dans ce cas, ne tiens pas compte de cette remarque.

Pour les classes, si cela ne te dit rien, c'est que tu ne l'as pas encore vu en cours. Autant attendre, ça viendra. Néanmoins, si tu trépignes d'impatience : https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/232721-apprehendez-les-classes

S'il s'agit d'un exercice, oublie index(), et oublie find() (à mon avis)...
Il faut tout refaire sans fonction, sinon il n'y a pas d'intérêt.
L'algorithme peut être le suivant :

def indice(lettre, chaine) :
     ind=...
     for i = range(len(chaine)):
          if chaine[...]==...:
               ind=...
               break
     return ...

ch=input('...')
ind=indice(...)
print(...)


Note : si tu connais la fonction enumerate(), tu peux l'utiliser à la place de range(len(...)) ça sera plus propre :-).

Cdlt,
0
Taranis33 Messages postés 9 Date d'inscription lundi 22 décembre 2014 Statut Membre Dernière intervention 31 décembre 2014
27 déc. 2014 à 12:40
Oui j'utilise la dernière version de Python :p

Merci pour le lien, ce site m'a déjà pas mal aidé pour faire d'autres questions.

Justement le soucis est que je ne connais que très peu de fonctions, mais j'essaye de me documenter au maximum.

Merci pour l'aide et les conseils, salutations.
0